From bea81a676fa2c461a784f2818213901670fe4810 Mon Sep 17 00:00:00 2001 From: Miriam Ruiz Date: Sun, 7 Dec 2008 02:49:48 +0100 Subject: [PATCH 1/4] Imported vanilla contents from upstream Released originally on 29. Jul 2003 Homepage: http://www.nongnu.org/construo/ Downloaded from: http://savannah.nongnu.org/download/construo/construo-0.2.2.tar.gz --- AUTHORS | 17 + COPYING | 340 ++ ChangeLog | 934 +++++ INSTALL | 18 + INSTALL.configure | 229 ++ Makefile.am | 165 + Makefile.in | 1039 ++++++ NEWS | 107 + README | 25 + TODO | 83 + acinclude.m4 | 10 + aclocal.m4 | 863 +++++ bounding_box.cxx | 61 + bounding_box.hxx | 48 + buttons.hxx | 81 + collider.hxx | 56 + color.hxx | 52 + colors.cxx | 47 + colors.hxx | 58 + command_line.cxx | 147 + command_line.hxx | 38 + compatlib/sstream | 236 ++ config.cxx | 23 + config.h.in | 70 + config.hxx | 60 + configure | 7099 ++++++++++++++++++++++++++++++++++++ configure.ac | 161 + construo.cxx | 34 + construo.hxx | 42 + construo_error.hxx | 44 + construo_main.cxx | 185 + construo_main.hxx | 75 + controller.cxx | 223 ++ controller.hxx | 94 + cursor_collider.xbm | 30 + cursor_collider_mask.xbm | 30 + cursor_insert.xbm | 30 + cursor_insert_mask.xbm | 30 + cursor_scroll.xbm | 30 + cursor_scroll_mask.xbm | 30 + cursor_select.xbm | 30 + cursor_select_mask.xbm | 30 + cursor_zoom.xbm | 30 + cursor_zoom_mask.xbm | 30 + cursors.hxx | 36 + delta_manager.hxx | 55 + depcomp | 464 +++ events.hxx | 41 + examples/Makefile.am | 22 + examples/Makefile.in | 290 ++ examples/balance.construo | 196 + examples/ball.construo | 59 + examples/basketball.construo | 83 + examples/bigthing.construo | 790 ++++ examples/borg.construo | 487 +++ examples/bridg4.construo | 431 +++ examples/bridge.construo | 161 + examples/bridge2.construo | 1160 ++++++ examples/bridge3.construo | 556 +++ examples/bridge4.construo | 986 +++++ examples/bridge5.construo | 214 ++ examples/bridge6-1.construo | 876 +++++ examples/bridge6.construo | 1064 ++++++ examples/bridgio.construo | 416 +++ examples/bug.construo | 89 + examples/candle.construo | 134 + examples/capsule.construo | 142 + examples/choh/quicksave0.construo | 144 + examples/choh/quicksave1.construo | 249 ++ examples/choh/quicksave2.construo | 161 + examples/choh/quicksave3.construo | 458 +++ examples/choh/quicksave4.construo | 308 ++ examples/choh/quicksave5.construo | 130 + examples/choh/quicksave6.construo | 101 + examples/choh/quicksave7.construo | 150 + examples/choh/quicksave8.construo | 136 + examples/choh/quicksave9.construo | 176 + examples/choh2/quicksave1.construo | 505 +++ examples/choh2/quicksave2.construo | 310 ++ examples/choh2/quicksave3.construo | 288 ++ examples/choh2/quicksave4.construo | 350 ++ examples/choh2/quicksave5.construo | 269 ++ examples/choh2/quicksave6.construo | 390 ++ examples/choh2/quicksave7.construo | 236 ++ examples/choh2/quicksave8.construo | 238 ++ examples/choh2/quicksave9.construo | 406 +++ examples/colido.construo | 238 ++ examples/complex.construo | 724 ++++ examples/complexus.construo | 357 ++ examples/crashtest.construo | 104 + examples/dancing.construo | 243 ++ examples/dodge.construo | 366 ++ examples/explosion.construo | 114 + examples/galactica.construo | 118 + examples/hangon.construo | 158 + examples/house.construo | 1488 ++++++++ examples/jesus.construo | 277 ++ examples/jesus2.construo | 369 ++ examples/joe.construo | 535 +++ examples/kamikaze.construo | 193 + examples/krahn.construo | 195 + examples/kran2.construo | 294 ++ examples/kranfree.construo | 366 ++ examples/landingv2.construo | 797 ++++ examples/logo.construo | 223 ++ examples/monster.construo | 346 ++ examples/moonlander.construo | 230 ++ examples/mrwooble.construo | 87 + examples/needle.construo | 81 + examples/pendel45.construo | 443 +++ examples/pendulum.construo | 35 + examples/penguin.construo | 318 ++ examples/penguin2.construo | 318 ++ examples/pig.construo | 187 + examples/plane.construo | 168 + examples/planelanding.construo | 185 + examples/rocket.construo | 307 ++ examples/rocketlanding.construo | 310 ++ examples/rotatium.construo | 226 ++ examples/scorpion.construo | 261 ++ examples/shangon.construo | 158 + examples/simple.construo | 36 + examples/stabilo.construo | 242 ++ examples/stretch.construo | 162 + examples/temple.construo | 1109 ++++++ examples/test.construo | 22 + examples/tetherball.construo | 142 + examples/thingo.construo | 438 +++ examples/thingo2.construo | 347 ++ examples/tower.construo | 2430 ++++++++++++ examples/waaagggee45.construo | 166 + examples/wheels.construo | 178 + examples/wooble.construo | 1233 +++++++ examples/zeppelin.construo | 179 + examples/ziege.construo | 322 ++ force_emitter.hxx | 32 + globals.cxx | 24 + globals.hxx | 27 + glut_display.cxx | 675 ++++ glut_display.hxx | 114 + graphic_context.hxx | 112 + gui_buttons.cxx | 233 ++ gui_buttons.hxx | 137 + gui_child_manager.cxx | 291 ++ gui_child_manager.hxx | 75 + gui_component.cxx | 31 + gui_component.hxx | 91 + gui_directory.cxx | 158 + gui_directory.hxx | 62 + gui_directory_button.cxx | 60 + gui_directory_button.hxx | 40 + gui_file_button.cxx | 49 + gui_file_button.hxx | 49 + gui_file_manager.cxx | 182 + gui_file_manager.hxx | 69 + gui_label.cxx | 36 + gui_label.hxx | 40 + gui_manager.cxx | 364 ++ gui_manager.hxx | 77 + gui_new_file_button.cxx | 73 + gui_new_file_button.hxx | 41 + gui_window.cxx | 68 + gui_window.hxx | 46 + input_context.cxx | 37 + input_context.hxx | 59 + install-sh | 276 ++ keep_alive.hxx | 45 + keep_alive_mgr.cxx | 47 + keep_alive_mgr.hxx | 39 + keys.hxx | 30 + lisp_reader.cxx | 108 + lisp_reader.hxx | 45 + lisp_writer.cxx | 110 + lisp_writer.hxx | 53 + lispreader.cxx | 727 ++++ lispreader.hxx | 150 + load_gui_manager.cxx | 47 + load_gui_manager.hxx | 42 + math.hxx | 73 + missing | 336 ++ mkinstalldirs | 111 + particle.cxx | 175 + particle.hxx | 108 + particle_factory.cxx | 195 + particle_factory.hxx | 89 + path_manager.cxx | 105 + path_manager.hxx | 67 + rect.hxx | 70 + rect_collider.cxx | 163 + rect_collider.hxx | 56 + root_graphic_context.cxx | 49 + root_graphic_context.hxx | 61 + save_gui_manager.cxx | 47 + save_gui_manager.hxx | 40 + screen_manager.cxx | 81 + screen_manager.hxx | 55 + selection.cxx | 246 ++ selection.hxx | 96 + settings.cxx | 35 + settings.hxx | 64 + spring.cxx | 181 + spring.hxx | 68 + spring_type.hxx | 39 + string_utils.cxx | 59 + string_utils.hxx | 64 + system_context.hxx | 71 + unix_system.cxx | 305 ++ unix_system.hxx | 59 + vector.cxx | 208 ++ vector.hxx | 140 + vector2d.hxx | 115 + world.cxx | 678 ++++ world.hxx | 133 + world_button.cxx | 119 + world_button.hxx | 56 + world_gui_manager.cxx | 284 ++ world_gui_manager.hxx | 42 + worldview_collider_tool.cxx | 152 + worldview_collider_tool.hxx | 58 + worldview_component.cxx | 397 ++ worldview_component.hxx | 129 + worldview_insert_tool.cxx | 235 ++ worldview_insert_tool.hxx | 59 + worldview_select_tool.cxx | 423 +++ worldview_select_tool.hxx | 84 + worldview_tool.cxx | 24 + worldview_tool.hxx | 61 + worldview_zoom_tool.cxx | 92 + worldview_zoom_tool.hxx | 55 + x11_display.cxx | 957 +++++ x11_display.hxx | 168 + xml2sexpr.sh | 30 + zoom_graphic_context.cxx | 350 ++ zoom_graphic_context.hxx | 164 + 234 files changed, 58098 insertions(+) create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 INSTALL.configure create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 README create mode 100644 TODO create mode 100644 acinclude.m4 create mode 100644 aclocal.m4 create mode 100644 bounding_box.cxx create mode 100644 bounding_box.hxx create mode 100644 buttons.hxx create mode 100644 collider.hxx create mode 100644 color.hxx create mode 100644 colors.cxx create mode 100644 colors.hxx create mode 100644 command_line.cxx create mode 100644 command_line.hxx create mode 100644 compatlib/sstream create mode 100644 config.cxx create mode 100644 config.h.in create mode 100644 config.hxx create mode 100755 configure create mode 100644 configure.ac create mode 100644 construo.cxx create mode 100644 construo.hxx create mode 100644 construo_error.hxx create mode 100644 construo_main.cxx create mode 100644 construo_main.hxx create mode 100644 controller.cxx create mode 100644 controller.hxx create mode 100644 cursor_collider.xbm create mode 100644 cursor_collider_mask.xbm create mode 100644 cursor_insert.xbm create mode 100644 cursor_insert_mask.xbm create mode 100644 cursor_scroll.xbm create mode 100644 cursor_scroll_mask.xbm create mode 100644 cursor_select.xbm create mode 100644 cursor_select_mask.xbm create mode 100644 cursor_zoom.xbm create mode 100644 cursor_zoom_mask.xbm create mode 100644 cursors.hxx create mode 100644 delta_manager.hxx create mode 100755 depcomp create mode 100644 events.hxx create mode 100644 examples/Makefile.am create mode 100644 examples/Makefile.in create mode 100644 examples/balance.construo create mode 100644 examples/ball.construo create mode 100644 examples/basketball.construo create mode 100644 examples/bigthing.construo create mode 100644 examples/borg.construo create mode 100644 examples/bridg4.construo create mode 100644 examples/bridge.construo create mode 100644 examples/bridge2.construo create mode 100644 examples/bridge3.construo create mode 100644 examples/bridge4.construo create mode 100644 examples/bridge5.construo create mode 100644 examples/bridge6-1.construo create mode 100644 examples/bridge6.construo create mode 100644 examples/bridgio.construo create mode 100644 examples/bug.construo create mode 100644 examples/candle.construo create mode 100644 examples/capsule.construo create mode 100644 examples/choh/quicksave0.construo create mode 100644 examples/choh/quicksave1.construo create mode 100644 examples/choh/quicksave2.construo create mode 100644 examples/choh/quicksave3.construo create mode 100644 examples/choh/quicksave4.construo create mode 100644 examples/choh/quicksave5.construo create mode 100644 examples/choh/quicksave6.construo create mode 100644 examples/choh/quicksave7.construo create mode 100644 examples/choh/quicksave8.construo create mode 100644 examples/choh/quicksave9.construo create mode 100644 examples/choh2/quicksave1.construo create mode 100644 examples/choh2/quicksave2.construo create mode 100644 examples/choh2/quicksave3.construo create mode 100644 examples/choh2/quicksave4.construo create mode 100644 examples/choh2/quicksave5.construo create mode 100644 examples/choh2/quicksave6.construo create mode 100644 examples/choh2/quicksave7.construo create mode 100644 examples/choh2/quicksave8.construo create mode 100644 examples/choh2/quicksave9.construo create mode 100644 examples/colido.construo create mode 100644 examples/complex.construo create mode 100644 examples/complexus.construo create mode 100644 examples/crashtest.construo create mode 100644 examples/dancing.construo create mode 100644 examples/dodge.construo create mode 100644 examples/explosion.construo create mode 100644 examples/galactica.construo create mode 100644 examples/hangon.construo create mode 100644 examples/house.construo create mode 100644 examples/jesus.construo create mode 100644 examples/jesus2.construo create mode 100644 examples/joe.construo create mode 100644 examples/kamikaze.construo create mode 100644 examples/krahn.construo create mode 100644 examples/kran2.construo create mode 100644 examples/kranfree.construo create mode 100644 examples/landingv2.construo create mode 100644 examples/logo.construo create mode 100644 examples/monster.construo create mode 100644 examples/moonlander.construo create mode 100644 examples/mrwooble.construo create mode 100644 examples/needle.construo create mode 100644 examples/pendel45.construo create mode 100644 examples/pendulum.construo create mode 100644 examples/penguin.construo create mode 100644 examples/penguin2.construo create mode 100644 examples/pig.construo create mode 100644 examples/plane.construo create mode 100644 examples/planelanding.construo create mode 100644 examples/rocket.construo create mode 100644 examples/rocketlanding.construo create mode 100644 examples/rotatium.construo create mode 100644 examples/scorpion.construo create mode 100644 examples/shangon.construo create mode 100644 examples/simple.construo create mode 100644 examples/stabilo.construo create mode 100644 examples/stretch.construo create mode 100644 examples/temple.construo create mode 100644 examples/test.construo create mode 100644 examples/tetherball.construo create mode 100644 examples/thingo.construo create mode 100644 examples/thingo2.construo create mode 100644 examples/tower.construo create mode 100644 examples/waaagggee45.construo create mode 100644 examples/wheels.construo create mode 100644 examples/wooble.construo create mode 100644 examples/zeppelin.construo create mode 100644 examples/ziege.construo create mode 100644 force_emitter.hxx create mode 100644 globals.cxx create mode 100644 globals.hxx create mode 100644 glut_display.cxx create mode 100644 glut_display.hxx create mode 100644 graphic_context.hxx create mode 100644 gui_buttons.cxx create mode 100644 gui_buttons.hxx create mode 100644 gui_child_manager.cxx create mode 100644 gui_child_manager.hxx create mode 100644 gui_component.cxx create mode 100644 gui_component.hxx create mode 100644 gui_directory.cxx create mode 100644 gui_directory.hxx create mode 100644 gui_directory_button.cxx create mode 100644 gui_directory_button.hxx create mode 100644 gui_file_button.cxx create mode 100644 gui_file_button.hxx create mode 100644 gui_file_manager.cxx create mode 100644 gui_file_manager.hxx create mode 100644 gui_label.cxx create mode 100644 gui_label.hxx create mode 100644 gui_manager.cxx create mode 100644 gui_manager.hxx create mode 100644 gui_new_file_button.cxx create mode 100644 gui_new_file_button.hxx create mode 100644 gui_window.cxx create mode 100644 gui_window.hxx create mode 100644 input_context.cxx create mode 100644 input_context.hxx create mode 100755 install-sh create mode 100644 keep_alive.hxx create mode 100644 keep_alive_mgr.cxx create mode 100644 keep_alive_mgr.hxx create mode 100644 keys.hxx create mode 100644 lisp_reader.cxx create mode 100644 lisp_reader.hxx create mode 100644 lisp_writer.cxx create mode 100644 lisp_writer.hxx create mode 100644 lispreader.cxx create mode 100644 lispreader.hxx create mode 100644 load_gui_manager.cxx create mode 100644 load_gui_manager.hxx create mode 100644 math.hxx create mode 100755 missing create mode 100755 mkinstalldirs create mode 100644 particle.cxx create mode 100644 particle.hxx create mode 100644 particle_factory.cxx create mode 100644 particle_factory.hxx create mode 100644 path_manager.cxx create mode 100644 path_manager.hxx create mode 100644 rect.hxx create mode 100644 rect_collider.cxx create mode 100644 rect_collider.hxx create mode 100644 root_graphic_context.cxx create mode 100644 root_graphic_context.hxx create mode 100644 save_gui_manager.cxx create mode 100644 save_gui_manager.hxx create mode 100644 screen_manager.cxx create mode 100644 screen_manager.hxx create mode 100644 selection.cxx create mode 100644 selection.hxx create mode 100644 settings.cxx create mode 100644 settings.hxx create mode 100644 spring.cxx create mode 100644 spring.hxx create mode 100644 spring_type.hxx create mode 100644 string_utils.cxx create mode 100644 string_utils.hxx create mode 100644 system_context.hxx create mode 100644 unix_system.cxx create mode 100644 unix_system.hxx create mode 100644 vector.cxx create mode 100644 vector.hxx create mode 100644 vector2d.hxx create mode 100644 world.cxx create mode 100644 world.hxx create mode 100644 world_button.cxx create mode 100644 world_button.hxx create mode 100644 world_gui_manager.cxx create mode 100644 world_gui_manager.hxx create mode 100644 worldview_collider_tool.cxx create mode 100644 worldview_collider_tool.hxx create mode 100644 worldview_component.cxx create mode 100644 worldview_component.hxx create mode 100644 worldview_insert_tool.cxx create mode 100644 worldview_insert_tool.hxx create mode 100644 worldview_select_tool.cxx create mode 100644 worldview_select_tool.hxx create mode 100644 worldview_tool.cxx create mode 100644 worldview_tool.hxx create mode 100644 worldview_zoom_tool.cxx create mode 100644 worldview_zoom_tool.hxx create mode 100644 x11_display.cxx create mode 100644 x11_display.hxx create mode 100755 xml2sexpr.sh create mode 100644 zoom_graphic_context.cxx create mode 100644 zoom_graphic_context.hxx diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..e116085 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,17 @@ +Programmer/Maintairer: +---------------------- + Ingo Ruhnke + +Additional Constructions: +------------------------- + Mark Joakim Bekker Michelsen (House of Horror) + Tristan Lietz + Pasi Kallinen + +Special thanks to: +------------------ + Mark Probst for his lispreader library + Jeff Lander for his 'Collision Response: Bouncy, Trouncy, Fun' article + The ClanLib people for the library that was used in the first Construo version + +# EOF # diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..99e80b9 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,934 @@ +2003-07-29 17:10 grumbel + + * world_gui_manager.cxx: - added docu for scaling + +2003-07-29 01:10 grumbel + + * examples/dancing.construo: - new construoction + +2003-07-29 00:46 grumbel + + * INSTALL, NEWS, README, buttons.hxx, configure.ac, cursors.hxx, + glut_display.cxx, gui_component.hxx, gui_manager.cxx, + root_graphic_context.hxx, selection.cxx, selection.hxx, + system_context.hxx, vector2d.hxx, worldview_component.cxx, + worldview_component.hxx, worldview_select_tool.cxx, + worldview_select_tool.hxx, worldview_tool.hxx, x11_display.cxx: - + added scaling support + +2003-07-28 23:03 grumbel + + * glut_display.hxx, root_graphic_context.hxx, x11_display.cxx, + x11_display.hxx: - fixed libXxf86vm detection - renamed some + fullscreen switching functions + +2003-07-28 22:57 grumbel + + * Makefile.am, config.h.in, configure.ac, world.cxx, + x11_display.cxx, x11_display.hxx: - fixed libXxf86vm detection - + renamed some fullscreen switching functions + +2003-07-28 12:44 grumbel + + * examples/: tetherball.construo, bridge5.construo, + needle.construo: - more constructions + +2003-07-28 12:28 grumbel + + * ChangeLog, TODO: - updated changelog + +2003-07-28 12:24 grumbel + + * Makefile.am, config.h.in, configure.ac, construo_main.cxx, + gui_button.cxx, gui_button.hxx: - cleaned up the configure and + makefile a bit + +2003-07-28 11:23 grumbel + + * colors.hxx, particle_factory.cxx, worldview_insert_tool.cxx, + NEWS: - fixed the problem with new particles disappearing + immidiatly in run mode + +2003-07-28 10:57 grumbel + + * NEWS, colors.cxx, colors.hxx, worldview_component.cxx, + worldview_component.hxx: - added nicer ground drawing + +2003-07-27 20:47 grumbel + + * x11_display.cxx: [no log message] + +2003-07-27 20:46 grumbel + + * NEWS, color.hxx, configure.ac, controller.cxx, particle.hxx, + particle_factory.cxx, spring.cxx, world.cxx, world.hxx, + x11_display.cxx, x11_display.hxx: fixed broken color handling + +2003-07-26 19:06 grumbel + + * examples/pendulum.construo: one more construction + +2003-07-26 19:03 grumbel + + * glut_display.cxx: - added linewidth handling to the glut target + +2003-07-26 18:42 grumbel + + * AUTHORS: last update + +2003-07-26 18:39 grumbel + + * NEWS: release ready + +2003-07-26 18:38 grumbel + + * examples/: bridge2.construo, mrwooble.construo, simple.construo: + new construction + +2003-07-26 18:34 grumbel + + * gui_buttons.cxx, world_gui_manager.cxx: moved buttons a bit + +2003-07-26 18:15 grumbel + + * configure.ac, worldview_select_tool.cxx, + worldview_select_tool.hxx: - fixed grid movement + +2003-07-26 17:11 grumbel + + * worldview_insert_tool.cxx: - some doc fixes + +2003-07-26 16:55 grumbel + + * x11_display.cxx: - fixed garbage on startup bug in x11 + +2003-07-26 16:43 grumbel + + * NEWS, command_line.cxx, controller.cxx, glut_display.cxx, + settings.cxx, settings.hxx, world_gui_manager.cxx, + worldview_component.cxx, worldview_component.hxx, x11_display.cxx: + - added switch for thick lines - added automatic zoom in for newly + loaded models + +2003-07-26 16:32 grumbel + + * examples/: basketball.construo, bridg4.construo, + bridge4.construo, bridge6-1.construo, bridge6.construo, + galactica.construo, house.construo, kamikaze.construo, + temple.construo, wooble.construo: - some more models + +2003-07-26 14:14 grumbel + + * NEWS, glut_display.cxx, glut_display.hxx: - added runtime + fullscreen switiching for glut + +2003-07-26 13:18 grumbel + + * Makefile.am, bounding_box.cxx, bounding_box.hxx, collider.hxx, + configure.ac, construo_main.cxx, glut_display.cxx, + glut_display.hxx, rect_collider.cxx, rect_collider.hxx, world.cxx, + world.hxx, world_button.cxx, worldview_component.cxx: - fixed + bounding box handling a bit - added glut fullscreen + +2003-07-26 02:51 grumbel + + * NEWS, Makefile.am, acinclude.m4, cursors.hxx: - added support for + different cursors + +2003-07-26 02:50 grumbel + + * glut_display.cxx, glut_display.hxx, worldview_select_tool.cxx: - + added cursors to glut + +2003-07-26 02:39 grumbel + + * Makefile.am, construo.cxx, construo.hxx, cursor_collider.xbm, + cursor_collider_mask.xbm, cursor_insert.xbm, + cursor_insert_mask.xbm, cursor_scroll.xbm, cursor_scroll_mask.xbm, + cursor_select.xbm, cursor_select_mask.xbm, cursor_zoom.xbm, + cursor_zoom_mask.xbm, glut_display.hxx, gui_manager.cxx, + load_gui_manager.cxx, root_graphic_context.cxx, + root_graphic_context.hxx, save_gui_manager.cxx, + world_gui_manager.cxx, worldview_component.cxx, x11_display.cxx, + x11_display.hxx, zoom_graphic_context.cxx: - added support for + different cursors + +2003-07-26 02:01 grumbel + + * cursor.xcf: - added cursor + +2003-07-26 01:03 grumbel + + * buttons.hxx, construo_main.cxx, construo_main.hxx, + glut_display.cxx, gui_manager.cxx, worldview_component.cxx, + x11_display.cxx, x11_display.hxx: - added fullscreen switching at + runtime + +2003-07-25 21:14 grumbel + + * glut_display.cxx, worldview_component.cxx, x11_display.cxx: fixed + window resize for glut, added different cursor for xlib + +2003-07-25 17:57 grumbel + + * buttons.hxx, glut_display.cxx, gui_component.hxx, + gui_manager.cxx, selection.cxx, selection.hxx, vector2d.hxx, + world.hxx, worldview_component.cxx, worldview_component.hxx, + worldview_select_tool.cxx, worldview_select_tool.hxx, + worldview_tool.hxx, x11_display.cxx, NEWS: - added blender like + 'remove doubles', here called 'join doubles', keypress 'j' + +2003-07-25 15:16 grumbel + + * unix_system.cxx: - fixed missing assert + +2003-07-25 15:11 grumbel + + * particle_factory.cxx: - fixed missing + +2003-07-25 13:07 grumbel + + * Makefile.am, NEWS, autogen.sh, command_line.cxx, config.h.in, + configure.ac, construo.hxx, construo_main.cxx, + gui_new_file_button.cxx, gui_new_file_button.hxx, path_manager.cxx, + path_manager.hxx, save_gui_manager.cxx, save_gui_manager.hxx, + settings.hxx, unix_system.cxx, examples/Makefile.am: - fixed 'make + install' + +2003-07-25 11:52 grumbel + + * worldview_component.cxx: - disable grid on far zoom outs + +2003-07-25 11:39 grumbel + + * construo_main.cxx, construo_main.hxx, glut_display.cxx, + x11_display.cxx: - fixed missing exit handling in glut - fixed + window title + +2003-07-25 00:39 grumbel + + * controller.cxx, glut_display.cxx, gui_manager.cxx, selection.cxx, + worldview_component.cxx: - removed a few less usefull debug + messages + +2003-07-25 00:23 grumbel + + * spring_type.hxx, examples/bridge3.construo, + examples/candle.construo: more models + +2003-07-25 00:22 grumbel + + * config.h.in, configure.ac, gui_buttons.cxx, + world_gui_manager.cxx: - added grid button - added debug mode to + configure + +2003-07-24 23:43 grumbel + + * math.hxx: fixed rounding error + +2003-07-24 23:33 grumbel + + * colors.cxx, colors.hxx, glut_display.cxx, glut_display.hxx, + graphic_context.hxx, worldview_component.cxx, + worldview_component.hxx, worldview_insert_tool.cxx, + zoom_graphic_context.hxx: some optimizations, some fixes for the + grid + +2003-07-24 18:09 grumbel + + * NEWS: - added grid support + +2003-07-24 17:53 grumbel + + * buttons.hxx, glut_display.cxx, gui_component.hxx, + gui_manager.cxx, math.hxx, particle.hxx, settings.hxx, spring.hxx, + world_gui_manager.cxx, worldview_component.cxx, + worldview_component.hxx, worldview_insert_tool.cxx, + worldview_insert_tool.hxx, worldview_select_tool.cxx, + x11_display.cxx: - added grid support + +2003-07-24 14:22 grumbel + + * .cvsignore, NEWS, unix_system.cxx, unix_system.hxx: fixed bug in + filehandling + +2003-07-24 12:55 grumbel + + * .cvsignore, AUTHORS, Makefile.am, README, configure.ac, + doxygen.cfg, globals.cxx, globals.hxx, gui_new_file_button.cxx, + gui_new_file_button.hxx, save_gui_manager.cxx, + save_gui_manager.hxx: - missing files - incremented version to + 0.2.1 + +2003-07-24 12:14 grumbel + + * examples/: .cvsignore, landingv2.construo, pig.construo, + rocketlanding.construo, tower.construo: some more models + +2003-07-24 12:10 grumbel + + * INSTALL, NEWS, TODO, autogen.sh, color.hxx, colors.cxx, + config.h.in, configure.ac, glut_display.cxx, glut_display.hxx, + graphic_context.hxx, gui_file_manager.cxx, gui_manager.hxx, + lisp_writer.cxx, lisp_writer.hxx, particle.cxx, particle.hxx, + particle_factory.cxx, rect_collider.cxx, selection.cxx, spring.cxx, + spring.hxx, string_utils.cxx, string_utils.hxx, system_context.hxx, + unix_system.cxx, unix_system.hxx, vector2d.hxx, world.cxx, + world_gui_manager.cxx, worldview_zoom_tool.cxx, + worldview_zoom_tool.hxx, x11_display.cxx, x11_display.hxx, + zoom_graphic_context.cxx, zoom_graphic_context.hxx: - added support + for gziped files - added support to draw multiple lines at once - + added some docu - added right-click zoom out for zoomtool - fixed a + few missing includes + +2003-07-23 10:07 grumbel + + * examples/bridge2.construo: added Tristan Lietz's bridge + +2003-01-12 20:06 grumbel + + * ChangeLog, Makefile.am, NEWS, README, configure.ac, + glut_display.cxx, selection.cxx, unix_system.cxx, x11_display.cxx: + added missing keybindings + +2003-01-11 20:07 grumbel + + * Makefile.am, NEWS, configure.ac, construo_main.cxx, + controller.cxx, gui_child_manager.cxx, gui_directory.cxx, + gui_directory.hxx, gui_file_manager.cxx, gui_file_manager.hxx, + gui_manager.cxx, gui_manager.hxx, load_gui_manager.cxx, + screen_manager.cxx, screen_manager.hxx, spring.cxx, + system_context.hxx, unix_system.cxx, unix_system.hxx, world.cxx, + world_button.cxx, world_button.hxx, world_gui_manager.cxx, + worldview_select_tool.cxx, examples/castle.construo, + examples/dodge.construo, examples/pendel.construo, + examples/swing.construo, examples/broken/castle.construo, + examples/broken/pendel.construo, examples/broken/swing.construo, + examples/choh/quicksave1.construo, + examples/choh2/quicksave1.construo: - fixed save dialog a bit - + misc release preparations + +2003-01-11 17:11 grumbel + + * INSTALL, INSTALL.configure, Makefile.am, README, TODO, + buttons.hxx, command_line.cxx, construo_main.cxx, gui_buttons.cxx, + gui_file_manager.cxx, gui_file_manager.hxx, gui_manager.cxx, + unix_system.cxx, world_gui_manager.cxx, + worldview_collider_tool.cxx, worldview_collider_tool.hxx, + worldview_insert_tool.cxx, x11_display.cxx, xml2sexpr.sh: - misc + release preparations + +2003-01-11 02:35 grumbel + + * TODO, collider.hxx, controller.cxx, gui_manager.cxx, + gui_manager.hxx, rect_collider.cxx, rect_collider.hxx, world.cxx, + world_gui_manager.cxx, world_gui_manager.hxx, + worldview_collider_tool.cxx, examples/planelanding.construo: - some + more undo points added - fixed collider copying + +2003-01-10 21:44 grumbel + + * Makefile.am, NEWS, README, controller.cxx, controller.hxx, + gui_buttons.cxx, gui_buttons.hxx, gui_child_manager.hxx, + gui_directory.cxx, gui_window.cxx, gui_window.hxx, + load_gui_manager.cxx, load_gui_manager.hxx, particle.cxx, + unix_system.cxx, world.cxx, world.hxx, world_button.cxx, + world_gui_manager.cxx, worldview_component.cxx, + worldview_insert_tool.cxx, x11_display.cxx, examples/Makefile.am, + examples/bug.construo: interface cleanup, runtime-docu updates, + release preperations + +2003-01-09 23:53 grumbel + + * examples/choh2/: README, quicksave1.construo, + quicksave2.construo, quicksave3.construo, quicksave4.construo, + quicksave5.construo, quicksave6.construo, quicksave7.construo, + quicksave8.construo, quicksave9.construo: added choh2 + +2003-01-09 23:10 grumbel + + * configure.ac, controller.cxx, controller.hxx, glut_display.cxx, + glut_display.hxx, graphic_context.hxx, gui_buttons.cxx, + gui_manager.cxx, selection.cxx, worldview_component.cxx, + worldview_select_tool.cxx, x11_display.cxx, x11_display.hxx, + zoom_graphic_context.cxx, zoom_graphic_context.hxx: - fixed bug in + the zoom_to() function - added draw_string_centered - some more + keybindings for glut - non-working cliprects for glut - undo for + delete/rotate operations + +2003-01-09 18:44 grumbel + + * Makefile.am, config.h.in, configure.ac, system_context.hxx, + compatlib/sstream: - added sstream test to configure.ac + +2003-01-09 18:27 grumbel + + * gui_manager.cxx: added possibilty to remove and move colliders + +2003-01-09 18:18 grumbel + + * collider.hxx, gui_file_manager.cxx, rect_collider.cxx, + rect_collider.hxx, world.cxx, world.hxx, + worldview_collider_tool.cxx, worldview_collider_tool.hxx: - added + serialisation of colliders - added move and delete of colliders + +2003-01-09 00:30 grumbel + + * lispreader.cxx, unix_system.cxx: - changelog update + +2003-01-09 00:18 grumbel + + * ChangeLog: - changelog update + +2003-01-09 00:14 grumbel + + * Makefile.am, NEWS, collider.hxx, construo_error.hxx, + gui_child_manager.cxx, gui_child_manager.hxx, gui_directory.cxx, + gui_directory.hxx, gui_directory_button.cxx, gui_file_manager.cxx, + gui_file_manager.hxx, lisp_reader.hxx, lisp_writer.hxx, + lispreader.c, lispreader.cxx, lispreader.h, lispreader.hxx, + particle_factory.hxx, rect_collider.cxx, rect_collider.hxx, + unix_system.cxx, world.cxx: - made lispreader C++ so that it can + throw exceptions on error - fixed the filemanager a bit, loading + should now work 95% + +2003-01-08 03:29 grumbel + + * worldview_collider_tool.cxx, worldview_collider_tool.hxx: added + collider to the fileformat and to the toolbox + +2003-01-08 03:25 grumbel + + * Makefile.am, configure.ac, graphic_context.hxx, gui_buttons.cxx, + gui_directory.cxx, gui_directory.hxx, gui_directory_button.cxx, + gui_directory_button.hxx, gui_file_button.cxx, gui_file_button.hxx, + gui_file_manager.cxx, gui_file_manager.hxx, gui_manager.hxx, + lispreader.c, load_gui_manager.cxx, load_gui_manager.hxx, + rect_collider.cxx, rect_collider.hxx, screen_manager.cxx, + screen_manager.hxx, string_utils.cxx, world.cxx, world.hxx, + world_button.cxx, world_button.hxx, world_gui_manager.cxx, + world_gui_manager.hxx, worldview_component.cxx, + worldview_component.hxx, worldview_select_tool.cxx, + examples/bridgio.construo: added collider to the fileformat and to + the toolbox + +2003-01-08 00:18 grumbel + + * screen_manager.cxx, screen_manager.hxx, world_gui_manager.cxx, + world_gui_manager.hxx: some missing files + +2003-01-07 22:34 grumbel + + * gui_child_manager.cxx, gui_directory.cxx, selection.cxx, + selection.hxx, world_button.cxx, worldview_select_tool.cxx, + x11_display.cxx, zoom_graphic_context.cxx, + zoom_graphic_context.hxx: - fixed some more input bugs + +2003-01-07 22:01 grumbel + + * events.hxx, gui_buttons.cxx, gui_buttons.hxx, + gui_child_manager.cxx, gui_child_manager.hxx, gui_directory.cxx, + gui_directory.hxx, gui_file_manager.cxx, gui_manager.cxx, + input_context.cxx, load_gui_manager.cxx, load_gui_manager.hxx, + x11_display.cxx, x11_display.hxx: - removed a handfull of debug + messages + +2003-01-07 16:07 grumbel + + * Makefile.am, glut_display.cxx, gui_buttons.cxx, + gui_child_manager.cxx, gui_child_manager.hxx, gui_component.hxx, + gui_directory.cxx, gui_directory.hxx, gui_file_button.cxx, + gui_file_button.hxx, gui_file_manager.cxx, gui_file_manager.hxx, + gui_manager.cxx, gui_manager.hxx, world_button.cxx, + worldview_component.cxx, worldview_select_tool.cxx, + x11_display.cxx, zoom_graphic_context.cxx: some fixes for the + filemanager, already half working now + +2003-01-07 04:09 grumbel + + * examples/wheels.construo: another demo construction + +2003-01-07 04:08 grumbel + + * gui_directory.cxx, gui_directory.hxx: fixed directory layout a + bit + +2003-01-07 03:48 grumbel + + * ChangeLog, graphic_context.hxx, gui_directory.cxx, + gui_file_button.cxx, gui_file_button.hxx, gui_file_manager.cxx, + gui_manager.cxx, gui_manager.hxx, spring.cxx, world_button.cxx, + x11_display.cxx, x11_display.hxx, zoom_graphic_context.cxx, + zoom_graphic_context.hxx: - added clipping to the x11 target - + fixed the filemanager a bit + +2003-01-07 01:38 grumbel + + * Makefile.am, controller.cxx, graphic_context.hxx, gui_button.cxx, + gui_button.hxx, gui_directory.cxx, gui_directory.hxx, + gui_directory_button.cxx, gui_directory_button.hxx, + gui_file_button.cxx, gui_file_button.hxx, gui_file_manager.cxx, + gui_file_manager.hxx, gui_manager.cxx, gui_manager.hxx, + particle.cxx, spring.cxx, string_converter.hxx, string_utils.cxx, + string_utils.hxx, system_context.hxx, unix_system.cxx, + unix_system.hxx, world.cxx, world.hxx, world_button.cxx, + world_button.hxx, zoom_graphic_context.cxx, + zoom_graphic_context.hxx: added some framework code for the not-yet + working filemanager + +2003-01-06 20:23 grumbel + + * NEWS, configure.ac, glut_display.cxx, particle.cxx, + particle_factory.cxx, selection.cxx: fixed compiling under gcc\2.95 + +2003-01-06 01:54 grumbel + + * examples/: borg.construo, bridge.construo, dodge.construo, + joe.construo, rocket.construo: - a handfull of new construoctions + +2003-01-06 00:59 grumbel + + * buttons.hxx, glut_display.cxx, glut_display.hxx, + gui_component.hxx, gui_manager.cxx, particle.cxx, + worldview_component.cxx, worldview_component.hxx, + worldview_select_tool.cxx, worldview_select_tool.hxx, + worldview_tool.hxx, x11_display.cxx: - added damping - added + generic button events - added object flipping + +2003-01-05 21:51 grumbel + + * INSTALL, Makefile.am, autogen.sh, config.h.in, configure.ac, + glut_display.cxx, glut_display.hxx, gui_manager.cxx, particle.cxx, + particle.hxx, particle_factory.cxx, particle_factory.hxx, + selection.cxx, selection.hxx, world.cxx, world.hxx, + worldview_insert_tool.cxx, worldview_select_tool.cxx, + x11_display.cxx, x11_display.hxx: - added a handfull more checks to + the configure script - changed mass to be just mass, not 1.0f/mass + - added fullscreen support to glut (doesn't work) + +2003-01-05 16:29 grumbel + + * color.hxx, colors.cxx, colors.hxx, command_line.cxx, + command_line.hxx, construo_main.cxx, glut_display.cxx, + graphic_context.hxx, gui_buttons.cxx, gui_manager.cxx, + input_context.hxx, particle.cxx, rect_collider.cxx, settings.cxx, + settings.hxx, spring.cxx, world.cxx, worldview_component.cxx, + worldview_insert_tool.cxx, worldview_select_tool.cxx, + worldview_zoom_tool.cxx, zoom_graphic_context.hxx: added + alphablending and antialiasing for the glut target + +2003-01-04 21:12 grumbel + + * collider.hxx, command_line.cxx, command_line.hxx, + glut_display.cxx, glut_display.hxx, gui_component.cxx, + gui_label.cxx, gui_label.hxx, gui_window.cxx, math.hxx, rect.hxx, + rect_collider.cxx, rect_collider.hxx, selection.cxx, selection.hxx, + settings.cxx, settings.hxx, string_converter.hxx, vector2d.hxx, + worldview_insert_tool.cxx, worldview_insert_tool.hxx, + worldview_select_tool.cxx, worldview_select_tool.hxx, + worldview_tool.cxx, worldview_tool.hxx, worldview_zoom_tool.cxx, + worldview_zoom_tool.hxx: fixed copyright header a bit + +2003-01-04 21:07 grumbel + + * Makefile.am, buttons.hxx, graphic_context.hxx, gui_component.hxx, + gui_manager.cxx, gui_manager.hxx, particle.cxx, + particle_factory.cxx, particle_factory.hxx, rect.hxx, + selection.cxx, selection.hxx, spring.cxx, world.cxx, + worldview_component.cxx, worldview_component.hxx, + worldview_select_tool.cxx, worldview_select_tool.hxx, + worldview_tool.hxx, x11_display.cxx, zoom_graphic_context.cxx, + zoom_graphic_context.hxx: splitted of some of the selection code + +2003-01-03 05:27 grumbel + + * Makefile.am, NEWS, configure.ac, zoom_graphic_context.cxx: added + configure test for glut + +2003-01-03 05:04 grumbel + + * rect.hxx: little rectangle helper class + +2003-01-03 05:03 grumbel + + * Makefile.am, configure.ac, construo_main.cxx, glut_display.cxx, + glut_display.hxx, gui_manager.cxx, gui_manager.hxx, + input_context.hxx, worldview_select_tool.cxx, x11_display.cxx, + x11_display.hxx: - added frames counter (stdout) - added selection + rectangle - fixed x11 display - made glut and x11 compilable + +2003-01-03 03:28 grumbel + + * examples/: ball.construo, colido.construo, stabilo.construo, + swing.construo, zeppelin.construo: added some new constructions + +2003-01-03 03:27 grumbel + + * glut_display.cxx: added font support to the glut target + +2003-01-03 02:48 grumbel + + * Makefile.am, buttons.hxx, construo_main.cxx, glut_display.cxx, + glut_display.hxx, gui_manager.cxx, gui_manager.hxx, + x11_display.cxx, x11_display.hxx: added glut display target + +2003-01-03 00:18 grumbel + + * string_converter.hxx: missing file + +2003-01-02 21:49 grumbel + + * construo.cxx, construo.hxx, graphic_context.hxx, gui_label.cxx, + gui_label.hxx, gui_manager.cxx, math.hxx, particle.cxx, + particle.hxx, particle_factory.cxx, particle_factory.hxx, + spring.cxx, spring.hxx, world.cxx, world.hxx, + worldview_component.cxx, worldview_component.hxx, + worldview_insert_tool.cxx, worldview_insert_tool.hxx, + worldview_select_tool.cxx, worldview_select_tool.hxx, + worldview_tool.hxx, worldview_zoom_tool.cxx, + worldview_zoom_tool.hxx, x11_display.cxx, x11_display.hxx, + zoom_graphic_context.cxx, zoom_graphic_context.hxx: some int/float + cleanup + +2002-12-31 18:38 grumbel + + * gui_manager.cxx, particle.cxx, particle.hxx, + particle_factory.cxx, particle_factory.hxx, spring.cxx, + vector2d.hxx, world.cxx, worldview_component.cxx, + worldview_component.hxx, worldview_insert_tool.cxx, + worldview_insert_tool.hxx: fixed some formulas to let the mass take + effect + +2002-12-31 05:14 grumbel + + * Makefile.am, construo.cxx, gui_buttons.hxx, gui_component.hxx, + gui_label.cxx, gui_label.hxx, gui_manager.cxx, particle.cxx, + world.cxx, world.hxx, worldview_component.cxx, + worldview_component.hxx, x11_display.cxx, zoom_graphic_context.cxx: + some experimental stuff + +2002-12-30 02:24 grumbel + + * construo.cxx, construo.hxx, world.cxx: seperated some const + +2002-12-29 21:46 grumbel + + * collider.hxx, controller.cxx, controller.hxx, gui_manager.cxx, + gui_manager.hxx, rect_collider.cxx, rect_collider.hxx, world.cxx, + worldview_component.hxx, worldview_select_tool.cxx: added custom + Collider + +2002-12-29 20:03 grumbel + + * Makefile.am, NEWS, collider.hxx, command_line.cxx, particle.cxx, + rect_collider.cxx, rect_collider.hxx, vector2d.hxx, world.cxx, + world.hxx: added collider + +2002-12-29 19:41 grumbel + + * construo_main.cxx, controller.cxx, controller.hxx, + gui_buttons.cxx, gui_manager.cxx, gui_manager.hxx, + worldview_component.cxx, worldview_insert_tool.cxx, + worldview_insert_tool.hxx, worldview_select_tool.cxx, + worldview_select_tool.hxx, worldview_tool.hxx, + worldview_zoom_tool.cxx, worldview_zoom_tool.hxx: replaced some + global variables with singletons + +2002-12-29 19:18 grumbel + + * vector2d.hxx, worldview_select_tool.cxx, + worldview_select_tool.hxx: added rotation + +2002-12-29 18:35 grumbel + + * worldview_component.cxx, worldview_select_tool.cxx, + worldview_select_tool.hxx: zome minjor fixes + +2002-12-29 16:58 grumbel + + * Makefile.am, world.cxx, worldview_component.cxx, + worldview_component.hxx, worldview_zoom_tool.cxx, + worldview_zoom_tool.hxx, zoom_graphic_context.cxx, + zoom_graphic_context.hxx: added zoom tool + +2002-12-29 04:05 grumbel + + * Makefile.am, buttons.hxx, gui_component.hxx, gui_manager.cxx, + world.cxx, worldview_component.cxx, worldview_component.hxx, + worldview_insert_tool.cxx, worldview_insert_tool.hxx, + worldview_select_tool.cxx, worldview_select_tool.hxx, + worldview_tool.cxx, worldview_tool.hxx, x11_display.cxx: splited + insert and select stuff into seperate classes + +2002-12-28 05:34 grumbel + + * gui_manager.cxx, particle.cxx, spring.cxx, spring.hxx, world.cxx, + world.hxx, worldview_component.cxx, worldview_component.hxx, + math.hxx, colors.cxx, colors.hxx, gui_component.cxx, + gui_window.cxx, gui_window.hxx: added a select and move tool + +2002-12-28 04:04 grumbel + + * color.hxx, command_line.cxx, graphic_context.hxx, + gui_manager.cxx, settings.cxx, settings.hxx, world.cxx, world.hxx, + worldview_component.cxx, x11_display.cxx, x11_display.hxx, + zoom_graphic_context.cxx, zoom_graphic_context.hxx: added some + flip-region limiter stuff + +2002-12-28 03:08 grumbel + + * Makefile.am, gui_buttons.cxx, gui_manager.cxx, particle.cxx, + particle_factory.cxx, particle_factory.hxx, spring.cxx, world.cxx, + world.hxx: fixed pointer grabing a bit + +2002-12-28 01:19 grumbel + + * Makefile.am, gui_component.hxx, gui_manager.cxx, lisp_reader.cxx, + lisp_reader.hxx, lisp_writer.cxx, lisp_writer.hxx, particle.cxx, + particle.hxx, particle_factory.cxx, particle_factory.hxx, + spring.cxx, vector2d.hxx, world.cxx, world.hxx, + worldview_component.cxx, x11_display.cxx: added smaller vector + class + +2002-12-27 22:28 grumbel + + * Makefile.am, NEWS, command_line.cxx, command_line.hxx, + construo_main.cxx, settings.cxx, settings.hxx, x11_display.cxx, + x11_display.hxx: added a handfull of command line flags to toggle + fullscreen and Co. + +2002-12-27 20:23 grumbel + + * Makefile.am, TODO, construo_main.cxx, gui_buttons.cxx, + gui_buttons.hxx, gui_component.hxx, gui_manager.cxx, + worldview_component.cxx, worldview_component.hxx, x11_display.cxx, + x11_display.hxx: - added fullscreen support (currently default) + +2002-12-26 23:35 grumbel + + * Makefile.am, NEWS, gui_buttons.cxx, gui_buttons.hxx, + gui_manager.cxx: added more buttons + +2002-12-26 22:07 grumbel + + * world.cxx, worldview_component.cxx: added removal of springs + +2002-12-26 21:46 grumbel + + * AUTHORS, construo_main.cxx, controller.cxx, controller.hxx, + gui_buttons.cxx, gui_buttons.hxx, gui_component.hxx, + gui_manager.cxx, gui_manager.hxx, particle.cxx, particle.hxx, + particle_factory.cxx, spring.cxx, spring.hxx, world.cxx, world.hxx, + worldview_component.cxx, worldview_component.hxx, + zoom_graphic_context.cxx, zoom_graphic_context.hxx: - added code to + check for spring/cursor caption + +2002-12-26 18:54 grumbel + + * particle_factory.cxx, particle_factory.hxx, + zoom_graphic_context.cxx, zoom_graphic_context.hxx, + examples/jesus2.construo, examples/monster.construo, + examples/scorpion.construo, examples/stretch.construo: added + missing files + +2002-12-26 18:11 grumbel + + * Makefile.am, gui_buttons.cxx, gui_component.hxx, gui_manager.cxx, + gui_manager.hxx, particle.hxx, spring.cxx, spring.hxx, world.cxx, + worldview_component.cxx, worldview_component.hxx, x11_display.cxx: + added zoom, restructured input a bit + +2002-12-26 04:02 grumbel + + * Makefile.am, buttons.hxx, configure.ac, construo_main.cxx, + gui_buttons.cxx, gui_buttons.hxx, gui_component.hxx, + gui_manager.cxx, gui_manager.hxx, input_context.hxx, world.hxx, + worldview_component.cxx, worldview_component.hxx, x11_display.cxx, + x11_display.hxx: more GUI stuff + +2002-12-26 02:43 grumbel + + * AUTHORS, Makefile.am, TODO, construo.cxx, construo_main.cxx, + construo_main.hxx, controller.cxx, controller.hxx, + graphic_context.hxx, gui_component.hxx, gui_manager.cxx, + gui_manager.hxx, input_context.hxx, lisp_reader.cxx, + lisp_reader.hxx, system_context.hxx, unix_system.cxx, + unix_system.hxx, world.cxx, world.hxx, worldview_component.cxx, + worldview_component.hxx, x11_display.cxx, x11_display.hxx: + restructed the code a bit to allow a gui + +2002-11-24 22:12 grumbel + + * examples/choh/: README, quicksave0.construo, quicksave1.construo, + quicksave2.construo, quicksave3.construo, quicksave4.construo, + quicksave5.construo, quicksave6.construo, quicksave7.construo, + quicksave8.construo, quicksave9.construo: added Mark Michelsen's + House of Horror machines + +2002-11-24 20:49 grumbel + + * Makefile.am, TODO, buttons.hxx, construo.cxx, construo.hxx, + construo_error.hxx, construo_main.cxx, construo_main.hxx, + force_emitter.hxx, input_context.cxx, lisp_reader.cxx, + lisp_reader.hxx, lisp_writer.cxx, lisp_writer.hxx, lispifier.cxx, + lispifier.hxx, particle.cxx, particle.hxx, spring.cxx, spring.hxx, + stick.cxx, stick.hxx, world.cxx, world.hxx: - fixed + particle_counter bug - fixed a few ugly variable/class names - + removed a bit obsolete xml code + +2002-11-23 00:07 grumbel + + * TODO: more todo items + +2002-11-22 18:06 grumbel + + * construo_main.cxx, xml2sexpr.sh, examples/Makefile.am: added + converter script + +2002-11-22 17:51 grumbel + + * examples/: quicksave1.construo, quicksave2.construo, + quicksave3.construo, quicksave4.construo: release preperations + +2002-11-22 17:49 grumbel + + * AUTHORS, INSTALL, Makefile.am, NEWS, README, TODO, buttons.hxx, + configure.ac, construo_main.cxx, construo_main.hxx, particle.cxx, + stick.cxx, stick.hxx, system_context.hxx, unix_system.cxx, + unix_system.hxx, world.cxx, world.hxx, x11_display.cxx, + x11_display.hxx: - quick load/save cleaned up - slow-motion added + +2002-11-22 16:16 grumbel + + * examples/: capsule.construo, rotatium.construo: more examples + +2002-11-22 15:21 grumbel + + * examples/explosion.construo: another example + +2002-11-22 14:02 grumbel + + * examples/: balance.construo, bigthing.construo, bridgio.construo, + bug.construo, castle.construo, complex.construo, + complexus.construo, crashtest.construo, hangon.construo, + jesus.construo, krahn.construo, kran2.construo, kranfree.construo, + logo.construo, moonlander.construo, pendel.construo, + pendel45.construo, penguin.construo, penguin2.construo, + plane.construo, quicksave1.construo, quicksave2.construo, + quicksave3.construo, quicksave4.construo, shangon.construo, + test.construo, thingo.construo, thingo2.construo, + waaagggee45.construo, ziege.construo: - added a bunch of example + files + +2002-11-22 00:10 grumbel + + * buttons.hxx, configure.ac, construo_main.cxx, construo_main.hxx, + lisp_reader.cxx, particle.cxx, particle.hxx, stick.hxx, + x11_display.cxx: added redo, fixed nan-bug + +2002-11-21 18:42 grumbel + + * Makefile.am, NEWS, TODO, autogen.sh, buttons.hxx, config.cxx, + configure.ac, construo.cxx, construo.hxx, construo_error.hxx, + construo_main.cxx, construo_main.hxx, lisp_reader.cxx, + lisp_reader.hxx, lispifier.cxx, lispifier.hxx, lispreader.c, + lispreader.h, particle.cxx, particle.hxx, stick.cxx, stick.hxx, + world.cxx, world.hxx, x11_display.cxx: - implemented load/save, not + hooked up in the interface, but works + +2002-11-21 00:29 grumbel + + * NEWS, buttons.hxx, color.hxx, construo_main.cxx, + construo_main.hxx, graphic_context.hxx, particle.hxx, world.cxx, + world.hxx, x11_display.cxx, x11_display.hxx: - docu fixes, lots of + small cleanup - beside load/save it looks quite useable + +2002-11-20 19:08 grumbel + + * Makefile.am, buttons.hxx, color.hxx, construo.cxx, construo.hxx, + construo_main.cxx, construo_main.hxx, events.hxx, + force_emitter.hxx, graphic_context.hxx, input_context.cxx, + input_context.hxx, keep_alive.hxx, keep_alive_mgr.cxx, + keep_alive_mgr.hxx, keys.hxx, particle.hxx, world.cxx, world.hxx, + x11_display.cxx, x11_display.hxx: - added input handling - + connection of particles is up and running again + +2002-11-20 14:53 grumbel + + * Makefile.am, configure.ac, construo_main.cxx, events.hxx, + graphic_context.hxx, input_context.hxx, keys.hxx, x11_display.cxx, + x11_display.hxx: - fixed make dist - added some test drawing stuff + +2002-11-20 13:59 grumbel + + * Makefile.am, construo_main.cxx, construo_main.hxx, + input_context.hxx, keep_alive.hxx, keep_alive_mgr.cxx, + keep_alive_mgr.hxx, particle.hxx, system_context.hxx, + unix_system.cxx, unix_system.hxx, x11_display.cxx, x11_display.hxx: + - main loop is now up&running - most parts of input handling are + still missing, so its still unusable + +2002-11-20 12:39 grumbel + + * Makefile.am, color.hxx, configure.ac, construo_main.cxx, + graphic_context.hxx, input_context.hxx, x11_display.cxx, + x11_display.hxx, unix_system.cxx, unix_system.hxx: - fixed + configure script - added unix context + +2002-11-20 01:53 grumbel + + * .cvsignore: added ignore file + +2002-11-20 01:50 grumbel + + * Config.cxx, Config.hxx, DeltaManager.hxx, TODO: - removed + obsolete files - added TODO + +2002-11-20 01:46 grumbel + + * autogen.sh, color.hxx, config.hxx, construo.hxx, + construo_error.hxx, construo_main.hxx, delta_manager.hxx, + graphic_context.hxx, input_context.hxx, particle.hxx, stick.hxx, + system_context.hxx, vector.hxx, x11_display.hxx: - added + automake/autoconf support - removed clanlib and libxml dependencies + - added some code for the x11 target - lots of placeholders at the + moment, it will compile but not work + +2002-11-20 01:37 grumbel + + * config.h.in: - added automake/autoconf support - removed clanlib + and libxml dependencies - added some code for the x11 target - lots + of placeholders at the moment, it will compile but not work + +2002-11-20 01:33 grumbel + + * AUTHORS, Construo.cxx, Construo.hxx, Makefile, Makefile.am, NEWS, + config.cxx, configure.ac, construo_main.cxx, vector.cxx, + x11_display.cxx: - added automake/autoconf support - removed + clanlib and libxml dependencies - added some code for the x11 + target - lots of placeholders at the moment, it will compile but + not work + +2002-03-21 20:07 grumbel + + * Construo.cxx, Construo.hxx: Some updates to make it compilable + with the newest ClanLib along with -Wall clean fix + +2001-11-23 11:16 grumbel + + * Makefile: Small fix in the makefile to let it compile with g++3.0 + +2001-11-16 11:45 grumbel + + * Makefile: Added Makefile + +2001-11-16 11:38 grumbel + + * COPYING, Config.cxx, Config.hxx, Construo.cxx, Construo.hxx, + DeltaManager.hxx, INSTALL, README, fonts.dir: Initial revision + +2001-11-16 11:38 grumbel + + * COPYING, Config.cxx, Config.hxx, Construo.cxx, Construo.hxx, + DeltaManager.hxx, INSTALL, README, fonts.dir: Initial checkin + diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..ab1afaf --- /dev/null +++ b/INSTALL @@ -0,0 +1,18 @@ +Installing Construo +=================== + +To compile Construo you should only need to do: + + % ./configure + % make + +The configure script should automatically detect which libraries will +be available and build the correct binaries. The OpenGL version of +construo is callect 'construo.glut' and the Xlib version is called +'construo.x11', simply run the target which you like better. You can +run Construo directory from its source directory, so there is no need +to install it, but if you want to do so, you can do it by: + + % make install + +# EOF # \ No newline at end of file diff --git a/INSTALL.configure b/INSTALL.configure new file mode 100644 index 0000000..a4b3414 --- /dev/null +++ b/INSTALL.configure @@ -0,0 +1,229 @@ +Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..b26477d --- /dev/null +++ b/Makefile.am @@ -0,0 +1,165 @@ +## Construo - A wire-frame construction game +## Copyright (C) 2002 Ingo Ruhnke +## +## This program is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License +## as published by the Free Software Foundation; either version 2 +## of the License, or (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +SUBDIRS = examples + +bindir=$(prefix)/games + +bin_PROGRAMS = @ConstruoTargets@ + +EXTRA_PROGRAMS = construo.x11 construo.glut construo.freeglut + +noinst_LIBRARIES = libconstruo.a + +libconstruo_a_SOURCES = \ +bounding_box.cxx \ +bounding_box.hxx \ +buttons.hxx \ +collider.hxx \ +color.hxx \ +colors.cxx \ +colors.hxx \ +command_line.cxx \ +command_line.hxx \ +config.cxx \ +config.hxx \ +construo.cxx \ +construo.hxx \ +construo_error.hxx \ +controller.cxx \ +controller.hxx \ +cursor_collider.xbm \ +cursor_collider_mask.xbm \ +cursor_insert.xbm \ +cursor_insert_mask.xbm \ +cursor_scroll.xbm \ +cursor_scroll_mask.xbm \ +cursor_select.xbm \ +cursor_select_mask.xbm \ +cursor_zoom.xbm \ +cursor_zoom_mask.xbm \ +cursors.hxx \ +delta_manager.hxx \ +events.hxx \ +force_emitter.hxx \ +globals.cxx \ +globals.hxx \ +graphic_context.hxx \ +gui_buttons.cxx \ +gui_buttons.hxx \ +gui_child_manager.cxx \ +gui_child_manager.hxx \ +gui_component.cxx \ +gui_component.hxx \ +gui_directory.cxx \ +gui_directory.hxx \ +gui_directory_button.cxx \ +gui_directory_button.hxx \ +gui_file_button.cxx \ +gui_file_button.hxx \ +gui_file_manager.cxx \ +gui_file_manager.hxx \ +gui_label.cxx \ +gui_label.hxx \ +gui_manager.cxx \ +gui_manager.hxx \ +gui_new_file_button.cxx \ +gui_new_file_button.hxx \ +gui_window.cxx \ +gui_window.hxx \ +input_context.cxx \ +input_context.hxx \ +keep_alive.hxx \ +keep_alive_mgr.cxx \ +keep_alive_mgr.hxx \ +keys.hxx \ +lisp_reader.cxx \ +lisp_reader.hxx \ +lisp_writer.cxx \ +lisp_writer.hxx \ +lispreader.cxx \ +lispreader.hxx \ +load_gui_manager.cxx \ +load_gui_manager.hxx \ +math.hxx \ +particle.cxx \ +particle.hxx \ +particle_factory.cxx \ +particle_factory.hxx \ +path_manager.cxx \ +path_manager.hxx \ +rect.hxx \ +rect_collider.cxx \ +rect_collider.hxx \ +root_graphic_context.cxx \ +root_graphic_context.hxx \ +save_gui_manager.cxx \ +save_gui_manager.hxx \ +screen_manager.cxx \ +screen_manager.hxx \ +selection.cxx \ +selection.hxx \ +settings.cxx \ +settings.hxx \ +spring.cxx \ +spring.hxx \ +spring_type.hxx \ +string_utils.cxx \ +string_utils.hxx \ +system_context.hxx \ +unix_system.cxx \ +unix_system.hxx \ +vector.cxx \ +vector.hxx \ +vector2d.hxx \ +world.cxx \ +world.hxx \ +world_button.cxx \ +world_button.hxx \ +world_gui_manager.cxx \ +world_gui_manager.hxx \ +worldview_collider_tool.cxx \ +worldview_collider_tool.hxx \ +worldview_component.cxx \ +worldview_component.hxx \ +worldview_insert_tool.cxx \ +worldview_insert_tool.hxx \ +worldview_select_tool.cxx \ +worldview_select_tool.hxx \ +worldview_tool.cxx \ +worldview_tool.hxx \ +worldview_zoom_tool.cxx \ +worldview_zoom_tool.hxx \ +zoom_graphic_context.cxx \ +zoom_graphic_context.hxx + +construo_x11_SOURCES = construo_main.cxx construo_main.hxx x11_display.hxx x11_display.cxx +construo_x11_LDADD = libconstruo.a @x11_LIBS@ +construo_x11_CXXFLAGS = -DUSE_X11_DISPLAY @x11_CXXFLAGS@ + +construo_glut_SOURCES = construo_main.cxx construo_main.hxx glut_display.hxx glut_display.cxx +construo_glut_LDADD = libconstruo.a @glut_LIBS@ +construo_glut_CXXFLAGS = -DUSE_GLUT_DISPLAY -DHAVE_GLUT + +construo_freeglut_SOURCES = construo_main.cxx construo_main.hxx glut_display.hxx glut_display.cxx +construo_freeglut_LDADD = libconstruo.a @freeglut_LIBS@ +construo_freeglut_CXXFLAGS = -DUSE_GLUT_DISPLAY -DHAVE_FREEGLUT + +# pkgdatadir = $(datadir)/games/@PACKAGE@ +EXTRA_DIST = TODO INSTALL.configure xml2sexpr.sh compatlib/sstream + +# EOF # \ No newline at end of file diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..578f781 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,1039 @@ +# Makefile.in generated by automake 1.7.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +ConstruoTargets = @ConstruoTargets@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ + +bindir = $(prefix)/games +build_alias = @build_alias@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +freeglut_LIBS = @freeglut_LIBS@ +glut_LIBS = @glut_LIBS@ +host_alias = @host_alias@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +x11_CXXFLAGS = @x11_CXXFLAGS@ +x11_LIBS = @x11_LIBS@ + +SUBDIRS = examples + +bin_PROGRAMS = @ConstruoTargets@ + +EXTRA_PROGRAMS = construo.x11 construo.glut construo.freeglut + +noinst_LIBRARIES = libconstruo.a + +libconstruo_a_SOURCES = \ +bounding_box.cxx \ +bounding_box.hxx \ +buttons.hxx \ +collider.hxx \ +color.hxx \ +colors.cxx \ +colors.hxx \ +command_line.cxx \ +command_line.hxx \ +config.cxx \ +config.hxx \ +construo.cxx \ +construo.hxx \ +construo_error.hxx \ +controller.cxx \ +controller.hxx \ +cursor_collider.xbm \ +cursor_collider_mask.xbm \ +cursor_insert.xbm \ +cursor_insert_mask.xbm \ +cursor_scroll.xbm \ +cursor_scroll_mask.xbm \ +cursor_select.xbm \ +cursor_select_mask.xbm \ +cursor_zoom.xbm \ +cursor_zoom_mask.xbm \ +cursors.hxx \ +delta_manager.hxx \ +events.hxx \ +force_emitter.hxx \ +globals.cxx \ +globals.hxx \ +graphic_context.hxx \ +gui_buttons.cxx \ +gui_buttons.hxx \ +gui_child_manager.cxx \ +gui_child_manager.hxx \ +gui_component.cxx \ +gui_component.hxx \ +gui_directory.cxx \ +gui_directory.hxx \ +gui_directory_button.cxx \ +gui_directory_button.hxx \ +gui_file_button.cxx \ +gui_file_button.hxx \ +gui_file_manager.cxx \ +gui_file_manager.hxx \ +gui_label.cxx \ +gui_label.hxx \ +gui_manager.cxx \ +gui_manager.hxx \ +gui_new_file_button.cxx \ +gui_new_file_button.hxx \ +gui_window.cxx \ +gui_window.hxx \ +input_context.cxx \ +input_context.hxx \ +keep_alive.hxx \ +keep_alive_mgr.cxx \ +keep_alive_mgr.hxx \ +keys.hxx \ +lisp_reader.cxx \ +lisp_reader.hxx \ +lisp_writer.cxx \ +lisp_writer.hxx \ +lispreader.cxx \ +lispreader.hxx \ +load_gui_manager.cxx \ +load_gui_manager.hxx \ +math.hxx \ +particle.cxx \ +particle.hxx \ +particle_factory.cxx \ +particle_factory.hxx \ +path_manager.cxx \ +path_manager.hxx \ +rect.hxx \ +rect_collider.cxx \ +rect_collider.hxx \ +root_graphic_context.cxx \ +root_graphic_context.hxx \ +save_gui_manager.cxx \ +save_gui_manager.hxx \ +screen_manager.cxx \ +screen_manager.hxx \ +selection.cxx \ +selection.hxx \ +settings.cxx \ +settings.hxx \ +spring.cxx \ +spring.hxx \ +spring_type.hxx \ +string_utils.cxx \ +string_utils.hxx \ +system_context.hxx \ +unix_system.cxx \ +unix_system.hxx \ +vector.cxx \ +vector.hxx \ +vector2d.hxx \ +world.cxx \ +world.hxx \ +world_button.cxx \ +world_button.hxx \ +world_gui_manager.cxx \ +world_gui_manager.hxx \ +worldview_collider_tool.cxx \ +worldview_collider_tool.hxx \ +worldview_component.cxx \ +worldview_component.hxx \ +worldview_insert_tool.cxx \ +worldview_insert_tool.hxx \ +worldview_select_tool.cxx \ +worldview_select_tool.hxx \ +worldview_tool.cxx \ +worldview_tool.hxx \ +worldview_zoom_tool.cxx \ +worldview_zoom_tool.hxx \ +zoom_graphic_context.cxx \ +zoom_graphic_context.hxx + + +construo_x11_SOURCES = construo_main.cxx construo_main.hxx x11_display.hxx x11_display.cxx +construo_x11_LDADD = libconstruo.a @x11_LIBS@ +construo_x11_CXXFLAGS = -DUSE_X11_DISPLAY @x11_CXXFLAGS@ + +construo_glut_SOURCES = construo_main.cxx construo_main.hxx glut_display.hxx glut_display.cxx +construo_glut_LDADD = libconstruo.a @glut_LIBS@ +construo_glut_CXXFLAGS = -DUSE_GLUT_DISPLAY -DHAVE_GLUT + +construo_freeglut_SOURCES = construo_main.cxx construo_main.hxx glut_display.hxx glut_display.cxx +construo_freeglut_LDADD = libconstruo.a @freeglut_LIBS@ +construo_freeglut_CXXFLAGS = -DUSE_GLUT_DISPLAY -DHAVE_FREEGLUT + +# pkgdatadir = $(datadir)/games/@PACKAGE@ +EXTRA_DIST = TODO INSTALL.configure xml2sexpr.sh compatlib/sstream +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) + +libconstruo_a_AR = $(AR) cru +libconstruo_a_LIBADD = +am_libconstruo_a_OBJECTS = bounding_box.$(OBJEXT) colors.$(OBJEXT) \ + command_line.$(OBJEXT) config.$(OBJEXT) construo.$(OBJEXT) \ + controller.$(OBJEXT) globals.$(OBJEXT) gui_buttons.$(OBJEXT) \ + gui_child_manager.$(OBJEXT) gui_component.$(OBJEXT) \ + gui_directory.$(OBJEXT) gui_directory_button.$(OBJEXT) \ + gui_file_button.$(OBJEXT) gui_file_manager.$(OBJEXT) \ + gui_label.$(OBJEXT) gui_manager.$(OBJEXT) \ + gui_new_file_button.$(OBJEXT) gui_window.$(OBJEXT) \ + input_context.$(OBJEXT) keep_alive_mgr.$(OBJEXT) \ + lisp_reader.$(OBJEXT) lisp_writer.$(OBJEXT) \ + lispreader.$(OBJEXT) load_gui_manager.$(OBJEXT) \ + particle.$(OBJEXT) particle_factory.$(OBJEXT) \ + path_manager.$(OBJEXT) rect_collider.$(OBJEXT) \ + root_graphic_context.$(OBJEXT) save_gui_manager.$(OBJEXT) \ + screen_manager.$(OBJEXT) selection.$(OBJEXT) settings.$(OBJEXT) \ + spring.$(OBJEXT) string_utils.$(OBJEXT) unix_system.$(OBJEXT) \ + vector.$(OBJEXT) world.$(OBJEXT) world_button.$(OBJEXT) \ + world_gui_manager.$(OBJEXT) worldview_collider_tool.$(OBJEXT) \ + worldview_component.$(OBJEXT) worldview_insert_tool.$(OBJEXT) \ + worldview_select_tool.$(OBJEXT) worldview_tool.$(OBJEXT) \ + worldview_zoom_tool.$(OBJEXT) zoom_graphic_context.$(OBJEXT) +libconstruo_a_OBJECTS = $(am_libconstruo_a_OBJECTS) +EXTRA_PROGRAMS = construo.x11$(EXEEXT) construo.glut$(EXEEXT) \ + construo.freeglut$(EXEEXT) +bin_PROGRAMS = @ConstruoTargets@ +PROGRAMS = $(bin_PROGRAMS) + +am_construo_freeglut_OBJECTS = construo_freeglut-construo_main.$(OBJEXT) \ + construo_freeglut-glut_display.$(OBJEXT) +construo_freeglut_OBJECTS = $(am_construo_freeglut_OBJECTS) +construo_freeglut_DEPENDENCIES = libconstruo.a +construo_freeglut_LDFLAGS = +am_construo_glut_OBJECTS = construo_glut-construo_main.$(OBJEXT) \ + construo_glut-glut_display.$(OBJEXT) +construo_glut_OBJECTS = $(am_construo_glut_OBJECTS) +construo_glut_DEPENDENCIES = libconstruo.a +construo_glut_LDFLAGS = +am_construo_x11_OBJECTS = construo_x11-construo_main.$(OBJEXT) \ + construo_x11-x11_display.$(OBJEXT) +construo_x11_OBJECTS = $(am_construo_x11_OBJECTS) +construo_x11_DEPENDENCIES = libconstruo.a +construo_x11_LDFLAGS = + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I. +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/bounding_box.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/colors.Po ./$(DEPDIR)/command_line.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/config.Po ./$(DEPDIR)/construo.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/construo_freeglut-construo_main.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/construo_freeglut-glut_display.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/construo_glut-construo_main.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/construo_glut-glut_display.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/construo_x11-construo_main.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/construo_x11-x11_display.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/controller.Po ./$(DEPDIR)/globals.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gui_buttons.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gui_child_manager.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gui_component.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gui_directory.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gui_directory_button.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gui_file_button.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gui_file_manager.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gui_label.Po ./$(DEPDIR)/gui_manager.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gui_new_file_button.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gui_window.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/input_context.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/keep_alive_mgr.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/lisp_reader.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/lisp_writer.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/lispreader.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/load_gui_manager.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/particle.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/particle_factory.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/path_manager.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/rect_collider.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/root_graphic_context.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/save_gui_manager.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/screen_manager.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/selection.Po ./$(DEPDIR)/settings.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/spring.Po ./$(DEPDIR)/string_utils.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/unix_system.Po ./$(DEPDIR)/vector.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/world.Po ./$(DEPDIR)/world_button.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/world_gui_manager.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/worldview_collider_tool.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/worldview_component.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/worldview_insert_tool.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/worldview_select_tool.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/worldview_tool.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/worldview_zoom_tool.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/zoom_graphic_context.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(libconstruo_a_SOURCES) $(construo_freeglut_SOURCES) \ + $(construo_glut_SOURCES) $(construo_x11_SOURCES) + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ + Makefile.in NEWS TODO acinclude.m4 aclocal.m4 config.h.in \ + configure configure.ac depcomp install-sh missing mkinstalldirs +DIST_SUBDIRS = $(SUBDIRS) +SOURCES = $(libconstruo_a_SOURCES) $(construo_freeglut_SOURCES) $(construo_glut_SOURCES) $(construo_x11_SOURCES) + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .cxx .o .obj + +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +$(ACLOCAL_M4): configure.ac acinclude.m4 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h + +$(srcdir)/config.h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) + touch $(srcdir)/config.h.in + +distclean-hdr: + -rm -f config.h stamp-h1 + +AR = ar + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libconstruo.a: $(libconstruo_a_OBJECTS) $(libconstruo_a_DEPENDENCIES) + -rm -f libconstruo.a + $(libconstruo_a_AR) libconstruo.a $(libconstruo_a_OBJECTS) $(libconstruo_a_LIBADD) + $(RANLIB) libconstruo.a +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +construo.freeglut$(EXEEXT): $(construo_freeglut_OBJECTS) $(construo_freeglut_DEPENDENCIES) + @rm -f construo.freeglut$(EXEEXT) + $(CXXLINK) $(construo_freeglut_LDFLAGS) $(construo_freeglut_OBJECTS) $(construo_freeglut_LDADD) $(LIBS) +construo.glut$(EXEEXT): $(construo_glut_OBJECTS) $(construo_glut_DEPENDENCIES) + @rm -f construo.glut$(EXEEXT) + $(CXXLINK) $(construo_glut_LDFLAGS) $(construo_glut_OBJECTS) $(construo_glut_LDADD) $(LIBS) +construo.x11$(EXEEXT): $(construo_x11_OBJECTS) $(construo_x11_DEPENDENCIES) + @rm -f construo.x11$(EXEEXT) + $(CXXLINK) $(construo_x11_LDFLAGS) $(construo_x11_OBJECTS) $(construo_x11_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bounding_box.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colors.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command_line.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/construo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/construo_freeglut-construo_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/construo_freeglut-glut_display.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/construo_glut-construo_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/construo_glut-glut_display.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/construo_x11-construo_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/construo_x11-x11_display.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/controller.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/globals.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_buttons.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_child_manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_component.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_directory.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_directory_button.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_file_button.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_file_manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_label.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_new_file_button.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_window.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input_context.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keep_alive_mgr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lisp_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lisp_writer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lispreader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_gui_manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particle.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particle_factory.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path_manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rect_collider.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/root_graphic_context.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save_gui_manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/screen_manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/selection.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/settings.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spring.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/string_utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix_system.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/world.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/world_button.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/world_gui_manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/worldview_collider_tool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/worldview_component.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/worldview_insert_tool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/worldview_select_tool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/worldview_tool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/worldview_zoom_tool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoom_graphic_context.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cxx.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cxx.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + +construo_freeglut-construo_main.o: construo_main.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-construo_main.o -MD -MP -MF "$(DEPDIR)/construo_freeglut-construo_main.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_freeglut-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_freeglut-construo_main.Tpo" "$(DEPDIR)/construo_freeglut-construo_main.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_freeglut-construo_main.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_freeglut-construo_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_freeglut-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_freeglut-construo_main.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -c -o construo_freeglut-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx + +construo_freeglut-construo_main.obj: construo_main.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-construo_main.obj -MD -MP -MF "$(DEPDIR)/construo_freeglut-construo_main.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_freeglut-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi`; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_freeglut-construo_main.Tpo" "$(DEPDIR)/construo_freeglut-construo_main.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_freeglut-construo_main.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_freeglut-construo_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_freeglut-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_freeglut-construo_main.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -c -o construo_freeglut-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi` + +construo_freeglut-glut_display.o: glut_display.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-glut_display.o -MD -MP -MF "$(DEPDIR)/construo_freeglut-glut_display.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_freeglut-glut_display.o `test -f 'glut_display.cxx' || echo '$(srcdir)/'`glut_display.cxx; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_freeglut-glut_display.Tpo" "$(DEPDIR)/construo_freeglut-glut_display.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_freeglut-glut_display.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='glut_display.cxx' object='construo_freeglut-glut_display.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_freeglut-glut_display.Po' tmpdepfile='$(DEPDIR)/construo_freeglut-glut_display.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -c -o construo_freeglut-glut_display.o `test -f 'glut_display.cxx' || echo '$(srcdir)/'`glut_display.cxx + +construo_freeglut-glut_display.obj: glut_display.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-glut_display.obj -MD -MP -MF "$(DEPDIR)/construo_freeglut-glut_display.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_freeglut-glut_display.obj `if test -f 'glut_display.cxx'; then $(CYGPATH_W) 'glut_display.cxx'; else $(CYGPATH_W) '$(srcdir)/glut_display.cxx'; fi`; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_freeglut-glut_display.Tpo" "$(DEPDIR)/construo_freeglut-glut_display.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_freeglut-glut_display.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='glut_display.cxx' object='construo_freeglut-glut_display.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_freeglut-glut_display.Po' tmpdepfile='$(DEPDIR)/construo_freeglut-glut_display.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -c -o construo_freeglut-glut_display.obj `if test -f 'glut_display.cxx'; then $(CYGPATH_W) 'glut_display.cxx'; else $(CYGPATH_W) '$(srcdir)/glut_display.cxx'; fi` + +construo_glut-construo_main.o: construo_main.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-construo_main.o -MD -MP -MF "$(DEPDIR)/construo_glut-construo_main.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_glut-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_glut-construo_main.Tpo" "$(DEPDIR)/construo_glut-construo_main.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_glut-construo_main.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_glut-construo_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_glut-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_glut-construo_main.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -c -o construo_glut-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx + +construo_glut-construo_main.obj: construo_main.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-construo_main.obj -MD -MP -MF "$(DEPDIR)/construo_glut-construo_main.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_glut-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi`; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_glut-construo_main.Tpo" "$(DEPDIR)/construo_glut-construo_main.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_glut-construo_main.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_glut-construo_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_glut-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_glut-construo_main.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -c -o construo_glut-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi` + +construo_glut-glut_display.o: glut_display.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-glut_display.o -MD -MP -MF "$(DEPDIR)/construo_glut-glut_display.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_glut-glut_display.o `test -f 'glut_display.cxx' || echo '$(srcdir)/'`glut_display.cxx; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_glut-glut_display.Tpo" "$(DEPDIR)/construo_glut-glut_display.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_glut-glut_display.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='glut_display.cxx' object='construo_glut-glut_display.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_glut-glut_display.Po' tmpdepfile='$(DEPDIR)/construo_glut-glut_display.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -c -o construo_glut-glut_display.o `test -f 'glut_display.cxx' || echo '$(srcdir)/'`glut_display.cxx + +construo_glut-glut_display.obj: glut_display.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-glut_display.obj -MD -MP -MF "$(DEPDIR)/construo_glut-glut_display.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_glut-glut_display.obj `if test -f 'glut_display.cxx'; then $(CYGPATH_W) 'glut_display.cxx'; else $(CYGPATH_W) '$(srcdir)/glut_display.cxx'; fi`; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_glut-glut_display.Tpo" "$(DEPDIR)/construo_glut-glut_display.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_glut-glut_display.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='glut_display.cxx' object='construo_glut-glut_display.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_glut-glut_display.Po' tmpdepfile='$(DEPDIR)/construo_glut-glut_display.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -c -o construo_glut-glut_display.obj `if test -f 'glut_display.cxx'; then $(CYGPATH_W) 'glut_display.cxx'; else $(CYGPATH_W) '$(srcdir)/glut_display.cxx'; fi` + +construo_x11-construo_main.o: construo_main.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-construo_main.o -MD -MP -MF "$(DEPDIR)/construo_x11-construo_main.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_x11-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_x11-construo_main.Tpo" "$(DEPDIR)/construo_x11-construo_main.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_x11-construo_main.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_x11-construo_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_x11-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_x11-construo_main.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -c -o construo_x11-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx + +construo_x11-construo_main.obj: construo_main.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-construo_main.obj -MD -MP -MF "$(DEPDIR)/construo_x11-construo_main.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_x11-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi`; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_x11-construo_main.Tpo" "$(DEPDIR)/construo_x11-construo_main.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_x11-construo_main.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_x11-construo_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_x11-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_x11-construo_main.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -c -o construo_x11-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi` + +construo_x11-x11_display.o: x11_display.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-x11_display.o -MD -MP -MF "$(DEPDIR)/construo_x11-x11_display.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_x11-x11_display.o `test -f 'x11_display.cxx' || echo '$(srcdir)/'`x11_display.cxx; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_x11-x11_display.Tpo" "$(DEPDIR)/construo_x11-x11_display.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_x11-x11_display.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='x11_display.cxx' object='construo_x11-x11_display.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_x11-x11_display.Po' tmpdepfile='$(DEPDIR)/construo_x11-x11_display.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -c -o construo_x11-x11_display.o `test -f 'x11_display.cxx' || echo '$(srcdir)/'`x11_display.cxx + +construo_x11-x11_display.obj: x11_display.cxx +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-x11_display.obj -MD -MP -MF "$(DEPDIR)/construo_x11-x11_display.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o construo_x11-x11_display.obj `if test -f 'x11_display.cxx'; then $(CYGPATH_W) 'x11_display.cxx'; else $(CYGPATH_W) '$(srcdir)/x11_display.cxx'; fi`; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_x11-x11_display.Tpo" "$(DEPDIR)/construo_x11-x11_display.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_x11-x11_display.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='x11_display.cxx' object='construo_x11-x11_display.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_x11-x11_display.Po' tmpdepfile='$(DEPDIR)/construo_x11-x11_display.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -c -o construo_x11-x11_display.obj `if test -f 'x11_display.cxx'; then $(CYGPATH_W) 'x11_display.cxx'; else $(CYGPATH_W) '$(srcdir)/x11_display.cxx'; fi` +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = . +distdir = $(PACKAGE)-$(VERSION) + +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkinstalldirs) $(distdir)/compatlib + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist dist-all: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ + && rm -f $(distdir).tar.gz \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' +distuninstallcheck: + cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(LIBRARIES) $(PROGRAMS) config.h +installdirs: installdirs-recursive +installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(bindir) + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf autom4te.cache +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \ + clean-recursive ctags ctags-recursive dist dist-all dist-gzip \ + distcheck distclean distclean-compile distclean-depend \ + distclean-generic distclean-hdr distclean-recursive \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am dvi-recursive info info-am info-recursive install \ + install-am install-binPROGRAMS install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-recursive \ + pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ + tags-recursive uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-info-am uninstall-info-recursive uninstall-recursive + + +# EOF # +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..5371b60 --- /dev/null +++ b/NEWS @@ -0,0 +1,107 @@ +Construo 0.2.2 +============== + + * added scaling, press 's' in select-mode + + * fixed problem with new particles disappearing in run-mode + + * made the ground look a bit nicer + + * fixed speed problem in the X11 target + + +Construo 0.2.1 +============== + + * added switch to disable thick lines in X11 + + * added runtime switching to fullscreen, press 'F11' + + * different cursors for different tools + + * added a blender like 'remove doubles', press 'j' + + * fixed 'make install' + + * added grid support (press 'g') + + * fixes crash-bug in with user/ directory + + * fixed some missing keybindings fixed + + * fixed missing #ifdef/#endif for XVidMode, caused compile failure if + Xvidmode is not present + + * added zlib support for compressed construo files (.construo.gz) + + * some small optimizations + + * fixed problems with 16bit XServers + + * more example constrution + + +Construo 0.2.0 +============== + + * Fixed id-overlap bug which caused construction to get corrput + (wrong particles connected together) + + * added zooming plus mouse-wheel support + + * added scrolling with cursorkeys and mouse + + * added simple GUI + + * House of Horror Part1 and Part2 added (currently a bit broken due + to changed physics) + + * fullscreen support added + + * moving of objects is possible + + * rotation of objects is possible + + * added optional glut support for hardware accelerated OpenGL + + * support for anti-aliased lines and transparency (only under glut) + + * fixed particle physics, particle mass now has an impact + + * particle velocity editing is possible + + * added file-manager with thumbnail preview + + * added custom collider objects (aka boxes) + + * moving of colliders in a running simulation is possible + + * some bit more actions are undoable + + * lots of new bugs and missing features, see file BUGS for the known + issues (no file overwrite warning, so be carefull!) + + +Construo 0.1.0 +============== + + * fixed-particles are now possible + + * in-game help screen available + + * removal of particles is possible + + * rewind to the state before the 'run' is possible (aka undo) + + * rewritten to use only plain Xlib, no additional libraries required + + * XML is replaced by s-expressions, this removes another library + dependency and results in better readable files + + * added a bunch of example files + + * added abstraction layer, ports to other libraries or OSs should be + quite easy (OpenGL port might follow sooner or later) + + +# EOF # diff --git a/README b/README new file mode 100644 index 0000000..f27abd3 --- /dev/null +++ b/README @@ -0,0 +1,25 @@ +Construo V0.2.2 +=============== + +Construo is a programm for constructing wire-frame objects and let +them react on physical forces, its neither a real simulation nor a +real game, its just a little toy app which can be a nice way to waste +time. Some game-like elements might follow later, see the file 'TODO'. +Installation and compile instructions can be found in the file +'INSTALL'. Construo runs under both OpenGL and plain Xlib. + +The newest version can be found at: + + http://www.nongnu.org/construo/ + +For questions, comments, constructions, bugs reports and other things +write a mail to: + + Ingo Ruhnke + +or send it directly to the Construo-Development mailing list at: + + construo-devel@nongnu.org + + +# EOF # \ No newline at end of file diff --git a/TODO b/TODO new file mode 100644 index 0000000..58c3a7b --- /dev/null +++ b/TODO @@ -0,0 +1,83 @@ +Release 0.2.2: +* update Changelog +* fix assertion on broken files +* fix broken demos (complex*, explode, ...) + +Release 0.3.0: +* Magnetic forces, aka gravity forces which reflect some particles and + attract others +* config file support and an option menu to switch off stress-color, + change the coloring scheme and things like that +* make the window resizable +* author field (gcos filtering missing) +* date field +* addd gettext support +* invisible springs +* fix speed bug (unknown) +* make it non-deterministic again ( +* port to windows + +--- in the future --- + - screensaver mode + - add different types of sticks + - make stick properties editable + - add a better load/save interface + - make it 3D (not that doable, since it would require a completly + other type of editor, but physics-vise its pretty simply) + - add some randomness + - add wind/earthquake or other things + - make use of non-flad ground + - add zoom + + - add constrained, scenarios with a limited number of + particles/sticks and things like that, add mission goals + +--- User contributed --- + - Capability to connect springs into the middle of another spring + [grumbel: don't think this is a good idea, the physics model + doesn't work like this, but it still could be done if we simply + break the single spring into two] + + - Objects that cannot be penetrated with wire. + [grumbel: doesn't mix with physic engine, objects that can't be + penetrated by particles are already there] + + - Capability to adjust individual parameters of springs. + [grumbel: might come, but will be limited] + + - A macro language (yes, lisp is fine, there seems to be some code + for it). [grumbel: won't come, overkill, use scripting language to + create the construo file instead, optional guile support maybe?!] + + - Concept of object (grouping of lines / other objects). [grumbel: + might come with the prefabs, but most likly only 'passive' so that + you can mark and move groups, permanent groups are unlikly] + + - Capability to store and load objects. [grumbel: prefabs will come] + + - Colors, texture mapping for new object types. [grumbel: might come, + but not very soon] + + - Sounds (I want to hear the constructions crashing..). [grumbel: + would require extra library, not good, but might come somewhen] + + - Backdrop graphics [grumbel: if they come not very soon]. + + - Active elements.[grumbel: earthquake particles will come] + + +Modes for Construo - The Game +----------------------------- + * remove a spring and hope that the tower doesn't fall, multiplayer + game, played in a round, player that crashes the tower is out, + multiple rounds will be played, several stable objects must be + provided. + * hot-fixing, the player has to stablelize a falling structure in + slow-motion mode, if he fixes it he wins, else he loses + * task-force, player as to complete some task, like build a bridge or + something else with limited resources + * demo mode, let a bunch of machines do things automatically, insert + some text here and there + + +# EOF # \ No newline at end of file diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 0000000..ad53a91 --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,10 @@ +AC_DEFUN([AC_DEFINE_DIR], [ + test "x$prefix" = xNONE && prefix="$ac_default_prefix" + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + ac_define_dir=`eval echo [$]$2` + ac_define_dir=`eval echo [$]ac_define_dir` + ifelse($3, , + AC_DEFINE_UNQUOTED($1, "$ac_define_dir"), + AC_DEFINE_UNQUOTED($1, "$ac_define_dir", $3)) +]) + diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..ab0bbc5 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,863 @@ +# generated automatically by aclocal 1.7.3 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +AC_DEFUN([AC_DEFINE_DIR], [ + test "x$prefix" = xNONE && prefix="$ac_default_prefix" + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + ac_define_dir=`eval echo [$]$2` + ac_define_dir=`eval echo [$]ac_define_dir` + ifelse($3, , + AC_DEFINE_UNQUOTED($1, "$ac_define_dir"), + AC_DEFINE_UNQUOTED($1, "$ac_define_dir", $3)) +]) + + +# Do all the work for Automake. -*- Autoconf -*- + +# This macro actually does too much some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 9 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +AC_PREREQ([2.54]) + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG(AMTAR, tar) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl + +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.7.3])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# +# Check to make sure that the build environment is sane. +# + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# -*- Autoconf -*- + + +# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# AM_AUX_DIR_EXPAND + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +# Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50]) + +AC_DEFUN([AM_AUX_DIR_EXPAND], [ +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# AM_PROG_INSTALL_STRIP + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# -*- Autoconf -*- +# Copyright (C) 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 1 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# serial 5 -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c -o conftest.o conftest.c \ + >/dev/null 2>conftest.err && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST(am__include) +AC_SUBST(am__quote) +AC_MSG_RESULT($_am_result) +rm -f confinc confmf +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 5 + +AC_PREREQ(2.52) + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]) +fi])]) + +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_PREREQ([2.52]) + +# serial 6 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + diff --git a/bounding_box.cxx b/bounding_box.cxx new file mode 100644 index 0000000..96fb1e3 --- /dev/null +++ b/bounding_box.cxx @@ -0,0 +1,61 @@ +// $Id: bounding_box.cxx,v 1.1 2003/07/26 11:18:47 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "vector2d.hxx" +#include "math.hxx" +#include "bounding_box.hxx" + +BoundingBox::BoundingBox() + : x1(0), y1(0), x2(0), y2(0) +{ +} + +BoundingBox::BoundingBox(float x1_, float y1_, float x2_, float y2_) + : x1(x1_), y1(y1_), x2(x2_), y2(y2_) +{ +} + +void +BoundingBox::join(const BoundingBox& box) +{ + x1 = Math::min(x1, box.x1); + y1 = Math::min(y1, box.y1); + + x2 = Math::max(x2, box.x2); + y2 = Math::max(y2, box.y2); +} + +void +BoundingBox::join(const Vector2d& pos) +{ + x1 = Math::min(x1, pos.x); + y1 = Math::min(y1, pos.y); + + x2 = Math::max(x2, pos.x); + y2 = Math::max(y2, pos.y); +} + +std::ostream& operator << (std::ostream& os, const BoundingBox& box) +{ + return os << "[BB:" + << box.x1 << ", " << box.y1 << ", " << box.x2 << ", " << box.y2 + << "]"; +} + +/* EOF */ diff --git a/bounding_box.hxx b/bounding_box.hxx new file mode 100644 index 0000000..e411f34 --- /dev/null +++ b/bounding_box.hxx @@ -0,0 +1,48 @@ +// $Id: bounding_box.hxx,v 1.1 2003/07/26 11:18:47 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_BOUNDING_BOX_HXX +#define HEADER_BOUNDING_BOX_HXX + +class Vector2d; + +class BoundingBox +{ +public: + float x1; + float y1; + float x2; + float y2; + + BoundingBox(); + BoundingBox(float x1_, float y1_, float x2_, float y2_); + + /** Join the current bounding box with another bounding box, letting + * the resulting box cover both boxes */ + void join(const BoundingBox& box); + + /** Let the bounding box be enlarge so that it also coveres pos */ + void join(const Vector2d& pos); +}; + +std::ostream& operator << (std::ostream& os, const BoundingBox& box); + +#endif + +/* EOF */ diff --git a/buttons.hxx b/buttons.hxx new file mode 100644 index 0000000..84ae784 --- /dev/null +++ b/buttons.hxx @@ -0,0 +1,81 @@ +// $Id: buttons.hxx,v 1.16 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_BUTTONS_HXX +#define HEADER_CONSTRUO_BUTTONS_HXX + +enum ButtonTypes { + BUTTON_PRIMARY, // primary mouse button (inserts particles) + BUTTON_SECONDARY, // secondary mouse button (delete particles, rotate selection) + BUTTON_TERTIARY, // scroll around + BUTTON_FIX, // fix a particle at the current position + BUTTON_ESCAPE, // escape key + BUTTON_START, // space key or third mouse button + BUTTON_CLEAR, // clear the current scene + BUTTON_DELETE, // delete the current object + BUTTON_DUPLICATE, // duplicate the current select + BUTTON_FLIP, // flip the current object horizontally + BUTTON_UNDO, // bring the world back to its state before the simulation start + BUTTON_REDO, // bring the world back to its state before the last undo + BUTTON_ZEROVELOCITY, // set velocity to zero + BUTTON_SETVELOCITY, // set the velocity of the selection + BUTTON_SCALE, // Scale the currently selected object + BUTTON_TOGGLESLOWMO, + BUTTON_FULLSCREEN, // Toggle fullscreen mode + BUTTON_JOIN, // Join objects that are close together + BUTTON_GRID, // display or hide the grid + BUTTON_RUN, // starts or stops the simulation + BUTTON_MODE_CHANGE, // Switch the input mode (aka what happens when you click with the mouse) + BUTTON_ACTIONCAM, + BUTTON_HIDEDOTS, + + BUTTON_ZOOM_OUT, + BUTTON_ZOOM_IN, + + BUTTON_SCROLL_LEFT, + BUTTON_SCROLL_RIGHT, + BUTTON_SCROLL_UP, + BUTTON_SCROLL_DOWN, + + BUTTON_QUICKLOAD0, + BUTTON_QUICKLOAD1, + BUTTON_QUICKLOAD2, + BUTTON_QUICKLOAD3, + BUTTON_QUICKLOAD4, + BUTTON_QUICKLOAD5, + BUTTON_QUICKLOAD6, + BUTTON_QUICKLOAD7, + BUTTON_QUICKLOAD8, + BUTTON_QUICKLOAD9, + + BUTTON_QUICKSAVE0, + BUTTON_QUICKSAVE1, + BUTTON_QUICKSAVE2, + BUTTON_QUICKSAVE3, + BUTTON_QUICKSAVE4, + BUTTON_QUICKSAVE5, + BUTTON_QUICKSAVE6, + BUTTON_QUICKSAVE7, + BUTTON_QUICKSAVE8, + BUTTON_QUICKSAVE9, +}; + +#endif + +/* EOF */ diff --git a/collider.hxx b/collider.hxx new file mode 100644 index 0000000..c315e1a --- /dev/null +++ b/collider.hxx @@ -0,0 +1,56 @@ +// $Id: collider.hxx,v 1.7 2003/07/26 11:18:47 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_COLLIDER_HXX +#define HEADER_CONSTRUO_COLLIDER_HXX + +#include "vector2d.hxx" +#include "particle.hxx" +#include "bounding_box.hxx" +#include "graphic_context.hxx" + +/** */ +class Collider +{ +private: + +public: + virtual Collider* duplicate() const =0; + + virtual void draw (GraphicContext*) =0; + virtual void draw_highlight (GraphicContext*) =0; + + virtual Vector2d get_pos() =0; + virtual void set_pos(const Vector2d&) =0; + + /** @return true if the collider is at the given world coordinates, + used for drag&drop */ + virtual bool is_at (const Vector2d& pos) =0; + + /** act on a particle */ + virtual void bounce () =0; + + virtual BoundingBox get_bounding_box() const =0; + + virtual lisp_object_t* serialize() =0; +}; + +#endif + +/* EOF */ diff --git a/color.hxx b/color.hxx new file mode 100644 index 0000000..697766a --- /dev/null +++ b/color.hxx @@ -0,0 +1,52 @@ +// $Id: color.hxx,v 1.8 2003/07/27 18:46:11 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_COLOR_HXX +#define HEADER_CONSTRUO_COLOR_HXX + +/** */ +struct Color +{ + float r; + float g; + float b; + float a; + + Color (int i) { + r = ((i & 0xFF000000) >> 24) / 255.0f; + g = ((i & 0x00FF0000) >> 16) / 255.0f; + b = ((i & 0x0000FF00) >> 8) / 255.0f; + a = ((i & 0x000000FF) >> 0) / 255.0f; + } + + Color (float r, float g, float b, float a = 1.0f) + : r (r), g (g), b (b), a (a) {} + + /** Convert the color into 0xRRGGBB format */ + inline unsigned int get_as_rrggbb () const + { + return ((unsigned int)(255 * b)) + | (((unsigned int)(255 * g)) << 8) + | (((unsigned int)(255 * r)) << 16); + } +}; + +#endif + +/* EOF */ diff --git a/colors.cxx b/colors.cxx new file mode 100644 index 0000000..68d1472 --- /dev/null +++ b/colors.cxx @@ -0,0 +1,47 @@ +// $Id: colors.cxx,v 1.5 2003/07/28 08:57:34 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "colors.hxx" + +namespace Colors +{ +Color button_fg_pressed (0xFFFFFFFF); +Color button_fg_hover (0x009f9fFF); +Color button_fg_passive (0x007f7fFF); + +Color button_bg_pressed (0x000000FF); +Color button_bg_hover (0x006060EE); +Color button_bg_passive (0x004f4fAA); +Color button_bg_active (0x00AAAAAA); + +Color new_spring (0xAAAAAAFF); +Color selection_rect (0xFFFFFFFF); +Color selection_resizer (0xFFFF00FF); + +Color rect_collider_fg (0x0000FFFF); +Color rect_collider_bg (0x0000AAFF); +Color highlight (0xEEEEEEFF); + +Color grid_color (0x444444FF); +Color ground_color (0x000066FF); +Color ground_grid_color (0x000073FF); + +} // namespace + +/* EOF */ diff --git a/colors.hxx b/colors.hxx new file mode 100644 index 0000000..3b6e851 --- /dev/null +++ b/colors.hxx @@ -0,0 +1,58 @@ +// $Id: colors.hxx,v 1.5 2003/07/28 09:23:46 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_COLORS_HXX +#define HEADER_CONSTRUO_COLORS_HXX + +#include "color.hxx" + +namespace Colors { + +extern Color button_fg_pressed; +extern Color button_fg_hover; +extern Color button_fg_passive; + +extern Color button_bg_pressed; +extern Color button_bg_hover; +extern Color button_bg_passive; +extern Color button_bg_active; + +/** Color for new springs and other helper lines */ +extern Color new_spring; + +extern Color selection_rect; +extern Color selection_resizer; + +/** Color for collidables */ +extern Color rect_collider_fg; +extern Color rect_collider_bg; +extern Color ground_color; +extern Color ground_grid_color; + +/** Color for highlighted particles or springs */ +extern Color highlight; + +/** Color of the background grid */ +extern Color grid_color; + +} // namespace Colors + +#endif + +/* EOF */ diff --git a/command_line.cxx b/command_line.cxx new file mode 100644 index 0000000..3224e59 --- /dev/null +++ b/command_line.cxx @@ -0,0 +1,147 @@ +// $Id: command_line.cxx,v 1.8 2003/07/26 14:43:56 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include +#include +#include "settings.hxx" +#include "command_line.hxx" + +void +CommandLine::error (const std::string& msg) +{ + std::cout << "CommandLine parse failure!" << std::endl; + std::cout << "CommandLine: " << msg << std::endl; + exit(EXIT_FAILURE); +} + +void +CommandLine::parse (int argc, char** argv) +{ + // FIXME: Replace this with getopt_long() or argp() + for (int i = 1; i < argc; ++i) // Skip Programm name + { + //std::cout << "Arg: " << argv[i] << std::endl; + + if (argv[i][0] == '-') // Argument is an option + { + if (strcmp(argv[i], "--fullscreen") == 0 + || strcmp(argv[i], "-f") == 0) + { + settings.fullscreen = true; + } + else if (strcmp(argv[i], "--version") == 0 + || strcmp(argv[i], "-v") == 0) + { + print_version (); + exit (EXIT_SUCCESS); + } + else if (strcmp(argv[i], "--help") == 0 + || strcmp(argv[i], "-h") == 0) + { + print_help (); + exit (EXIT_SUCCESS); + } + else if (strcmp(argv[i], "--disable-alphablending") == 0) + { + settings.alphablending = false; + } + else if (strcmp(argv[i], "--disable-antialiasing") == 0 + || strcmp(argv[i], "-d") == 0) + { + settings.antialiasing = false; + } + else if (strcmp(argv[i], "--disable-thicklines") == 0 + || strcmp(argv[i], "-l") == 0) + { + settings.thick_lines = false; + } + else if (strcmp(argv[i], "--disable-doublebuffer") == 0) + { + settings.doublebuffer = false; + } + else if (strcmp(argv[i], "--datadir") == 0) + { + settings.datadir = argv[++i]; + } + else if (strcmp(argv[i], "-g") == 0 + || strcmp(argv[i], "--geometry") == 0) + { + if (++i < argc) + { + char c; + if (sscanf(argv[i], "%d%c%d", + &settings.screen_width, &c, &settings.screen_height) != 3 && c != 'x') + { + error ("geometry string must WIDTHxHEIGHT"); + } + } + else + { + error ("-g/--geometry is missing an argument"); + } + } + else + { + error (std::string("Unknown option: ") + argv[i]); + } + } + else + { + if (!settings.startup_file.empty()) + { + error ("Only one filename can be given"); + } + else + { + settings.startup_file = argv[i]; + } + } + } +} + +void +CommandLine::print_help () +{ + std::cout << "Construo "VERSION"\n\n" + << "Usage: construo [OPTIONS] [FILENAME]\n\n" + << " -h, --help display this help text\n" + << " -v,--version Print version number of the programm\n" + << " -f, --fullscreen switch to fullscreen mode if available\n" + << " -g, --geometry WIDTHxHEIGHT switch resolution to WIDTH and HEIGHT\n" + << " -d, --disable-antialiasing Switch into non antialiased mode\n" + << " -l, --disable-thicklines Disable thick (slow) line drawing\n" + << " --disable-doublebuffer disable the double buffer (might cause flicker)\n" + << " --disable-alphablending Switch into non alphablended mode\n" + << " --datadir DIR Set the datadir of Construo to DIR\n" + << std::endl; +} + +void +CommandLine::print_version () +{ + std::cout << "Construo "VERSION"\n" + << "Written by Ingo Ruhnke \n\n" + << "Copyright (C) 2002 Ingo Ruhnke \n" + << "This is free software; see the source for copying conditions. There is NO\n" + << "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\n"; +} + +/* EOF */ + diff --git a/command_line.hxx b/command_line.hxx new file mode 100644 index 0000000..dfd1a15 --- /dev/null +++ b/command_line.hxx @@ -0,0 +1,38 @@ +// $Id: command_line.hxx,v 1.3 2003/01/05 15:29:15 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_COMMAND_LINE_HXX +#define HEADER_CONSTRUO_COMMAND_LINE_HXX + +#include + +/** Parses the command line */ +class CommandLine +{ +private: + static void error (const std::string& msg); +public: + static void parse (int argc, char** argv); + static void print_help (); + static void print_version (); +}; + +#endif + +/* EOF */ diff --git a/compatlib/sstream b/compatlib/sstream new file mode 100644 index 0000000..23efcd3 --- /dev/null +++ b/compatlib/sstream @@ -0,0 +1,236 @@ +/* This is part of libio/iostream, providing -*- C++ -*- input/output. +Copyright (C) 2000 Free Software Foundation + +This file is part of the GNU IO Library. This library is free +software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) +any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this library; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +As a special exception, if you link this library with files +compiled with a GNU compiler to produce an executable, this does not cause +the resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why +the executable file might be covered by the GNU General Public License. */ + +/* Written by Magnus Fromreide (magfr@lysator.liu.se). */ + +/* Sligtly modified for use in The LyX Project. + Made to be usable with both std::string (as supplied with Gcc 2.95.2), + and with lyxstring. Dynamic casts have been replaced by static_casts. + One fix to avoid unsigned/signed warnings. + + Some further changes might be needed to avoid use of namespaces. + + Lars Gullik Bjønnes (larsbj@lyx.org) +*/ + +#ifndef SSTREAM_H +#define SSTREAM_H + +#include +#include +#include + +namespace std +{ + class stringbuf : public streambuf + { + public: + typedef char char_type; + typedef int int_type; + typedef streampos pos_type; + typedef streamoff off_type; + + explicit stringbuf(int which=ios::in|ios::out) : + streambuf(which), buf(), mode(static_cast(which)), + rpos(0), bufsize(1) + { } + + explicit stringbuf(const string &s, int which=ios::in|ios::out) : + streambuf(which), buf(s), mode(static_cast(which)), + bufsize(1) + { + if(mode & ios::in) + { + setg(&defbuf, &defbuf + bufsize, &defbuf + bufsize); + } + if(mode & ios::out) + { + setp(&defbuf, &defbuf + bufsize); + } + rpos = (mode & ios::ate ? s.size() : 0); + } + + string str() const + { + const_cast(this)->sync(); // Sigh, really ugly hack + return buf; + }; + + void str(const string& s) + { + buf = s; + if(mode & ios::in) + { + gbump(egptr() - gptr()); + } + if(mode & ios::out) + { + pbump(pbase() - pptr()); + } + rpos = (mode & ios::ate ? s.size() : 0); + } + + protected: + inline virtual int sync(); + inline virtual int overflow(int = EOF); + inline virtual int underflow(); + private: + string buf; + ios::open_mode mode; + string::size_type rpos; + streamsize bufsize; + char defbuf; + }; + + class stringstreambase : virtual public ios { + protected: + stringbuf __my_sb; + public: + string str() const + { + return static_cast(_strbuf)->str(); + } + void str(const string& s) + { + clear(); + static_cast(_strbuf)->str(s); + } + + stringbuf* rdbuf() + { + return &__my_sb; + } + protected: + stringstreambase(int which) : + __my_sb(which) + { + init (&__my_sb); + } + + stringstreambase(const string& s, int which) : + __my_sb(s, which) + { + init (&__my_sb); + } + }; + + class istringstream : public stringstreambase, public istream { + public: + istringstream(int which=ios::in) : + stringstreambase(which) + { } + + istringstream(const string& s, int which=ios::in) : + stringstreambase(s, which) + { } + }; + + class ostringstream : public stringstreambase, public ostream { + public: + ostringstream(int which=ios::out) : + stringstreambase(which) + { } + + ostringstream(const string& s, int which=ios::out) : + stringstreambase(s, which) + { } + }; + + class stringstream : public stringstreambase, public iostream { + public: + stringstream(int which=ios::in|ios::out) : + stringstreambase(which) + { } + + stringstream(const string &s, int which=ios::in|ios::out) : + stringstreambase(s, which) + { } + }; +} + +inline int stringbuf::sync() +{ + if((mode & ios::out) == 0) + return EOF; + + streamsize n = pptr() - pbase(); + if(n) + { + buf.replace(rpos, string::npos, pbase(), n); + //if(buf.size() - rpos != n) + if (buf.size() != n + rpos) + return EOF; + rpos += n; + pbump(-n); + gbump(egptr() - gptr()); + } + return 0; +} + +inline int stringbuf::overflow(int ch) +{ + if((mode & ios::out) == 0) + return EOF; + + streamsize n = pptr() - pbase(); + + if(n && sync()) + return EOF; + + if(ch != EOF) + { + string::size_type oldSize = buf.size(); + + buf.replace(rpos, string::npos, 1, ch); + if(buf.size() - oldSize != 1) + return EOF; + ++rpos; + } + return 0; +} + +inline int stringbuf::underflow() +{ + sync(); + if((mode & ios::in) == 0) + { + return EOF; + } + if(rpos >= buf.size()) + { + return EOF; + } + + string::size_type n = egptr() - eback(); + string::size_type s; + + s = buf.copy(eback(), n, rpos); + pbump(pbase() - pptr()); + gbump(eback() - gptr()); + int res = (0377 & buf[rpos]); + rpos += s; + return res; +} + +#endif /* not __STRSTREAM__ */ diff --git a/config.cxx b/config.cxx new file mode 100644 index 0000000..f12dfd4 --- /dev/null +++ b/config.cxx @@ -0,0 +1,23 @@ +// $Id: config.cxx,v 1.2 2002/11/21 17:42:23 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "config.hxx" + + +/* EOF */ diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..850168d --- /dev/null +++ b/config.h.in @@ -0,0 +1,70 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Location of datafiles */ +#undef DATADIR + +/* Enable debuging */ +#undef DEBUG + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Xext is available */ +#undef HAVE_LIBXEXT + +/* VidMode is available */ +#undef HAVE_LIBXXF86VM + +/* Define to 1 if you have the `z' library (-lz). */ +#undef HAVE_LIBZ + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if the X Window System is missing or not being used. */ +#undef X_DISPLAY_MISSING diff --git a/config.hxx b/config.hxx new file mode 100644 index 0000000..d8c9b7e --- /dev/null +++ b/config.hxx @@ -0,0 +1,60 @@ +// $Id: config.hxx,v 1.1 2002/11/20 00:46:11 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef CONFIG_HH +#define CONFIG_HH + +#include + +class Config +{ +private: + std::string home_dir; + std::string construo_dir; + +public: + Config () { + char* home = getenv ("HOME"); + if (home) { + home_dir = home; + } else { + home_dir = "."; + } + construo_dir = home_dir + "/.construo/"; + } + + ~Config () { + } + + /** Returns the home directory or the current directory */ + std::string get_home () + { + return home_dir; + } + + /** Returns the directory to which construo will save its + quicksave's and manual saves */ + std::string get_construo_dir () { + return construo_dir; + } +}; + +#endif + +/* EOF */ diff --git a/configure b/configure new file mode 100755 index 0000000..cbb49ab --- /dev/null +++ b/configure @@ -0,0 +1,7099 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.57 for construo 0.2.2. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='construo' +PACKAGE_TARNAME='construo' +PACKAGE_VERSION='0.2.2' +PACKAGE_STRING='construo 0.2.2' +PACKAGE_BUGREPORT='' + +ac_unique_file="construo.hxx" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS CXXCPP EGREP x11_LIBS x11_CXXFLAGS glut_LIBS freeglut_LIBS ConstruoTargets LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures construo 0.2.2 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of construo 0.2.2:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors + --enable-debug enable debug support (default: no) + --enable-gprof enable gprof profiling (default: no) + --enable-fcheck enable fcheck profiling (default: no) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-x use the X Window System + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CC C compiler command + CFLAGS C compiler flags + CPP C preprocessor + CXXCPP C++ preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +construo configure 0.2.2 +generated by GNU Autoconf 2.57 + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by construo $as_me 0.2.2, which was +generated by GNU Autoconf 2.57. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + + + + + +am__api_version="1.7" +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + + # test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='construo' + VERSION='0.2.2' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. + + + + + ac_config_headers="$ac_config_headers config.h" + + +# check for some programs +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C++ compiler default output" >&5 +echo $ECHO_N "checking for C++ compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 +echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c -o conftest.o conftest.c \ + >/dev/null 2>conftest.err && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c -o conftest.o conftest.c \ + >/dev/null 2>conftest.err && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for X" >&5 +echo $ECHO_N "checking for X... $ECHO_C" >&6 + + +# Check whether --with-x or --without-x was given. +if test "${with_x+set}" = set; then + withval="$with_x" + +fi; +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then + # Both variables are already set. + have_x=yes + else + if test "${ac_cv_have_x+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -fr conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + # Make sure to not put "make" in the Imakefile rules, since we grep it out. + cat >Imakefile <<'_ACEOF' +acfindx: + @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' +_ACEOF + if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl; do + if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && + test -f $ac_im_libdir/libX11.$ac_extension; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -fr conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Intrinsic.h. + # First, try using that file with no special directory specified. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # We can compile using X headers with no special include directory. +ac_x_includes= +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Intrinsic.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lXt $LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +XtMalloc (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +LIBS=$ac_save_LIBS +for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r $ac_dir/libXt.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then + # Didn't find X anywhere. Cache the known absence of X. + ac_cv_have_x="have_x=no" +else + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" +fi +fi + + fi + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + echo "$as_me:$LINENO: result: $have_x" >&5 +echo "${ECHO_T}$have_x" >&6 + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$x_includes ac_x_libraries=$x_libraries" + echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 +echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 +fi + +if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + +cat >>confdefs.h <<\_ACEOF +#define X_DISPLAY_MISSING 1 +_ACEOF + + X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= +else + if test -n "$x_includes"; then + X_CFLAGS="$X_CFLAGS -I$x_includes" + fi + + # It would also be nice to do this for all -L options, not just this one. + if test -n "$x_libraries"; then + X_LIBS="$X_LIBS -L$x_libraries" + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . + case `(uname -sr) 2>/dev/null` in + "SunOS 5"*) + echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 +echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_nospace=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_R_nospace=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test $ac_R_nospace = yes; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + X_LIBS="$X_LIBS -R$x_libraries" + else + LIBS="$ac_xsave_LIBS -R $x_libraries" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_space=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_R_space=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test $ac_R_space = yes; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + X_LIBS="$X_LIBS -R $x_libraries" + else + echo "$as_me:$LINENO: result: neither works" >&5 +echo "${ECHO_T}neither works" >&6 + fi + fi + LIBS=$ac_xsave_LIBS + esac + fi + + # Check for system-dependent libraries X programs must link with. + # Do this before checking for the system-independent R6 libraries + # (-lICE), since we may need -lsocket or whatever for X linking. + + if test "$ISC" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" + else + # Martyn Johnson says this is needed for Ultrix, if the X + # libraries were built with DECnet support. And Karl Berry says + # the Alpha needs dnet_stub (dnet does not exist). + ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XOpenDisplay (); +int +main () +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa (); +int +main () +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dnet_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dnet_dnet_ntoa=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 +if test $ac_cv_lib_dnet_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" +fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet_stub $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa (); +int +main () +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dnet_stub_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dnet_stub_dnet_ntoa=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 +if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" +fi + + fi +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$ac_xsave_LIBS" + + # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, + # to get the SysV transport functions. + # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) + # needs -lnsl. + # The nsl library prevents programs from opening the X display + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + echo "$as_me:$LINENO: checking for gethostbyname" >&5 +echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gethostbyname (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +choke me +#else +char (*f) () = gethostbyname; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != gethostbyname; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 + + if test $ac_cv_func_gethostbyname = no; then + echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 +echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main () +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_nsl_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +if test $ac_cv_lib_nsl_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" +fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 +echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 +if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main () +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_bsd_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_bsd_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 +if test $ac_cv_lib_bsd_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" +fi + + fi + fi + + # lieder@skyler.mavd.honeywell.com says without -lsocket, + # socket/setsockopt and other routines are undefined under SCO ODT + # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary + # on later versions), says Simon Leinen: it contains gethostby* + # variants that don't use the name server (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + echo "$as_me:$LINENO: checking for connect" >&5 +echo $ECHO_N "checking for connect... $ECHO_C" >&6 +if test "${ac_cv_func_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char connect (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_connect) || defined (__stub___connect) +choke me +#else +char (*f) () = connect; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != connect; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_connect=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_connect=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 +echo "${ECHO_T}$ac_cv_func_connect" >&6 + + if test $ac_cv_func_connect = no; then + echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 +echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); +int +main () +{ +connect (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_connect=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_connect=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 +if test $ac_cv_lib_socket_connect = yes; then + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" +fi + + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. + echo "$as_me:$LINENO: checking for remove" >&5 +echo $ECHO_N "checking for remove... $ECHO_C" >&6 +if test "${ac_cv_func_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char remove (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char remove (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_remove) || defined (__stub___remove) +choke me +#else +char (*f) () = remove; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != remove; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_remove=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_remove=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 +echo "${ECHO_T}$ac_cv_func_remove" >&6 + + if test $ac_cv_func_remove = no; then + echo "$as_me:$LINENO: checking for remove in -lposix" >&5 +echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 +if test "${ac_cv_lib_posix_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char remove (); +int +main () +{ +remove (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_posix_remove=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_posix_remove=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 +echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 +if test $ac_cv_lib_posix_remove = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" +fi + + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + echo "$as_me:$LINENO: checking for shmat" >&5 +echo $ECHO_N "checking for shmat... $ECHO_C" >&6 +if test "${ac_cv_func_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shmat (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shmat (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shmat) || defined (__stub___shmat) +choke me +#else +char (*f) () = shmat; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shmat; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shmat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shmat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 +echo "${ECHO_T}$ac_cv_func_shmat" >&6 + + if test $ac_cv_func_shmat = no; then + echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 +echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 +if test "${ac_cv_lib_ipc_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lipc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shmat (); +int +main () +{ +shmat (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ipc_shmat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ipc_shmat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 +echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 +if test $ac_cv_lib_ipc_shmat = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" +fi + + fi + fi + + # Check for libraries that X11R6 Xt/Xaw programs need. + ac_save_LDFLAGS=$LDFLAGS + test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" + # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to + # check for ICE first), but we must link in the order -lSM -lICE or + # we get undefined symbols. So assume we have SM if we have ICE. + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry + echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 +echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 +if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lICE $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char IceConnectionNumber (); +int +main () +{ +IceConnectionNumber (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ICE_IceConnectionNumber=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ICE_IceConnectionNumber=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 +if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" +fi + + LDFLAGS=$ac_save_LDFLAGS + +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +echo "$as_me:$LINENO: checking whether we are enabling debug-mode" >&5 +echo $ECHO_N "checking whether we are enabling debug-mode... $ECHO_C" >&6 +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + +else + enable_debug=no +fi; +echo "$as_me:$LINENO: result: $enable_debug" >&5 +echo "${ECHO_T}$enable_debug" >&6 + +if test x$enable_debug = xyes; then + +cat >>confdefs.h <<\_ACEOF +#define DEBUG 1 +_ACEOF + + CXXFLAGS="-g -O0 -Wall -Werror" +fi + +echo "$as_me:$LINENO: checking whether we are enabling gprof profiling-support" >&5 +echo $ECHO_N "checking whether we are enabling gprof profiling-support... $ECHO_C" >&6 +# Check whether --enable-gprof or --disable-gprof was given. +if test "${enable_gprof+set}" = set; then + enableval="$enable_gprof" + +else + enable_gprof=no +fi; +echo "$as_me:$LINENO: result: $enable_gprof" >&5 +echo "${ECHO_T}$enable_gprof" >&6 + +if test x$enable_gprof = xyes; then + CXXFLAGS="$CXXFLAGS -pg" +fi + +echo "$as_me:$LINENO: checking whether we are enabling FunctionCheck profiling" >&5 +echo $ECHO_N "checking whether we are enabling FunctionCheck profiling... $ECHO_C" >&6 +# Check whether --enable-fcheck or --disable-fcheck was given. +if test "${enable_fcheck+set}" = set; then + enableval="$enable_fcheck" + +else + enable_fcheck=no +fi; +echo "$as_me:$LINENO: result: $enable_fcheck" >&5 +echo "${ECHO_T}$enable_fcheck" >&6 + +if test x$enable_fcheck = xyes; then + CXXFLAGS="`fc-config --cflags`" + LIBS="$LIBS `fc-config --libs`" +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_sstream+set}" = set; then + echo "$as_me:$LINENO: checking for sstream" >&5 +echo $ECHO_N "checking for sstream... $ECHO_C" >&6 +if test "${ac_cv_header_sstream+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sstream" >&5 +echo "${ECHO_T}$ac_cv_header_sstream" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking sstream usability" >&5 +echo $ECHO_N "checking sstream usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking sstream presence" >&5 +echo $ECHO_N "checking sstream presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: sstream: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: sstream: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: sstream: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: sstream: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: sstream: present but cannot be compiled" >&5 +echo "$as_me: WARNING: sstream: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: sstream: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: sstream: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: sstream: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: sstream: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for sstream" >&5 +echo $ECHO_N "checking for sstream... $ECHO_C" >&6 +if test "${ac_cv_header_sstream+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_sstream=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sstream" >&5 +echo "${ECHO_T}$ac_cv_header_sstream" >&6 + +fi +if test $ac_cv_header_sstream = yes; then + : +else + { echo "$as_me:$LINENO: using replacement sstream from compatlib/" >&5 +echo "$as_me: using replacement sstream from compatlib/" >&6;} + CXXFLAGS="$CXXFLAGS -Icompatlib/" +fi + + + + + test "x$prefix" = xNONE && prefix="$ac_default_prefix" + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + ac_define_dir=`eval echo $datadir` + ac_define_dir=`eval echo $ac_define_dir` + +cat >>confdefs.h <<_ACEOF +#define DATADIR "$ac_define_dir" +_ACEOF + + + + +echo "$as_me:$LINENO: checking for gzopen in -lz" >&5 +echo $ECHO_N "checking for gzopen in -lz... $ECHO_C" >&6 +if test "${ac_cv_lib_z_gzopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gzopen (); +int +main () +{ +gzopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_z_gzopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_z_gzopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzopen" >&5 +echo "${ECHO_T}$ac_cv_lib_z_gzopen" >&6 +if test $ac_cv_lib_z_gzopen = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +fi + + +ConstruoTargets="" + +if test -n "$X_DISPLAY_MISSING"; then + echo "" + echo "### Error: Couldn't find X11 header files, probally x11-devel packages" + echo "### not installed?" + echo "" +else + ConstruoTargets="$ConstruoTargets construo.x11" + x11_LIBS="$x11_LIBS $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11" + x11_CXXFLAGS="$CXXFLAGS $X_CFLAGS" +fi + +echo "$as_me:$LINENO: checking for XMissingExtension in -lXext" >&5 +echo $ECHO_N "checking for XMissingExtension in -lXext... $ECHO_C" >&6 +if test "${ac_cv_lib_Xext_XMissingExtension+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXext $x11_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XMissingExtension (); +int +main () +{ +XMissingExtension (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xext_XMissingExtension=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_Xext_XMissingExtension=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XMissingExtension" >&5 +echo "${ECHO_T}$ac_cv_lib_Xext_XMissingExtension" >&6 +if test $ac_cv_lib_Xext_XMissingExtension = yes; then + x11_LIBS="$x11_LIBS -lXext" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBXEXT 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for XF86VidModeSwitchToMode in -lXxf86vm" >&5 +echo $ECHO_N "checking for XF86VidModeSwitchToMode in -lXxf86vm... $ECHO_C" >&6 +if test "${ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXxf86vm $x11_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XF86VidModeSwitchToMode (); +int +main () +{ +XF86VidModeSwitchToMode (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" >&5 +echo "${ECHO_T}$ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" >&6 +if test $ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode = yes; then + x11_LIBS="$x11_LIBS -lXxf86vm" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBXXF86VM 1 +_ACEOF + +fi + + + + + +echo "$as_me:$LINENO: checking for glutMainLoop in -lglut" >&5 +echo $ECHO_N "checking for glutMainLoop in -lglut... $ECHO_C" >&6 +if test "${ac_cv_lib_glut_glutMainLoop+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lglut $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char glutMainLoop (); +int +main () +{ +glutMainLoop (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_glut_glutMainLoop=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_glut_glutMainLoop=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_glut_glutMainLoop" >&5 +echo "${ECHO_T}$ac_cv_lib_glut_glutMainLoop" >&6 +if test $ac_cv_lib_glut_glutMainLoop = yes; then + + ConstruoTargets="$ConstruoTargets construo.glut" + glut_LIBS="-lglut" + + +fi + + +echo "$as_me:$LINENO: checking for glutMainLoop in -lfreeglut-1.3" >&5 +echo $ECHO_N "checking for glutMainLoop in -lfreeglut-1.3... $ECHO_C" >&6 +if test "${ac_cv_lib_freeglut_1_3_glutMainLoop+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lfreeglut-1.3 $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char glutMainLoop (); +int +main () +{ +glutMainLoop (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_freeglut_1_3_glutMainLoop=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_freeglut_1_3_glutMainLoop=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_freeglut_1_3_glutMainLoop" >&5 +echo "${ECHO_T}$ac_cv_lib_freeglut_1_3_glutMainLoop" >&6 +if test $ac_cv_lib_freeglut_1_3_glutMainLoop = yes; then + + ConstruoTargets="$ConstruoTargets construo.freeglut" + freeglut_LIBS="-lfreeglut-1.3" + + +fi + + +if test -z "$ConstruoTargets"; then + echo "" + echo "ERROR: Neither X11 nor Glut could be detected, so Construo is not" + echo "ERROR: buildable. You might need to install the -devel packages for" + echo "ERROR: the libraries or check what else could have gone wrong." + echo "ERROR: The file 'config.log' contains more details on the runed libary" + echo "ERROR: checks and might help you to figure out what went wrong." + echo "" + exit 1 +fi + + + + ac_config_files="$ac_config_files Makefile examples/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by construo $as_me 0.2.2, which was +generated by GNU Autoconf 2.57. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +construo config.status 0.2.2 +configured by $0, generated by GNU Autoconf 2.57, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@AMTAR@,$AMTAR,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@CPP@,$CPP,;t t +s,@X_CFLAGS@,$X_CFLAGS,;t t +s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t +s,@X_LIBS@,$X_LIBS,;t t +s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@EGREP@,$EGREP,;t t +s,@x11_LIBS@,$x11_LIBS,;t t +s,@x11_CXXFLAGS@,$x11_CXXFLAGS,;t t +s,@glut_LIBS@,$glut_LIBS,;t t +s,@freeglut_LIBS@,$freeglut_LIBS,;t t +s,@ConstruoTargets@,$ConstruoTargets,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + +echo "" +echo " CXXFLAGS = $CXXFLAGS" +echo " LIBS = $LIBS" +echo " Debugging = $enable_debug" +echo " GProf = $enable_gprof" +echo " FunctionCheck = $enable_fcheck" +echo " Targets =$ConstruoTargets" +echo "" +echo "Now type 'make' and everything should work, if not, write a bug reports to:" +echo "" +echo " Ingo Ruhnke " +echo "" + +# EOF # diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..2eed56a --- /dev/null +++ b/configure.ac @@ -0,0 +1,161 @@ +## Construo - A wire-frame construction game +## Copyright (C) 2002 Ingo Ruhnke +## +## This program is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License +## as published by the Free Software Foundation; either version 2 +## of the License, or (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# init automake/conf +AC_INIT(construo, 0.2.2) +AM_INIT_AUTOMAKE +AC_CONFIG_SRCDIR(construo.hxx) +AM_CONFIG_HEADER(config.h) + +# check for some programs +AC_PROG_CXX +AC_PROG_RANLIB +AC_PROG_INSTALL +AC_PATH_XTRA +AC_LANG(C++) + +AC_MSG_CHECKING([whether we are enabling debug-mode]) +AC_ARG_ENABLE([debug], + AC_HELP_STRING([--enable-debug], + [enable debug support (default: no)]),, + [enable_debug=no]) +AC_MSG_RESULT($enable_debug) + +if test x$enable_debug = xyes; then + AC_DEFINE(DEBUG, 1, [Enable debuging]) + CXXFLAGS="-g -O0 -Wall -Werror" +fi + +AC_MSG_CHECKING([whether we are enabling gprof profiling-support]) +AC_ARG_ENABLE([gprof], + AC_HELP_STRING([--enable-gprof], + [enable gprof profiling (default: no)]),, + [enable_gprof=no]) +AC_MSG_RESULT($enable_gprof) + +if test x$enable_gprof = xyes; then + CXXFLAGS="$CXXFLAGS -pg" +fi + +AC_MSG_CHECKING([whether we are enabling FunctionCheck profiling]) +AC_ARG_ENABLE([fcheck], + AC_HELP_STRING([--enable-fcheck], + [enable fcheck profiling (default: no)]),, + [enable_fcheck=no]) +AC_MSG_RESULT($enable_fcheck) + +if test x$enable_fcheck = xyes; then + CXXFLAGS="`fc-config --cflags`" + LIBS="$LIBS `fc-config --libs`" +fi + +AC_CHECK_HEADER([sstream], + [], + [AC_MSG_NOTICE([using replacement sstream from compatlib/]) + CXXFLAGS="$CXXFLAGS -Icompatlib/"]) + +dnl Checking for the install prefix and then use it to define PINGUS_DATADIR +dnl PINGUS_EXPAND_DIR(pingus_datadir, "$datadir/games/$PACKAGE") +dnl AC_DEFINE_UNQUOTED(PINGUS_DATADIR, "$pingus_datadir", [Location of Pingus data files]) +dnl AC_DEFINE(CONSTRUO_DATADIR, $datadir/games/$PACKAGE, [Location of Construo datafiles]) +AC_DEFINE_DIR(DATADIR, datadir, [Location of datafiles]) + +AC_CHECK_LIB(z, gzopen) + +dnl -------------------------------------- +dnl -- Check for usable Display Targets -- +dnl -------------------------------------- +ConstruoTargets="" + +dnl ------------------- +dnl -- Check for X11 -- +dnl ------------------- +if test -n "$X_DISPLAY_MISSING"; then + echo "" + echo "### Error: Couldn't find X11 header files, probally x11-devel packages" + echo "### not installed?" + echo "" +else + ConstruoTargets="$ConstruoTargets construo.x11" + x11_LIBS="$x11_LIBS $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11" + x11_CXXFLAGS="$CXXFLAGS $X_CFLAGS" +fi + +AC_CHECK_LIB(Xext, XMissingExtension, +[x11_LIBS="$x11_LIBS -lXext" + AC_DEFINE(HAVE_LIBXEXT, 1, [Xext is available])], +[], $x11_LIBS) + +AC_CHECK_LIB(Xxf86vm, XF86VidModeSwitchToMode, +[x11_LIBS="$x11_LIBS -lXxf86vm" + AC_DEFINE(HAVE_LIBXXF86VM, 1, [VidMode is available])], +[], $x11_LIBS) + +AC_SUBST(x11_LIBS) +AC_SUBST(x11_CXXFLAGS) + +dnl -------------------- +dnl -- Check for Glut -- +dnl -------------------- +AC_CHECK_LIB(glut, glutMainLoop, +[ + ConstruoTargets="$ConstruoTargets construo.glut" + AC_SUBST(glut_LIBS,"-lglut") +], +[]) + +dnl ------------------------ +dnl -- Check for FreeGlut -- +dnl ------------------------ +AC_CHECK_LIB(freeglut-1.3, glutMainLoop, +[ + ConstruoTargets="$ConstruoTargets construo.freeglut" + AC_SUBST(freeglut_LIBS,"-lfreeglut-1.3") +dnl echo "Freeglut: " $freeglut_LIBS +], +[]) + +if test -z "$ConstruoTargets"; then + echo "" + echo "ERROR: Neither X11 nor Glut could be detected, so Construo is not" + echo "ERROR: buildable. You might need to install the -devel packages for" + echo "ERROR: the libraries or check what else could have gone wrong." + echo "ERROR: The file 'config.log' contains more details on the runed libary" + echo "ERROR: checks and might help you to figure out what went wrong." + echo "" + exit 1 +fi + +AC_SUBST(ConstruoTargets) + +AC_CONFIG_FILES(Makefile examples/Makefile) +AC_OUTPUT + +echo "" +echo " CXXFLAGS = $CXXFLAGS" +echo " LIBS = $LIBS" +echo " Debugging = $enable_debug" +echo " GProf = $enable_gprof" +echo " FunctionCheck = $enable_fcheck" +echo " Targets =$ConstruoTargets" +echo "" +echo "Now type 'make' and everything should work, if not, write a bug reports to:" +echo "" +echo " Ingo Ruhnke " +echo "" + +# EOF # \ No newline at end of file diff --git a/construo.cxx b/construo.cxx new file mode 100644 index 0000000..d52b5ba --- /dev/null +++ b/construo.cxx @@ -0,0 +1,34 @@ +// $Id: construo.cxx,v 1.8 2003/07/26 00:39:31 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "construo.hxx" + +/* Global variables, mainly the different system components */ + +SystemContext* system_context = 0; +InputContext* input_context = 0; +RootGraphicContext* graphic_context = 0; + +#ifdef CONSTRUO_0_1_0 +const double back_force = 500.0; +const double max_stretch = 0.1f; +#else +#endif + +/* EOF */ diff --git a/construo.hxx b/construo.hxx new file mode 100644 index 0000000..ae7f5cc --- /dev/null +++ b/construo.hxx @@ -0,0 +1,42 @@ +// $Id: construo.hxx,v 1.8 2003/07/26 00:39:31 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_CONSTRUO_HXX +#define HEADER_CONSTRUO_CONSTRUO_HXX + +#include + +#define CONSTRUO_DATADIR DATADIR"/games/"PACKAGE + +class SystemContext; +class InputContext; +class RootGraphicContext; + +/** Global accessor to the system functions */ +extern SystemContext* system_context; + +/** Global accessor to the input functions */ +extern InputContext* input_context; + +/** Global accessor to the graphic device */ +extern RootGraphicContext* graphic_context; + +#endif + +/* EOF */ diff --git a/construo_error.hxx b/construo_error.hxx new file mode 100644 index 0000000..65aadb5 --- /dev/null +++ b/construo_error.hxx @@ -0,0 +1,44 @@ +// $Id: construo_error.hxx,v 1.4 2003/01/08 23:14:59 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_ERROR_HXX +#define HEADER_CONSTRUO_ERROR_HXX + +#include + +#ifndef NODEBUG +# define ConstruoAssert(expr, str) assert(expr && str) +#endif + +class ConstruoError +{ +public: + std::string msg; + + ConstruoError(const std::string& str) + : msg(str) {} + + static void raise(const std::string& str) { + throw ConstruoError (str); + } +}; + +#endif + +/* EOF */ diff --git a/construo_main.cxx b/construo_main.cxx new file mode 100644 index 0000000..444b62e --- /dev/null +++ b/construo_main.cxx @@ -0,0 +1,185 @@ +// $Id: construo_main.cxx,v 1.27 2003/07/28 10:24:00 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include "construo.hxx" +#include "particle.hxx" +#include "config.h" +#include "world.hxx" +#include "path_manager.hxx" +#include "construo_error.hxx" + +#if defined(USE_X11_DISPLAY) +# include "x11_display.hxx" +# include "unix_system.hxx" +#elif defined(USE_GLUT_DISPLAY) +# include "glut_display.hxx" +# include "unix_system.hxx" +#else +# error "No Display target defined!" +#endif + +#include "controller.hxx" +#include "command_line.hxx" +#include "settings.hxx" +#include "gui_manager.hxx" + +#include "construo_main.hxx" + +ConstruoMain* construo_main; +Controller* controller; + +ConstruoMain::ConstruoMain () + : do_quit(false), + gui_manager(0) +{ +} + +ConstruoMain::~ConstruoMain () +{ +} + +char* +ConstruoMain::get_title () +{ + return "Construo " VERSION; +} + +void +ConstruoMain::exit() +{ + on_exit(); + delete gui_manager; + deinit_system(); + ::exit(EXIT_SUCCESS); +} + +void +ConstruoMain::on_exit() +{ + std::cout << "Calling on_exit()" << std::endl; + + //if (!controller->has_been_run()) + { + controller->save_world("/user/laststate.construo"); + } + + std::cout << "\n\n Thank you for playing Construo!\n\n\n" + << " New versions and more information can be found at:\n\n" + << " * http://fs.fsf.org/construo/\n\n" + << " Comments, critique, suggestions self build\n construction and patches can be send to:\n\n" + << " * Ingo Ruhnke \n\n" << std::endl; +} + +void +ConstruoMain::init_system() +{ + std::cout << "ConstruoMain::init_system()" << std::endl; + system = new UnixSystem(); +#ifdef USE_X11_DISPLAY + display = new X11Display(settings.screen_width, settings.screen_height, + settings.fullscreen); +#elif USE_GLUT_DISPLAY + display = new GlutDisplay(settings.screen_width, settings.screen_height, settings.fullscreen); +#else +# error "No display type defined" +#endif + + // Init the display, input systems + graphic_context = display; + input_context = display; + system_context = system; +} + +void +ConstruoMain::deinit_system() +{ + std::cout << "ConstruoMain::deinit_system()" << std::endl; + delete display; + delete system; +} + +int +ConstruoMain::main (int argc, char* argv[]) // FIXME: pass an option class, instead command line arguments +{ + CommandLine::parse(argc, argv); + + try { + // Init the System + init_system(); + + std::cout << PACKAGE_STRING"\n" << std::endl; + std::cout << "If you have throuble with programm startup, delete the file:\n\n" + << " " << system_context->get_construo_rc_path() << "laststate.construo\n" << std::endl; + + if (!settings.datadir.empty()) + path_manager.add_path(settings.datadir); + + path_manager.add_path("."); + path_manager.add_path(".."); + path_manager.add_path(CONSTRUO_DATADIR); + if (!path_manager.find_path("examples/")) + { + std::cout << "Couldn't find Construo Datadir, use '--datadir DIR' to set it manually." << std::endl; + ::exit(EXIT_FAILURE); + } + + gui_manager = new GUIManager (); + + if (!settings.startup_file.empty()) + { + controller = new Controller (settings.startup_file); + } + else + { + try + { + controller = new Controller ("/user/laststate.construo"); + } + catch (ConstruoError& err) + { + std::cout << "ConstruoMain: " << err.msg << std::endl; + controller = new Controller (); + } + } + + // For some targets this will never return + display->run(); + + // Shutdown the system and exit + exit(); + } catch (ConstruoError& err) { + std::cout << "Error ocurred: " << err.msg << std::endl; + return EXIT_FAILURE; + } + + return 0; +} + +//////////////////////// +// Real Main Function // +//////////////////////// +int main (int argc, char** argv) +{ + ConstruoMain app; + construo_main = &app; + return app.main (argc, argv); +} + +/* EOF */ diff --git a/construo_main.hxx b/construo_main.hxx new file mode 100644 index 0000000..61c229f --- /dev/null +++ b/construo_main.hxx @@ -0,0 +1,75 @@ +// $Id: construo_main.hxx,v 1.11 2003/07/25 23:03:52 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef CONSTRUO_HH +#define CONSTRUO_HH + +#include +#include +#include +#include "config.hxx" + +class GUIManager; +class World; +class X11Display; +class GlutDisplay; +class UnixSystem; + +class ConstruoMain +{ +private: +#ifdef USE_X11_DISPLAY + X11Display* display; +#elif USE_GLUT_DISPLAY + GlutDisplay* display; +#endif + UnixSystem* system; + + bool do_quit; + Config config; + GUIManager* gui_manager; +public: + ConstruoMain (); + virtual ~ConstruoMain (); + + char* get_title (); + int main (int argc, char* argv[]); + + /** Exit ConstruoMain and do all stuff necesarry for a clean + shutdown */ + void exit(); +private: + /** Called once the game is going to end, used to do the lastsave + and similar things */ + void on_exit(); + + /** Initialize the graphic context and the system */ + void init_system(); + + /** Shutdown the graphic display and everything else */ + void deinit_system(); + + void process_events (); +}; + +extern ConstruoMain* construo_main; + +#endif + +/* EOF */ diff --git a/controller.cxx b/controller.cxx new file mode 100644 index 0000000..57711bf --- /dev/null +++ b/controller.cxx @@ -0,0 +1,223 @@ +// $Id: controller.cxx,v 1.12 2003/07/27 18:46:11 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "worldview_component.hxx" +#include "construo_error.hxx" +#include "controller.hxx" + +Controller* Controller::instance_ = 0; + +Controller::Controller () +{ + instance_ = this; + running = false; + slow_down = false; + action_cam = false; + hide_dots = false; + world = new World (); +} + +Controller::Controller (const std::string& filename) +{ + instance_ = this; + running = false; + slow_down = false; + action_cam = false; + hide_dots = false; + world = new World (filename); +} + +Controller::~Controller () +{ + instance_ = 0; +} + +void +Controller::load_world (const std::string& filename) +{ + if (world) + undo_world_stack.push_back(world); + + std::cout << "Loading World..." << std::endl; + world = new World (filename); + + WorldViewComponent::instance()->on_world_change(); + + running = false; + std::cout << "Loading World... DONE" << std::endl; +} + +void +Controller::save_world (const std::string& filename) +{ + std::cout << "Saving World..." << std::endl; + world->write_lisp (filename); + std::cout << "Saving World... DONE" << std::endl; +} + + +std::string +Controller::get_slot_filename(int n) +{ + return "/user/" + std::string("quicksave") + char('0' + n) + ".construo"; +} + +void +Controller::save_to_slot (int n) +{ + try { + save_world (get_slot_filename (n)); + } catch (ConstruoError& err) { + std::cout << "Controller: Error: " << err.msg << std::endl; + } +} + +void +Controller::load_from_slot (int n) +{ + try { + load_world (get_slot_filename (n)); + } catch (ConstruoError& err) { + std::cout << "Controller: Error: " << err.msg << std::endl; + } +} + +void +Controller::update () +{ + float delta = delta_manager.getset (); + + if (running) + { + float min_skip; + + if (slow_down) + { + delta /= 50.0f/20.0f; + min_skip = 0.0007f; + } + else + { + delta /= 5.0f/20.0f; + min_skip = 0.02; // 0.02 + } + + float i = 0.0f; + while (i < delta) + { + world->update (min_skip); + i += min_skip; + } + } +} + +void +Controller::start_simulation () +{ + if (!running) + undo_world_stack.push_back(world->duplicate()); + + if (undo_world_stack.size() > 100) + { + // FIXME: shrink stack here + //delete *undo_world_stack.front(); + //std::cout << "Stak + } + + running = !running; +} + +void +Controller::push_undo() +{ + undo_world_stack.push_back(world->duplicate()); +} + +void +Controller::clear_world () +{ + std::cout << "Controller: Clear" << std::endl; + undo_world_stack.push_back(world); + world = new World (); + running = false; +} + +void +Controller::undo () +{ +#ifdef DEBUG + std::cout << "Controller::undo (): undostack: " << undo_world_stack.size() + << " redostack: " << redo_world_stack.size() << std::endl; +#endif + + if (!undo_world_stack.empty()) + { + //delete world; // fixme: memory hole + redo_world_stack.push_back (world); + world = undo_world_stack.back(); + undo_world_stack.pop_back(); + running = false; + } + else + { + std::cout << "Undo stack empty" << std::endl; + } +} + +void +Controller::redo () +{ + if (!redo_world_stack.empty()) + { + undo_world_stack.push_back (world); + world = redo_world_stack.back(); + redo_world_stack.pop_back(); + running = false; + } + else + { + std::cout << "Redo stack empty" << std::endl; + } +} + +void +Controller::set_action_cam(bool a) +{ + action_cam = a; +} + +bool +Controller::get_action_cam() +{ + return action_cam; +} + +void +Controller::set_hide_dots (bool d) +{ + hide_dots = d; +} + +bool +Controller::get_hide_dots () +{ + return hide_dots; +} + +/* EOF */ diff --git a/controller.hxx b/controller.hxx new file mode 100644 index 0000000..0dd1edd --- /dev/null +++ b/controller.hxx @@ -0,0 +1,94 @@ +// $Id: controller.hxx,v 1.6 2003/01/10 20:44:09 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_CONTROLLER_HXX +#define HEADER_CONSTRUO_CONTROLLER_HXX + +#include "world.hxx" +#include "delta_manager.hxx" + +/** Holds all the different World states, handles undo and things like that */ +class Controller +{ +private: + std::vector undo_world_stack; + std::vector redo_world_stack; + + bool running; + bool slow_down; + bool action_cam; + bool hide_dots; + + /** The current active world, don't delete this, delet is handled in + the undo stacks */ + World* world; + + DeltaManager delta_manager; + + static Controller* instance_; +public: + /** Create an empty world workspace */ + Controller (); + Controller (const std::string& filename); + ~Controller (); + + static inline Controller* instance() { return instance_; } + + bool has_been_run () { return world && world->get_has_been_run (); } + + bool is_running () { return running; } + bool slow_down_active () { return slow_down; } + void set_slow_down (bool s) { slow_down = s; } + + void set_action_cam(bool); + bool get_action_cam(); + + void set_hide_dots (bool); + bool get_hide_dots (); + + World* get_world () { assert(world); return world; } + + /** Load a world by name, name is relative to the construo user directory */ + void load_world (const std::string& name); + + /** Save a world by name, name is relative to the construo user directory */ + void save_world (const std::string& name); + + std::string get_slot_filename(int n); + void save_to_slot (int n); + void load_from_slot (int n); + + /** Updates the state of the controller and also the world */ + void update (); + + void clear_world (); + + void undo (); + void redo (); + + /** Push the current world to the undo stack */ + void push_undo(); + + /** start or stops the simulation */ + void start_simulation (); +}; + +#endif + +/* EOF */ diff --git a/cursor_collider.xbm b/cursor_collider.xbm new file mode 100644 index 0000000..3d1d8fa --- /dev/null +++ b/cursor_collider.xbm @@ -0,0 +1,30 @@ +/* Created with The GIMP */ +#define cursor_collider_width 48 +#define cursor_collider_height 48 +#define cursor_collider_x_hot 24 +#define cursor_collider_y_hot 24 +static unsigned char cursor_collider_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0x00, 0x20, 0x02, 0x80, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0xf1, 0xff, 0x3f, 0x00, 0x00, 0x40, 0x11, 0x00, 0x20, + 0x00, 0x00, 0x40, 0x11, 0x00, 0x20, 0x00, 0x00, 0x40, 0x11, 0x00, 0x20, + 0x00, 0x00, 0x40, 0x11, 0x00, 0x20, 0x00, 0x00, 0x40, 0x11, 0x00, 0x20, + 0x00, 0x00, 0x40, 0x11, 0x00, 0x20, 0x00, 0x00, 0x80, 0x10, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/cursor_collider_mask.xbm b/cursor_collider_mask.xbm new file mode 100644 index 0000000..c107c61 --- /dev/null +++ b/cursor_collider_mask.xbm @@ -0,0 +1,30 @@ +/* Created with The GIMP */ +#define cursor_collider_mask_width 48 +#define cursor_collider_mask_height 48 +#define cursor_collider_mask_x_hot 24 +#define cursor_collider_mask_y_hot 24 +static unsigned char cursor_collider_mask_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0xff, 0x3f, 0xfe, 0xff, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0xf1, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xf1, 0xff, 0x3f, + 0x00, 0x00, 0xc0, 0xf1, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xf1, 0xff, 0x3f, + 0x00, 0x00, 0xc0, 0xf1, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xf1, 0xff, 0x3f, + 0x00, 0x00, 0xc0, 0xf1, 0xff, 0x3f, 0x00, 0x00, 0x80, 0xf0, 0xff, 0x3f, + 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, + 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, + 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/cursor_insert.xbm b/cursor_insert.xbm new file mode 100644 index 0000000..3a97241 --- /dev/null +++ b/cursor_insert.xbm @@ -0,0 +1,30 @@ +/* Created with The GIMP */ +#define cursor_insert_width 48 +#define cursor_insert_height 48 +#define cursor_insert_x_hot 24 +#define cursor_insert_y_hot 24 +static unsigned char cursor_insert_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0x00, 0x20, 0x02, 0x80, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/cursor_insert_mask.xbm b/cursor_insert_mask.xbm new file mode 100644 index 0000000..977aeef --- /dev/null +++ b/cursor_insert_mask.xbm @@ -0,0 +1,30 @@ +/* Created with The GIMP */ +#define cursor_insert_mask_width 48 +#define cursor_insert_mask_height 48 +#define cursor_insert_mask_x_hot 24 +#define cursor_insert_mask_y_hot 24 +static unsigned char cursor_insert_mask_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0xff, 0x3f, 0xfe, 0xff, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/cursor_scroll.xbm b/cursor_scroll.xbm new file mode 100644 index 0000000..d75b16c --- /dev/null +++ b/cursor_scroll.xbm @@ -0,0 +1,30 @@ +/* Created with The GIMP */ +#define cursor_scroll_width 48 +#define cursor_scroll_height 48 +#define cursor_scroll_x_hot 24 +#define cursor_scroll_y_hot 24 +static unsigned char cursor_scroll_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x04, 0x20, 0x02, 0x10, 0x00, + 0x00, 0x0a, 0xc0, 0x01, 0x28, 0x00, 0x00, 0xf9, 0x0f, 0xf8, 0x4f, 0x00, + 0x80, 0x00, 0x10, 0x04, 0x80, 0x00, 0x40, 0x00, 0x10, 0x04, 0x00, 0x01, + 0x80, 0x00, 0x10, 0x04, 0x80, 0x00, 0x00, 0xf9, 0x0f, 0xf8, 0x4f, 0x00, + 0x00, 0x0a, 0xc0, 0x01, 0x28, 0x00, 0x00, 0x04, 0x20, 0x02, 0x10, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/cursor_scroll_mask.xbm b/cursor_scroll_mask.xbm new file mode 100644 index 0000000..2bcf55f --- /dev/null +++ b/cursor_scroll_mask.xbm @@ -0,0 +1,30 @@ +/* Created with The GIMP */ +#define cursor_scroll_mask_width 48 +#define cursor_scroll_mask_height 48 +#define cursor_scroll_mask_x_hot 24 +#define cursor_scroll_mask_y_hot 24 +static unsigned char cursor_scroll_mask_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x04, 0xe0, 0x03, 0x10, 0x00, + 0x00, 0x0e, 0xc0, 0x01, 0x38, 0x00, 0x00, 0xff, 0x0f, 0xf8, 0x7f, 0x00, + 0x80, 0xff, 0x1f, 0xfc, 0xff, 0x00, 0xc0, 0xff, 0x1f, 0xfc, 0xff, 0x01, + 0x80, 0xff, 0x1f, 0xfc, 0xff, 0x00, 0x00, 0xff, 0x0f, 0xf8, 0x7f, 0x00, + 0x00, 0x0e, 0xc0, 0x01, 0x38, 0x00, 0x00, 0x04, 0xe0, 0x03, 0x10, 0x00, + 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/cursor_select.xbm b/cursor_select.xbm new file mode 100644 index 0000000..09d311e --- /dev/null +++ b/cursor_select.xbm @@ -0,0 +1,30 @@ +/* Created with The GIMP */ +#define cursor_select_width 48 +#define cursor_select_height 48 +#define cursor_select_x_hot 24 +#define cursor_select_y_hot 24 +static unsigned char cursor_select_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0x00, 0x20, 0x02, 0x80, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x31, 0x33, 0x33, + 0x00, 0x00, 0x40, 0xc9, 0xcc, 0x4c, 0x00, 0x00, 0x40, 0x29, 0x33, 0x53, + 0x00, 0x00, 0x40, 0x11, 0x00, 0x20, 0x00, 0x00, 0x40, 0x11, 0x00, 0x20, + 0x00, 0x00, 0x40, 0x29, 0x00, 0x50, 0x00, 0x00, 0x40, 0x29, 0x00, 0x50, + 0x00, 0x00, 0x40, 0x11, 0x00, 0x20, 0x00, 0x00, 0x80, 0x10, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x28, 0x00, 0x50, 0x00, 0x00, 0x00, 0x28, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x28, 0x33, 0x53, 0x00, 0x00, 0x00, 0xc8, 0xcc, 0x4c, + 0x00, 0x00, 0x00, 0x30, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/cursor_select_mask.xbm b/cursor_select_mask.xbm new file mode 100644 index 0000000..402ac3e --- /dev/null +++ b/cursor_select_mask.xbm @@ -0,0 +1,30 @@ +/* Created with The GIMP */ +#define cursor_select_mask_width 48 +#define cursor_select_mask_height 48 +#define cursor_select_mask_x_hot 24 +#define cursor_select_mask_y_hot 24 +static unsigned char cursor_select_mask_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0xff, 0x3f, 0xfe, 0xff, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x31, 0x33, 0x33, + 0x00, 0x00, 0xc0, 0xf9, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0x39, 0x33, 0x73, + 0x00, 0x00, 0xc0, 0x11, 0x00, 0x20, 0x00, 0x00, 0xc0, 0x11, 0x00, 0x20, + 0x00, 0x00, 0xc0, 0x39, 0x00, 0x70, 0x00, 0x00, 0xc0, 0x39, 0x00, 0x70, + 0x00, 0x00, 0xc0, 0x11, 0x00, 0x20, 0x00, 0x00, 0x80, 0x10, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x38, 0x33, 0x73, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f, + 0x00, 0x00, 0x00, 0x30, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/cursor_zoom.xbm b/cursor_zoom.xbm new file mode 100644 index 0000000..b207097 --- /dev/null +++ b/cursor_zoom.xbm @@ -0,0 +1,30 @@ +/* Created with The GIMP */ +#define cursor_zoom_width 48 +#define cursor_zoom_height 48 +#define cursor_zoom_x_hot 24 +#define cursor_zoom_y_hot 24 +static unsigned char cursor_zoom_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0x00, 0x20, 0x02, 0x80, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x40, 0x81, 0x30, 0x00, + 0x00, 0x00, 0x40, 0x41, 0x2f, 0x00, 0x00, 0x00, 0x40, 0x41, 0x29, 0x00, + 0x00, 0x00, 0x40, 0x41, 0x29, 0x00, 0x00, 0x00, 0x40, 0x41, 0x2f, 0x00, + 0x00, 0x00, 0x40, 0x81, 0x40, 0x00, 0x00, 0x00, 0x40, 0x01, 0x8f, 0x00, + 0x00, 0x00, 0x40, 0x01, 0x10, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/cursor_zoom_mask.xbm b/cursor_zoom_mask.xbm new file mode 100644 index 0000000..920612c --- /dev/null +++ b/cursor_zoom_mask.xbm @@ -0,0 +1,30 @@ +/* Created with The GIMP */ +#define cursor_zoom_mask_width 48 +#define cursor_zoom_mask_height 48 +#define cursor_zoom_mask_x_hot 24 +#define cursor_zoom_mask_y_hot 24 +static unsigned char cursor_zoom_mask_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0xff, 0x3f, 0xfe, 0xff, 0x00, + 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x81, 0x3f, 0x00, + 0x00, 0x00, 0xc0, 0xc1, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xc1, 0x39, 0x00, + 0x00, 0x00, 0xc0, 0xc1, 0x39, 0x00, 0x00, 0x00, 0xc0, 0xc1, 0x3f, 0x00, + 0x00, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xff, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0xf0, 0x01, 0x00, 0x00, 0x80, 0x00, 0xe0, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/cursors.hxx b/cursors.hxx new file mode 100644 index 0000000..07b37b2 --- /dev/null +++ b/cursors.hxx @@ -0,0 +1,36 @@ +// $Id: cursors.hxx,v 1.2 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CURSORS_HXX +#define HEADER_CURSORS_HXX + +/** Different cursor types */ +enum CursorType { + CURSOR_SELECT, + CURSOR_SCROLL, + CURSOR_ZOOM, + CURSOR_INSERT, + CURSOR_ROTATE, + CURSOR_SCALE, + CURSOR_COLLIDER +}; + +#endif + +/* EOF */ diff --git a/delta_manager.hxx b/delta_manager.hxx new file mode 100644 index 0000000..459f368 --- /dev/null +++ b/delta_manager.hxx @@ -0,0 +1,55 @@ +// $Id: delta_manager.hxx,v 1.1 2002/11/20 00:46:11 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_DELTAMANAGER_HXX +#define HEADER_CONSTRUO_DELTAMANAGER_HXX + +#include "construo.hxx" +#include "system_context.hxx" + +class DeltaManager +{ +private: + unsigned int last_time; +public: + DeltaManager () + : last_time (system_context->get_time ()) + {} + + float getset () + { + float ret = get (); + set (); + return ret; + } + + void set () + { + last_time = system_context->get_time (); + } + + float get () + { + return ( system_context->get_time () - last_time) / 1000.0f; + } +}; + +#endif + +/* EOF */ diff --git a/depcomp b/depcomp new file mode 100755 index 0000000..51606f8 --- /dev/null +++ b/depcomp @@ -0,0 +1,464 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. This file always lives in the current directory. + # Also, the AIX compiler puts `$object:' at the start of each line; + # $object doesn't have directory information. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Must come before tru64. + + # Intel's C compiler understands `-MD -MF file'. However + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/events.hxx b/events.hxx new file mode 100644 index 0000000..2a493ff --- /dev/null +++ b/events.hxx @@ -0,0 +1,41 @@ +// $Id: events.hxx,v 1.3 2003/01/07 21:01:42 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_EVENTS_HXX +#define HEADER_CONSTRUO_EVENTS_HXX + +enum { BUTTON_EVENT }; + +struct ButtonEvent +{ + int type; + int id; + bool pressed; +}; + +/** */ +union Event +{ + int type; + ButtonEvent button; +}; + +#endif + +/* EOF */ diff --git a/examples/Makefile.am b/examples/Makefile.am new file mode 100644 index 0000000..9572680 --- /dev/null +++ b/examples/Makefile.am @@ -0,0 +1,22 @@ +## Construo - A wire-frame construction game +## Copyright (C) 2002 Ingo Ruhnke +## +## This program is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License +## as published by the Free Software Foundation; either version 2 +## of the License, or (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +pkgdatadir = $(datadir)/games/@PACKAGE@/examples + +nobase_dist_pkgdata_DATA = *.construo choh/*.construo choh2/*.construo + +# EOF # \ No newline at end of file diff --git a/examples/Makefile.in b/examples/Makefile.in new file mode 100644 index 0000000..b2e2388 --- /dev/null +++ b/examples/Makefile.in @@ -0,0 +1,290 @@ +# Makefile.in generated by automake 1.7.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : + +pkgdatadir = $(datadir)/games/@PACKAGE@/examples +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +ConstruoTargets = @ConstruoTargets@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +freeglut_LIBS = @freeglut_LIBS@ +glut_LIBS = @glut_LIBS@ +host_alias = @host_alias@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +x11_CXXFLAGS = @x11_CXXFLAGS@ +x11_LIBS = @x11_LIBS@ + +nobase_dist_pkgdata_DATA = *.construo choh/*.construo choh2/*.construo +subdir = examples +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DATA = $(nobase_dist_pkgdata_DATA) + +DIST_COMMON = $(nobase_dist_pkgdata_DATA) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +uninstall-info-am: +nobase_dist_pkgdataDATA_INSTALL = $(install_sh_DATA) +install-nobase_dist_pkgdataDATA: $(nobase_dist_pkgdata_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) + @list='$(nobase_dist_pkgdata_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="$$p"; \ + echo " $(nobase_dist_pkgdataDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f"; \ + $(nobase_dist_pkgdataDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f; \ + done + +uninstall-nobase_dist_pkgdataDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_dist_pkgdata_DATA)'; for p in $$list; do \ + f="$$p"; \ + echo " rm -f $(DESTDIR)$(pkgdatadir)/$$f"; \ + rm -f $(DESTDIR)$(pkgdatadir)/$$f; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + $(mkinstalldirs) $(distdir)/choh $(distdir)/choh2 + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-nobase_dist_pkgdataDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-nobase_dist_pkgdataDATA + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-nobase_dist_pkgdataDATA install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am uninstall-info-am \ + uninstall-nobase_dist_pkgdataDATA + + +# EOF # +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/examples/balance.construo b/examples/balance.construo new file mode 100644 index 0000000..c4354a0 --- /dev/null +++ b/examples/balance.construo @@ -0,0 +1,196 @@ +;; Written by construo 0.1.0pre2 +(construo-scene + (particles + (particle (id 1) (pos 253.000000 297.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos 157.000000 347.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 377.000000 592.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #t) (mass 10.000000)) + (particle (id 4) (pos 358.000000 275.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 470.000000 286.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 570.000000 340.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 641.000000 438.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 110.000000 440.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 683.000000 547.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 83.000000 532.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 322.000000 244.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos 415.000000 243.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 346.000000 204.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos 394.000000 204.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 17) (pos 358.000000 161.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 383.000000 161.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos 364.000000 115.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos 383.000000 114.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 366.000000 60.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 384.000000 59.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 338.000000 25.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 25) (pos 416.000000 25.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 319.000000 57.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27) (pos 436.000000 56.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos 294.000000 35.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 466.000000 39.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos 285.000000 63.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos 469.000000 68.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 32) (pos 260.000000 60.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 33) (pos 496.000000 73.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 34) (pos 262.000000 80.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 35) (pos 256.000000 101.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos 245.000000 77.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos 487.000000 98.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos 510.000000 102.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 39) (pos 487.000000 124.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 46) (pos 377.000000 15.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 225) (pos 245.000000 114.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 226) (pos 511.000000 127.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 227) (pos 265.000000 130.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 228) (pos 251.000000 145.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 478) (pos 479.000000 234.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 479) (pos 531.000000 258.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 480) (pos 564.000000 225.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 481) (pos 596.000000 241.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 482) (pos 640.000000 222.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 483) (pos 672.000000 240.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 484) (pos 707.000000 224.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 485) (pos 249.000000 244.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 486) (pos 200.000000 241.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 487) (pos 173.000000 267.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 488) (pos 146.000000 231.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 489) (pos 115.000000 256.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 490) (pos 82.000000 234.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 491) (pos 591.000000 198.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1267) (pos 79.000000 258.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1500) (pos 311.000000 230.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1501) (pos 426.000000 225.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1514) (pos 519.000000 204.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 1) (second 2) (length 108.240471)) + (spring (first 2) (second 3) (length 329.279510)) + (spring (first 3) (second 1) (length 320.001556)) + (spring (first 3) (second 4) (length 317.568878)) + (spring (first 4) (second 1) (length 107.280006)) + (spring (first 4) (second 5) (length 112.538879)) + (spring (first 5) (second 3) (length 319.820251)) + (spring (first 3) (second 6) (length 317.416138)) + (spring (first 6) (second 5) (length 113.648582)) + (spring (first 6) (second 7) (length 121.016525)) + (spring (first 7) (second 3) (length 305.633759)) + (spring (first 3) (second 8) (length 307.234436)) + (spring (first 8) (second 2) (length 104.201729)) + (spring (first 7) (second 9) (length 116.811813)) + (spring (first 9) (second 3) (length 309.291138)) + (spring (first 3) (second 10) (length 300.059998)) + (spring (first 10) (second 8) (length 95.880135)) + (spring (first 1) (second 13) (length 87.005745)) + (spring (first 13) (second 14) (length 93.005379)) + (spring (first 14) (second 5) (length 69.814041)) + (spring (first 14) (second 4) (length 65.368187)) + (spring (first 13) (second 4) (length 47.507893)) + (spring (first 13) (second 15) (length 46.647614)) + (spring (first 15) (second 16) (length 48.000000)) + (spring (first 16) (second 14) (length 44.294468)) + (spring (first 16) (second 13) (length 82.365044)) + (spring (first 15) (second 14) (length 79.259071)) + (spring (first 15) (second 17) (length 44.643028)) + (spring (first 17) (second 18) (length 25.000000)) + (spring (first 18) (second 16) (length 44.384682)) + (spring (first 18) (second 15) (length 56.727417)) + (spring (first 17) (second 16) (length 56.080299)) + (spring (first 17) (second 19) (length 46.389652)) + (spring (first 19) (second 20) (length 19.026299)) + (spring (first 20) (second 18) (length 47.000000)) + (spring (first 20) (second 17) (length 53.235325)) + (spring (first 19) (second 18) (length 49.769470)) + (spring (first 19) (second 21) (length 55.036350)) + (spring (first 21) (second 22) (length 18.027756)) + (spring (first 22) (second 20) (length 55.009090)) + (spring (first 22) (second 19) (length 59.464275)) + (spring (first 21) (second 20) (length 56.612720)) + (spring (first 21) (second 24) (length 44.821869)) + (spring (first 24) (second 25) (length 78.000000)) + (spring (first 25) (second 22) (length 46.690472)) + (spring (first 21) (second 25) (length 61.032780)) + (spring (first 22) (second 24) (length 57.201397)) + (spring (first 21) (second 26) (length 47.095646)) + (spring (first 24) (second 26) (length 37.215588)) + (spring (first 25) (second 27) (length 36.891735)) + (spring (first 27) (second 22) (length 52.086468)) + (spring (first 24) (second 28) (length 45.122055)) + (spring (first 28) (second 26) (length 33.301651)) + (spring (first 25) (second 29) (length 51.923019)) + (spring (first 29) (second 27) (length 34.481880)) + (spring (first 28) (second 30) (length 29.410883)) + (spring (first 30) (second 26) (length 34.525352)) + (spring (first 27) (second 31) (length 35.114101)) + (spring (first 29) (second 31) (length 29.154760)) + (spring (first 28) (second 32) (length 42.201897)) + (spring (first 32) (second 30) (length 25.179358)) + (spring (first 29) (second 33) (length 45.343136)) + (spring (first 33) (second 31) (length 27.459061)) + (spring (first 30) (second 34) (length 28.600698)) + (spring (first 34) (second 32) (length 20.099751)) + (spring (first 34) (second 35) (length 21.840330)) + (spring (first 35) (second 36) (length 26.400757)) + (spring (first 36) (second 32) (length 22.671568)) + (spring (first 36) (second 34) (length 17.262676)) + (spring (first 31) (second 37) (length 34.985710)) + (spring (first 37) (second 33) (length 26.570660)) + (spring (first 33) (second 38) (length 32.202484)) + (spring (first 38) (second 37) (length 23.345236)) + (spring (first 38) (second 39) (length 31.827662)) + (spring (first 39) (second 37) (length 26.000000)) + (spring (first 24) (second 46) (length 40.261642)) + (spring (first 46) (second 25) (length 40.261642)) + (spring (first 46) (second 21) (length 46.324940)) + (spring (first 46) (second 22) (length 44.553337)) + (spring (first 36) (second 225) (length 37.000000)) + (spring (first 225) (second 35) (length 17.029387)) + (spring (first 38) (second 226) (length 25.019993)) + (spring (first 226) (second 39) (length 24.186773)) + (spring (first 35) (second 227) (length 30.364452)) + (spring (first 227) (second 225) (length 25.612497)) + (spring (first 225) (second 228) (length 31.575306)) + (spring (first 228) (second 227) (length 20.518284)) + (spring (first 14) (second 478) (length 64.629715)) + (spring (first 478) (second 5) (length 52.773098)) + (spring (first 478) (second 479) (length 57.271286)) + (spring (first 479) (second 5) (length 67.119293)) + (spring (first 478) (second 480) (length 85.475143)) + (spring (first 480) (second 479) (length 46.669048)) + (spring (first 479) (second 481) (length 67.186310)) + (spring (first 481) (second 480) (length 35.777088)) + (spring (first 480) (second 482) (length 76.059189)) + (spring (first 482) (second 481) (length 47.927029)) + (spring (first 481) (second 483) (length 76.006577)) + (spring (first 483) (second 482) (length 36.715118)) + (spring (first 482) (second 484) (length 67.029846)) + (spring (first 484) (second 483) (length 38.483765)) + (spring (first 13) (second 485) (length 73.000000)) + (spring (first 485) (second 1) (length 53.150730)) + (spring (first 1) (second 486) (length 77.103828)) + (spring (first 486) (second 485) (length 49.091751)) + (spring (first 1) (second 487) (length 85.440041)) + (spring (first 487) (second 486) (length 37.483330)) + (spring (first 487) (second 488) (length 45.000000)) + (spring (first 488) (second 486) (length 54.918121)) + (spring (first 488) (second 489) (length 39.824615)) + (spring (first 489) (second 487) (length 59.033890)) + (spring (first 488) (second 490) (length 64.070274)) + (spring (first 490) (second 489) (length 39.661064)) + (spring (first 482) (second 491) (length 54.561890)) + (spring (first 491) (second 480) (length 38.183765)) + (spring (first 491) (second 481) (length 43.289722)) + (spring (first 490) (second 1267) (length 24.186773)) + (spring (first 489) (second 1267) (length 36.055511)) + (spring (first 485) (second 15) (length 104.923782)) + (spring (first 16) (second 478) (length 90.138779)) + (spring (first 485) (second 1500) (length 63.560993)) + (spring (first 1500) (second 15) (length 43.600460)) + (spring (first 16) (second 1501) (length 38.275318)) + (spring (first 1501) (second 478) (length 53.758720)) + (spring (first 1501) (second 14) (length 21.095022)) + (spring (first 1500) (second 13) (length 17.804493)) + (spring (first 480) (second 1514) (length 49.658836)) + (spring (first 1514) (second 478) (length 50.000000)) + (spring (first 1514) (second 479) (length 55.317268)) + )) + +;; EOF ;; diff --git a/examples/ball.construo b/examples/ball.construo new file mode 100644 index 0000000..89a50da --- /dev/null +++ b/examples/ball.construo @@ -0,0 +1,59 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 2) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 1016) (pos -331.939941 -1994.961914) (velocity 19.985325 -15.025856) (fixed #f) (mass 10.000000)) + (particle (id 1017) (pos -385.768097 -1896.182251) (velocity -8.862463 8.647383) (fixed #f) (mass 10.000000)) + (particle (id 1018) (pos -383.628204 -1794.531982) (velocity -36.872738 -23.757597) (fixed #f) (mass 10.000000)) + (particle (id 1019) (pos -313.628876 -1717.249878) (velocity -33.084797 -24.359417) (fixed #f) (mass 10.000000)) + (particle (id 1020) (pos -206.125336 -1711.198608) (velocity -32.500542 27.872414) (fixed #f) (mass 10.000000)) + (particle (id 1021) (pos -91.409515 -1777.984009) (velocity -46.490170 47.307480) (fixed #f) (mass 10.000000)) + (particle (id 1022) (pos -16.609369 -1899.423706) (velocity -3.330663 72.921959) (fixed #f) (mass 10.000000)) + (particle (id 1023) (pos -43.030724 -2019.234375) (velocity 45.178581 94.440323) (fixed #f) (mass 10.000000)) + (particle (id 1024) (pos -130.062576 -2092.860352) (velocity 56.545937 62.591736) (fixed #f) (mass 10.000000)) + (particle (id 1025) (pos -234.432220 -2075.407959) (velocity 39.013985 -14.731699) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 1016) (second 1017) (length 112.493965)) + (spring (first 1017) (second 1018) (length 101.672791)) + (spring (first 1018) (second 1019) (length 104.270943)) + (spring (first 1019) (second 1020) (length 107.673714)) + (spring (first 1020) (second 1021) (length 132.740387)) + (spring (first 1021) (second 1022) (length 142.627701)) + (spring (first 1022) (second 1023) (length 122.689384)) + (spring (first 1023) (second 1024) (length 113.997055)) + (spring (first 1024) (second 1025) (length 105.818756)) + (spring (first 1025) (second 1016) (length 126.409340)) + (spring (first 1016) (second 1021) (length 323.935638)) + (spring (first 1016) (second 1022) (length 329.485840)) + (spring (first 1023) (second 1016) (length 289.927032)) + (spring (first 1016) (second 1020) (length 310.404449)) + (spring (first 1016) (second 1019) (length 278.315063)) + (spring (first 1018) (second 1016) (length 206.987518)) + (spring (first 1016) (second 1024) (length 224.362595)) + (spring (first 1025) (second 1021) (length 330.024994)) + (spring (first 1025) (second 1022) (length 280.030792)) + (spring (first 1023) (second 1025) (length 199.474319)) + (spring (first 1024) (second 1022) (length 224.252899)) + (spring (first 1024) (second 1021) (length 317.239929)) + (spring (first 1020) (second 1024) (length 389.167358)) + (spring (first 1024) (second 1019) (length 418.066772)) + (spring (first 1018) (second 1024) (length 391.529480)) + (spring (first 1017) (second 1024) (length 322.595093)) + (spring (first 1021) (second 1019) (length 230.369446)) + (spring (first 1020) (second 1018) (length 196.091095)) + (spring (first 1020) (second 1022) (length 267.104828)) + (spring (first 1020) (second 1023) (length 348.548248)) + (spring (first 1020) (second 1017) (length 257.857452)) + (spring (first 1020) (second 1025) (length 365.307709)) + (spring (first 1021) (second 1017) (length 317.203094)) + (spring (first 1022) (second 1018) (length 381.713379)) + (spring (first 1022) (second 1017) (length 369.172974)) + (spring (first 1019) (second 1023) (length 405.484894)) + (spring (first 1023) (second 1018) (length 408.041443)) + (spring (first 1018) (second 1021) (length 292.686859)) + (spring (first 1022) (second 1019) (length 348.436340)) + )) + +;; EOF ;; diff --git a/examples/basketball.construo b/examples/basketball.construo new file mode 100644 index 0000000..37bbdd3 --- /dev/null +++ b/examples/basketball.construo @@ -0,0 +1,83 @@ +;; Written by construo 0.2.1rc1 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos -7301.110840 286.353058) (velocity -65.250488 -91.976105) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos -7301.110840 316.353058) (velocity -65.250488 -91.976105) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos -7281.110840 336.353058) (velocity -65.250488 -91.976105) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos -7251.110840 336.353058) (velocity -65.250488 -91.976105) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos -7231.110840 316.353058) (velocity -65.250488 -91.976105) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos -7231.110840 286.353058) (velocity -65.250488 -91.976105) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos -7251.110840 266.353058) (velocity -65.250488 -91.976105) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos -7281.110840 266.353058) (velocity -65.250488 -91.976105) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos -7809.750000 500.391510) (velocity -14.583984 -115.348389) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos -7809.750000 530.391541) (velocity -14.583984 -115.348389) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos -7789.750000 550.391663) (velocity -14.583984 -115.348389) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos -7759.750000 550.391663) (velocity -14.583984 -115.348389) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos -7739.750000 530.391541) (velocity -14.583984 -115.348389) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos -7739.750000 500.391510) (velocity -14.583984 -115.348389) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos -7759.750000 480.391510) (velocity -14.583984 -115.348389) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos -7789.750000 480.391510) (velocity -14.583984 -115.348389) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos -6381.952637 347.480774) (velocity -144.705078 -102.689056) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos -6381.952637 377.480774) (velocity -144.705078 -102.689056) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos -6361.952637 397.480774) (velocity -144.705078 -102.689056) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos -6331.952637 397.480774) (velocity -144.705078 -102.689056) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos -6311.952637 377.480774) (velocity -144.705078 -102.689056) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos -6311.952637 347.480774) (velocity -144.705078 -102.689056) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos -6331.952637 327.480774) (velocity -144.705078 -102.689056) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos -6361.952637 327.480774) (velocity -144.705078 -102.689056) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 3) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 4) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 5) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 6) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 0) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 13) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 28.284357) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 16) (length 28.284357) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 12) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 26) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 27) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 28) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 30) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 31) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 24) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 17) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 15) (length 70.000153) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 19) (length 70.000153) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 16) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 2) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 3) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 1) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 5) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 31) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 27) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 25) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 29) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 27) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 26) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 28) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 25) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 -8071.914551 54.657009) (pos2 -8049.846680 325.961731)) + (rect (pos1 -8051.586914 173.898712) (pos2 -8017.835938 190.774124)) + (rect (pos1 -8017.810547 173.356049) (pos2 -8000.935059 261.627502)) + (rect (pos1 -7911.437988 171.974594) (pos2 -7894.562500 265.438416)) + (rect (pos1 -8000.207520 257.161987) (pos2 -7910.637695 276.633606)) + (rect (pos1 -8207.591797 120.196091) (pos2 -8072.588379 144.860153)) + (rect (pos1 -8236.149414 120.196075) (pos2 -8208.889648 614.775513)) + )) + +;; EOF ;; diff --git a/examples/bigthing.construo b/examples/bigthing.construo new file mode 100644 index 0000000..0c696de --- /dev/null +++ b/examples/bigthing.construo @@ -0,0 +1,790 @@ + +(construo-scene + (particles + (particle (id 43304) (pos 165.814 600 0 ) (velocity 0.0295602 -0.173863 0 ) ) + (particle (id 43305) (pos 193.298 561.754 0 ) (velocity -0.666357 0.307867 0 ) ) + (particle (id 43306) (pos 214.043 599.902 0 ) (velocity -0.349162 0.808449 0 ) ) + (particle (id 43307) (pos 249.089 562.048 0 ) (velocity 0.427666 0.540617 0 ) ) + (particle (id 43308) (pos 282.285 600 0 ) (velocity 0.0392189 -0.195403 0 ) ) + (particle (id 43309) (pos 318.739 564.383 0 ) (velocity -1.40143 0.379267 0 ) ) + (particle (id 43310) (pos 347.667 600 0 ) (velocity 0.0134265 -0.0838214 0 ) ) + (particle (id 43311) (pos 379.907 567.176 0 ) (velocity 0.0735036 0.23978 0 ) ) + (particle (id 43312) (pos 399.741 600 0 ) (velocity 0.0289317 -0.405771 0 ) ) + (particle (id 43313) (pos 429.579 572.077 0 ) (velocity -0.66303 -0.560965 0 ) ) + (particle (id 43314) (pos 455.144 596.56 0 ) (velocity 0.426619 -0.88794 0 ) ) + (particle (id 43315) (pos 509.459 600 0 ) (velocity 0.00407085 -0.365626 0 ) ) + (particle (id 43316) (pos 478.504 573.923 0 ) (velocity -0.0822266 -1.59909 0 ) ) + (particle (id 43317) (pos 222.5 520.839 0 ) (velocity -0.196108 0.729194 0 ) ) + (particle (id 43318) (pos 283.815 520.699 0 ) (velocity -0.441568 0.712045 0 ) ) + (particle (id 43319) (pos 343.176 526.924 0 ) (velocity -1.6177 -0.424093 0 ) ) + (particle (id 43320) (pos 402.858 531.094 0 ) (velocity -1.83445 -0.880267 0 ) ) + (particle (id 43321) (pos 462.174 530.535 0 ) (velocity -0.570618 -1.10219 0 ) ) + (particle (id 43322) (pos 259.05 486.761 0 ) (velocity 0.0474441 0.287896 0 ) ) + (particle (id 43323) (pos 315.143 491.623 0 ) (velocity 0.3988 -0.0392815 0 ) ) + (particle (id 43324) (pos 379.62 496.108 0 ) (velocity -1.10265 -0.447233 0 ) ) + (particle (id 43325) (pos 444.156 501.108 0 ) (velocity -1.73283 -1.53803 0 ) ) + (particle (id 43326) (pos 513.414 530.828 0 ) (velocity -0.783448 -1.47433 0 ) ) + (particle (id 43327) (pos 480.359 500.03 0 ) (velocity -1.71305 -2.29723 0 ) ) + (particle (id 43328) (pos 544.85 568.387 0 ) (velocity -0.00517109 -0.0217278 0 ) ) + (particle (id 43329) (pos 569.339 600 0 ) (velocity 0.0243785 -0.0440399 0 ) ) + (particle (id 43330) (pos 296.355 449.597 0 ) (velocity -0.630731 -0.949033 0 ) ) + (particle (id 43331) (pos 348.667 453.529 0 ) (velocity -0.256985 -0.934687 0 ) ) + (particle (id 43332) (pos 406.82 457.81 0 ) (velocity -1.08109 -1.16216 0 ) ) + (particle (id 43333) (pos 457.095 457.098 0 ) (velocity -0.491482 -1.56389 0 ) ) + (particle (id 43334) (pos 324.195 414.827 0 ) (velocity 1.24537 -1.86127 0 ) ) + (particle (id 43335) (pos 381.963 418.155 0 ) (velocity 0.938349 -2.43806 0 ) ) + (particle (id 43336) (pos 427.688 417.302 0 ) (velocity -0.293501 -1.44868 0 ) ) + (particle (id 43337) (pos 407.149 380.563 0 ) (velocity -0.410307 -2.26069 0 ) ) + (particle (id 43338) (pos 350.438 375.367 0 ) (velocity -0.425119 -0.592536 0 ) ) + (particle (id 43339) (pos 379.759 344.619 0 ) (velocity 0.0686457 -3.83636 0 ) ) + (particle (id 43376) (pos 328.597 343.85 0 ) (velocity -2.23408 -1.07127 0 ) ) + (particle (id 43377) (pos 313.359 311.544 0 ) (velocity -0.593103 0.479524 0 ) ) + (particle (id 43378) (pos 364.775 312.049 0 ) (velocity 0.558661 -1.8432 0 ) ) + (particle (id 43379) (pos 283.808 283.718 0 ) (velocity -1.41366 -2.03905 0 ) ) + (particle (id 43380) (pos 337.266 279.824 0 ) (velocity -2.8571 -1.33695 0 ) ) + (particle (id 43381) (pos 260.953 253.991 0 ) (velocity -1.35423 -0.23179 0 ) ) + (particle (id 43382) (pos 313.452 251.745 0 ) (velocity -1.91193 -2.04032 0 ) ) + (particle (id 43383) (pos 266.983 312.393 0 ) (velocity 0.173948 -1.14986 0 ) ) + (particle (id 43384) (pos 230.105 282.819 0 ) (velocity -1.93261 0.909962 0 ) ) + (particle (id 43385) (pos 205.563 256.099 0 ) (velocity -1.2236 0.326934 0 ) ) + (particle (id 43432) (pos 178.215 220.997 0 ) (velocity -2.9409 -0.611479 0 ) ) + (particle (id 43433) (pos 253.445 223.561 0 ) (velocity -4.13696 0.455455 0 ) ) + (particle (id 43434) (pos 290.667 224.958 0 ) (velocity -1.71754 -0.339825 0 ) ) + (particle (id 43435) (pos 156.705 191.201 0 ) (velocity -0.778192 1.86694 0 ) ) + (particle (id 43436) (pos 207.57 189.349 0 ) (velocity -4.72394 1.57676 0 ) ) + (particle (id 43437) (pos 262.31 193.065 0 ) (velocity -4.27671 -2.16641 0 ) ) + (particle (id 43662) (pos 437.745 350.444 0 ) (velocity 0.64648 -2.97962 0 ) ) + (particle (id 43663) (pos 410.331 315.941 0 ) (velocity 0.110437 -3.72596 0 ) ) + (particle (id 43724) (pos 303.467 374.768 0 ) (velocity 0.327575 -0.301937 0 ) ) + (particle (id 43841) (pos 385.745 289.096 0 ) (velocity -1.26947 -2.14121 0 ) ) + (particle (id 44064) (pos 286.417 341.52 0 ) (velocity -0.376276 0.807122 0 ) ) + (particle (id 44065) (pos 134.698 157.142 0 ) (velocity -2.70043 0.701503 0 ) ) + (particle (id 44066) (pos 184.411 159.751 0 ) (velocity -3.5499 2.10604 0 ) ) + (particle (id 44067) (pos 232.177 161.925 0 ) (velocity -1.14778 -0.272815 0 ) ) + (particle (id 44068) (pos 198.714 122.079 0 ) (velocity -2.01143 -0.884693 0 ) ) + (particle (id 44069) (pos 154.958 116.701 0 ) (velocity -4.33464 1.33067 0 ) ) + (particle (id 44070) (pos 109.039 111.962 0 ) (velocity -4.15248 3.49913 0 ) ) + (particle (id 44071) (pos 131.533 77.9221 0 ) (velocity -1.83302 2.37003 0 ) ) + (particle (id 44072) (pos 83.6903 71.6691 0 ) (velocity -1.64506 1.75181 0 ) ) + (particle (id 44152) (pos 199.469 81.2479 0 ) (velocity -1.56822 1.13283 0 ) ) + (particle (id 44153) (pos 231.282 87.3815 0 ) (velocity -6.75737 1.5529 0 ) ) + (particle (id 44154) (pos 252.018 116.992 0 ) (velocity -3.2696 2.21975 0 ) ) + (particle (id 44155) (pos 285.547 88.969 0 ) (velocity -1.35028 1.30229 0 ) ) + (particle (id 44156) (pos 309.069 120.833 0 ) (velocity -6.10308 1.047 0 ) ) + (particle (id 44157) (pos 342.844 91.7067 0 ) (velocity -3.98564 0.637311 0 ) ) + (particle (id 44158) (pos 373.058 124.166 0 ) (velocity -0.813407 2.1099 0 ) ) + (particle (id 44159) (pos 413.974 96.1019 0 ) (velocity -5.06949 1.8793 0 ) ) + (particle (id 44160) (pos 437.668 128.509 0 ) (velocity -2.72472 0.739804 0 ) ) + (particle (id 44161) (pos 470.308 100.777 0 ) (velocity -0.213827 0.714231 0 ) ) + (particle (id 44162) (pos 504.417 129.835 0 ) (velocity -0.932153 1.45382 0 ) ) + (particle (id 44163) (pos 519.661 94.7922 0 ) (velocity -2.55609 2.5722 0 ) ) + (particle (id 44164) (pos 548.321 129.378 0 ) (velocity -3.39773 1.43414 0 ) ) + (particle (id 44165) (pos 570.517 93.2257 0 ) (velocity -3.56924 1.72873 0 ) ) + (particle (id 44166) (pos 592.722 122.331 0 ) (velocity -1.93852 3.37411 0 ) ) + (particle (id 44167) (pos 626.647 121.075 0 ) (velocity -0.250495 5.06717 0 ) ) + (particle (id 44168) (pos 605.425 91.8754 0 ) (velocity -1.58265 2.87755 0 ) ) + (particle (id 44321) (pos 283.824 147.863 0 ) (velocity -3.91159 1.79982 0 ) ) + (particle (id 44498) (pos 318.467 56.3225 0 ) (velocity -2.34082 1.3892 0 ) ) + (particle (id 44499) (pos 373.395 62.2057 0 ) (velocity -2.51787 3.28186 0 ) ) + (particle (id 44500) (pos 265.178 53.0458 0 ) (velocity -3.17763 -0.038897 0 ) ) + (particle (id 44501) (pos 216.927 48.8146 0 ) (velocity -2.99408 0.943976 0 ) ) + (particle (id 44502) (pos 178.681 49.6281 0 ) (velocity -3.41591 0.611357 0 ) ) + (particle (id 44503) (pos 110.114 40.9696 0 ) (velocity -2.10434 1.72484 0 ) ) + (particle (id 44972) (pos 473.394 324.395 0 ) (velocity -2.32553 -1.44286 0 ) ) + (particle (id 44973) (pos 515.396 298.323 0 ) (velocity 0.430082 0.319313 0 ) ) + (particle (id 44974) (pos 563.909 267.208 0 ) (velocity 1.28209 0.199843 0 ) ) + (particle (id 44975) (pos 465.572 288.45 0 ) (velocity 1.29013 -2.14317 0 ) ) + (particle (id 44976) (pos 515.906 259.44 0 ) (velocity 1.54761 -0.922675 0 ) ) + (particle (id 44977) (pos 555.883 234.005 0 ) (velocity 1.46576 1.68435 0 ) ) + (particle (id 44978) (pos 616.821 236.002 0 ) (velocity 4.3276 5.60219 0 ) ) + (particle (id 44979) (pos 600.667 203.688 0 ) (velocity 1.39164 7.07028 0 ) ) + (particle (id 44980) (pos 652.016 204.318 0 ) (velocity 2.87093 2.5227 0 ) ) + (particle (id 44981) (pos 644.869 167.674 0 ) (velocity -0.750517 4.62931 0 ) ) + (particle (id 44982) (pos 683.831 167.401 0 ) (velocity -1.86867 4.1028 0 ) ) + (particle (id 44983) (pos 670.684 127.782 0 ) (velocity -1.89796 1.95116 0 ) ) + (particle (id 44984) (pos 712.875 108.129 0 ) (velocity -2.56604 0.94981 0 ) ) + (particle (id 44985) (pos 673.904 77.4248 0 ) (velocity -3.82308 5.72022 0 ) ) + (particle (id 44986) (pos 685.437 37.0708 0 ) (velocity -2.65211 2.33532 0 ) ) + (particle (id 44987) (pos 642.061 54.4863 0 ) (velocity -2.98042 4.7981 0 ) ) + (particle (id 44988) (pos 621.792 23.3357 0 ) (velocity -2.13126 4.86919 0 ) ) + (particle (id 44989) (pos 602.259 60.9811 0 ) (velocity -2.42617 2.43797 0 ) ) + (particle (id 44990) (pos 569.483 45.408 0 ) (velocity -4.27158 0.181532 0 ) ) + (particle (id 44991) (pos 552.695 73.0491 0 ) (velocity -1.58829 1.36909 0 ) ) + (particle (id 44992) (pos 523.668 53.5096 0 ) (velocity -1.42662 0.869871 0 ) ) + (particle (id 46799) (pos 468.642 362.166 0 ) (velocity -1.81475 -1.90692 0 ) ) + (particle (id 46800) (pos 521.411 332.292 0 ) (velocity 0.523193 0.956331 0 ) ) + (particle (id 46801) (pos 579.7 300.74 0 ) (velocity 0.192241 3.00072 0 ) ) + (particle (id 46802) (pos 612.15 268.887 0 ) (velocity 3.69121 2.84948 0 ) ) + (particle (id 46803) (pos 664.437 233.209 0 ) (velocity 1.83478 5.14882 0 ) ) + (particle (id 46804) (pos 691.881 203.231 0 ) (velocity 1.81837 3.46493 0 ) ) + (particle (id 46805) (pos 717.935 174.037 0 ) (velocity 0.807793 1.56601 0 ) ) + (particle (id 46806) (pos 736.14 143.317 0 ) (velocity 0.136669 1.09937 0 ) ) + (particle (id 47359) (pos 614.789 164.384 0 ) (velocity -0.240833 6.38423 0 ) ) + (particle (id 48486) (pos 530.008 239.86 0 ) (velocity 4.48384 7.41988 0 ) ) + (particle (id 48487) (pos 624.858 192.606 0 ) (velocity 0.0647246 -0.494078 0 ) ) + (particle (id 48488) (pos 67 188 0 ) (velocity 0 0 0 ) ) + (particle (id 48489) (pos 39 209 0 ) (velocity 0 0 0 ) ) + (particle (id 48490) (pos 79 212 0 ) (velocity 0 0 0 ) ) + (particle (id 48491) (pos 113 194 0 ) (velocity 0 0 0 ) ) + (particle (id 48492) (pos 118 223 0 ) (velocity 0 0 0 ) ) + (particle (id 48493) (pos 90 242 0 ) (velocity 0 0 0 ) ) + (particle (id 48494) (pos 62 238 0 ) (velocity 0 0 0 ) ) + (particle (id 48495) (pos 33 236 0 ) (velocity 0 0 0 ) ) + (particle (id 48496) (pos 37 181 0 ) (velocity 0 0 0 ) ) + (particle (id 48497) (pos 94 170 0 ) (velocity 0 0 0 ) ) + (particle (id 48498) (pos 141 212 0 ) (velocity 0 0 0 ) ) + (particle (id 48499) (pos 125 251 0 ) (velocity 0 0 0 ) ) + (particle (id 48500) (pos 77 271 0 ) (velocity 0 0 0 ) ) + (particle (id 50287) (pos 303 191 0 ) (velocity 0 0 0 ) ) + (particle (id 50288) (pos 323 149 0 ) (velocity 0 0 0 ) ) + (particle (id 50289) (pos 343 219 0 ) (velocity 0 0 0 ) ) + (particle (id 50290) (pos 367 247 0 ) (velocity 0 0 0 ) ) + (particle (id 52525) (pos 572 190 0 ) (velocity 0 0 0 ) ) + (particle (id 52526) (pos 576 154 0 ) (velocity 0 0 0 ) ) + (particle (id 52527) (pos 534 161 0 ) (velocity 0 0 0 ) ) + (particle (id 52528) (pos 536 202 0 ) (velocity 0 0 0 ) ) + (particle (id 52971) (pos 464 417 0 ) (velocity 0 0 0 ) ) + (particle (id 54120) (pos 39 268 0 ) (velocity 0 0 0 ) ) + (particle (id 54121) (pos 9 204 0 ) (velocity 0 0 0 ) ) + (particle (id 54122) (pos 58 154 0 ) (velocity 0 0 0 ) ) + (particle (id 54123) (pos 117 286 0 ) (velocity 0 0 0 ) ) + (particle (id 54124) (pos 464 260 0 ) (velocity 0 0 0 ) ) + (particle (id 54125) (pos 406 262 0 ) (velocity 0 0 0 ) ) + (particle (id 54126) (pos 492 230 0 ) (velocity 0 0 0 ) ) + (particle (id 54127) (pos 508 190 0 ) (velocity 0 0 0 ) ) + (particle (id 54128) (pos 490 153 0 ) (velocity 0 0 0 ) ) + (particle (id 54511) (pos 428 64 0 ) (velocity 0 0 0 ) ) + (particle (id 54512) (pos 468 68 0 ) (velocity 0 0 0 ) ) + (particle (id 54513) (pos 463 37 0 ) (velocity 0 0 0 ) ) + (particle (id 54514) (pos 401 36 0 ) (velocity 0 0 0 ) ) + (particle (id 54515) (pos 343 29 0 ) (velocity 0 0 0 ) ) + (particle (id 54516) (pos 300 31 0 ) (velocity 0 0 0 ) ) + (particle (id 54517) (pos 493 37 0 ) (velocity 0 0 0 ) ) + (particle (id 54518) (pos 534 24 0 ) (velocity 0 0 0 ) ) + (particle (id 57427) (pos 145 306 0 ) (velocity 0 0 0 ) ) + (particle (id 57428) (pos 162 269 0 ) (velocity 0 0 0 ) ) + (particle (id 57429) (pos 171 333 0 ) (velocity 0 0 0 ) ) + (particle (id 57430) (pos 181 298 0 ) (velocity 0 0 0 ) ) + (particle (id 61457) (pos 110 146 0 ) (velocity 0 0 0 ) ) + (particle (id 61458) (pos 86 133 0 ) (velocity 0 0 0 ) ) + (particle (id 61459) (pos 57 122 0 ) (velocity 0 0 0 ) ) + (particle (id 61460) (pos 73 95 0 ) (velocity 0 0 0 ) ) + (particle (id 61461) (pos 41 96 0 ) (velocity 0 0 0 ) ) + (particle (id 70259) (pos 183 523 0 ) (velocity 0 0 0 ) ) + (particle (id 70260) (pos 146 553 0 ) (velocity 0 0 0 ) ) + (particle (id 70261) (pos 124 594 0 ) (velocity 0 0 0 ) ) + (particle (id 70262) (pos 104 564 0 ) (velocity 0 0 0 ) ) + (particle (id 70263) (pos 131 532 0 ) (velocity 0 0 0 ) ) + (particle (id 70264) (pos 155 502 0 ) (velocity 0 0 0 ) ) + (particle (id 70265) (pos 105 509 0 ) (velocity 0 0 0 ) ) + (particle (id 70266) (pos 202 503 0 ) (velocity 0 0 0 ) ) + (particle (id 70800) (pos 247 26 0 ) (velocity 0 0 0 ) ) + (particle (id 70801) (pos 197 23 0 ) (velocity 0 0 0 ) ) + (particle (id 70802) (pos 156 23 0 ) (velocity 0 0 0 ) ) + (particle (id 70803) (pos 107 13 0 ) (velocity 0 0 0 ) ) + (particle (id 70804) (pos 83 25 0 ) (velocity 0 0 0 ) ) + (particle (id 70805) (pos 61 53 0 ) (velocity 0 0 0 ) ) + (particle (id 70806) (pos 49 19 0 ) (velocity 0 0 0 ) ) + (particle (id 70807) (pos 76 0 0 ) (velocity 0 0 0 ) ) + (particle (id 76155) (pos 529 503 0 ) (velocity 0 0 0 ) ) + (particle (id 76156) (pos 562 529 0 ) (velocity 0 0 0 ) ) + (particle (id 76157) (pos 579 508 0 ) (velocity 0 0 0 ) ) + (particle (id 76158) (pos 612 532 0 ) (velocity 0 0 0 ) ) + (particle (id 76159) (pos 582 568 0 ) (velocity 0 0 0 ) ) + (particle (id 76160) (pos 613 595 0 ) (velocity 0 0 0 ) ) + (particle (id 76161) (pos 633 571 0 ) (velocity 0 0 0 ) ) + (particle (id 78386) (pos 344 1 0 ) (velocity 0 0 0 ) ) + (particle (id 78387) (pos 566 0 0 ) (velocity 0 0 0 ) ) + (particle (id 79677) (pos 749 105 0 ) (velocity 0 0 0 ) ) + (particle (id 79678) (pos 773 126 0 ) (velocity 0 0 0 ) ) + (particle (id 79679) (pos 797 107 0 ) (velocity 0 0 0 ) ) + (particle (id 79680) (pos 774 78 0 ) (velocity 0 0 0 ) ) + (particle (id 79681) (pos 799 70 0 ) (velocity 0 0 0 ) ) + (particle (id 79682) (pos 731 79 0 ) (velocity 0 0 0 ) ) + (particle (id 81051) (pos 751 50 0 ) (velocity 0 0 0 ) ) + (particle (id 81052) (pos 711 43 0 ) (velocity 0 0 0 ) ) + (particle (id 81053) (pos 786 34 0 ) (velocity 0 0 0 ) ) + (particle (id 82431) (pos 747 24 0 ) (velocity 0 0 0 ) ) + (particle (id 82432) (pos 700 10 0 ) (velocity 0 0 0 ) ) + (particle (id 82433) (pos 663 6 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 43304)(second 43305)) + (spring (first 43305)(second 43306)) + (spring (first 43306)(second 43304)) + (spring (first 43305)(second 43307)) + (spring (first 43307)(second 43306)) + (spring (first 43306)(second 43308)) + (spring (first 43308)(second 43307)) + (spring (first 43307)(second 43309)) + (spring (first 43309)(second 43308)) + (spring (first 43309)(second 43310)) + (spring (first 43310)(second 43308)) + (spring (first 43309)(second 43311)) + (spring (first 43311)(second 43310)) + (spring (first 43311)(second 43312)) + (spring (first 43310)(second 43312)) + (spring (first 43312)(second 43313)) + (spring (first 43313)(second 43311)) + (spring (first 43313)(second 43314)) + (spring (first 43314)(second 43312)) + (spring (first 43314)(second 43315)) + (spring (first 43315)(second 43316)) + (spring (first 43316)(second 43314)) + (spring (first 43313)(second 43316)) + (spring (first 43305)(second 43317)) + (spring (first 43317)(second 43307)) + (spring (first 43307)(second 43318)) + (spring (first 43318)(second 43309)) + (spring (first 43309)(second 43319)) + (spring (first 43319)(second 43311)) + (spring (first 43311)(second 43320)) + (spring (first 43320)(second 43313)) + (spring (first 43320)(second 43321)) + (spring (first 43321)(second 43313)) + (spring (first 43321)(second 43316)) + (spring (first 43320)(second 43319)) + (spring (first 43319)(second 43318)) + (spring (first 43317)(second 43318)) + (spring (first 43317)(second 43322)) + (spring (first 43322)(second 43318)) + (spring (first 43322)(second 43323)) + (spring (first 43323)(second 43318)) + (spring (first 43323)(second 43319)) + (spring (first 43323)(second 43324)) + (spring (first 43324)(second 43319)) + (spring (first 43324)(second 43320)) + (spring (first 43324)(second 43325)) + (spring (first 43325)(second 43320)) + (spring (first 43325)(second 43321)) + (spring (first 43316)(second 43326)) + (spring (first 43326)(second 43321)) + (spring (first 43325)(second 43327)) + (spring (first 43327)(second 43321)) + (spring (first 43327)(second 43326)) + (spring (first 43326)(second 43328)) + (spring (first 43328)(second 43316)) + (spring (first 43328)(second 43329)) + (spring (first 43329)(second 43315)) + (spring (first 43315)(second 43328)) + (spring (first 43322)(second 43330)) + (spring (first 43330)(second 43323)) + (spring (first 43323)(second 43331)) + (spring (first 43331)(second 43324)) + (spring (first 43324)(second 43332)) + (spring (first 43325)(second 43332)) + (spring (first 43332)(second 43331)) + (spring (first 43330)(second 43331)) + (spring (first 43332)(second 43333)) + (spring (first 43333)(second 43325)) + (spring (first 43333)(second 43327)) + (spring (first 43330)(second 43334)) + (spring (first 43334)(second 43331)) + (spring (first 43334)(second 43335)) + (spring (first 43335)(second 43331)) + (spring (first 43335)(second 43332)) + (spring (first 43335)(second 43336)) + (spring (first 43336)(second 43332)) + (spring (first 43336)(second 43333)) + (spring (first 43336)(second 43337)) + (spring (first 43337)(second 43335)) + (spring (first 43335)(second 43338)) + (spring (first 43338)(second 43334)) + (spring (first 43338)(second 43337)) + (spring (first 43337)(second 43339)) + (spring (first 43339)(second 43338)) + (spring (first 43338)(second 43376)) + (spring (first 43376)(second 43339)) + (spring (first 43376)(second 43377)) + (spring (first 43377)(second 43378)) + (spring (first 43378)(second 43376)) + (spring (first 43378)(second 43339)) + (spring (first 43377)(second 43379)) + (spring (first 43379)(second 43380)) + (spring (first 43380)(second 43377)) + (spring (first 43380)(second 43378)) + (spring (first 43379)(second 43381)) + (spring (first 43381)(second 43382)) + (spring (first 43382)(second 43379)) + (spring (first 43382)(second 43380)) + (spring (first 43377)(second 43383)) + (spring (first 43383)(second 43379)) + (spring (first 43383)(second 43384)) + (spring (first 43384)(second 43379)) + (spring (first 43384)(second 43385)) + (spring (first 43385)(second 43381)) + (spring (first 43381)(second 43384)) + (spring (first 43385)(second 43432)) + (spring (first 43432)(second 43433)) + (spring (first 43433)(second 43385)) + (spring (first 43433)(second 43434)) + (spring (first 43434)(second 43381)) + (spring (first 43434)(second 43382)) + (spring (first 43433)(second 43381)) + (spring (first 43432)(second 43435)) + (spring (first 43435)(second 43436)) + (spring (first 43436)(second 43432)) + (spring (first 43436)(second 43433)) + (spring (first 43436)(second 43437)) + (spring (first 43437)(second 43433)) + (spring (first 43437)(second 43434)) + (spring (first 43339)(second 43662)) + (spring (first 43662)(second 43337)) + (spring (first 43378)(second 43663)) + (spring (first 43663)(second 43339)) + (spring (first 43663)(second 43662)) + (spring (first 43334)(second 43724)) + (spring (first 43724)(second 43338)) + (spring (first 43724)(second 43376)) + (spring (first 43380)(second 43841)) + (spring (first 43841)(second 43378)) + (spring (first 43841)(second 43663)) + (spring (first 43376)(second 44064)) + (spring (first 44064)(second 43377)) + (spring (first 43383)(second 44064)) + (spring (first 43724)(second 44064)) + (spring (first 43435)(second 44065)) + (spring (first 44065)(second 44066)) + (spring (first 44066)(second 43435)) + (spring (first 44066)(second 43436)) + (spring (first 44067)(second 43436)) + (spring (first 44067)(second 43437)) + (spring (first 44067)(second 44066)) + (spring (first 44067)(second 44068)) + (spring (first 44068)(second 44066)) + (spring (first 44066)(second 44069)) + (spring (first 44069)(second 44065)) + (spring (first 44065)(second 44070)) + (spring (first 44070)(second 44069)) + (spring (first 44069)(second 44068)) + (spring (first 44069)(second 44071)) + (spring (first 44071)(second 44070)) + (spring (first 44070)(second 44072)) + (spring (first 44072)(second 44071)) + (spring (first 44071)(second 44152)) + (spring (first 44152)(second 44069)) + (spring (first 44152)(second 44068)) + (spring (first 44152)(second 44153)) + (spring (first 44153)(second 44068)) + (spring (first 44153)(second 44154)) + (spring (first 44154)(second 44068)) + (spring (first 44153)(second 44155)) + (spring (first 44155)(second 44154)) + (spring (first 44154)(second 44156)) + (spring (first 44156)(second 44155)) + (spring (first 44155)(second 44157)) + (spring (first 44157)(second 44156)) + (spring (first 44156)(second 44158)) + (spring (first 44158)(second 44157)) + (spring (first 44157)(second 44159)) + (spring (first 44159)(second 44158)) + (spring (first 44158)(second 44160)) + (spring (first 44160)(second 44159)) + (spring (first 44159)(second 44161)) + (spring (first 44161)(second 44160)) + (spring (first 44160)(second 44162)) + (spring (first 44162)(second 44161)) + (spring (first 44161)(second 44163)) + (spring (first 44163)(second 44162)) + (spring (first 44163)(second 44164)) + (spring (first 44164)(second 44162)) + (spring (first 44164)(second 44165)) + (spring (first 44165)(second 44163)) + (spring (first 44165)(second 44166)) + (spring (first 44166)(second 44164)) + (spring (first 44166)(second 44167)) + (spring (first 44168)(second 44167)) + (spring (first 44168)(second 44166)) + (spring (first 44165)(second 44168)) + (spring (first 44067)(second 44154)) + (spring (first 44154)(second 44321)) + (spring (first 44321)(second 44156)) + (spring (first 44321)(second 44067)) + (spring (first 44321)(second 43437)) + (spring (first 44155)(second 44498)) + (spring (first 44498)(second 44157)) + (spring (first 44498)(second 44499)) + (spring (first 44499)(second 44157)) + (spring (first 44499)(second 44159)) + (spring (first 44498)(second 44500)) + (spring (first 44500)(second 44155)) + (spring (first 44500)(second 44153)) + (spring (first 44500)(second 44501)) + (spring (first 44501)(second 44153)) + (spring (first 44501)(second 44152)) + (spring (first 44152)(second 44502)) + (spring (first 44502)(second 44071)) + (spring (first 44071)(second 44503)) + (spring (first 44503)(second 44072)) + (spring (first 44503)(second 44502)) + (spring (first 44502)(second 44501)) + (spring (first 43662)(second 44972)) + (spring (first 44972)(second 43663)) + (spring (first 44972)(second 44973)) + (spring (first 44973)(second 44974)) + (spring (first 44974)(second 44973)) + (spring (first 44972)(second 43663)) + (spring (first 44975)(second 43663)) + (spring (first 44975)(second 44972)) + (spring (first 44975)(second 44973)) + (spring (first 44975)(second 44976)) + (spring (first 44976)(second 44973)) + (spring (first 44976)(second 44974)) + (spring (first 44976)(second 44977)) + (spring (first 44977)(second 44974)) + (spring (first 44977)(second 44978)) + (spring (first 44978)(second 44974)) + (spring (first 44979)(second 44978)) + (spring (first 44979)(second 44980)) + (spring (first 44980)(second 44978)) + (spring (first 44979)(second 44981)) + (spring (first 44981)(second 44980)) + (spring (first 44981)(second 44982)) + (spring (first 44980)(second 44982)) + (spring (first 44981)(second 44983)) + (spring (first 44983)(second 44982)) + (spring (first 44983)(second 44984)) + (spring (first 44984)(second 44982)) + (spring (first 44983)(second 44985)) + (spring (first 44985)(second 44984)) + (spring (first 44984)(second 44986)) + (spring (first 44986)(second 44985)) + (spring (first 44986)(second 44987)) + (spring (first 44987)(second 44985)) + (spring (first 44986)(second 44988)) + (spring (first 44988)(second 44987)) + (spring (first 44987)(second 44989)) + (spring (first 44989)(second 44988)) + (spring (first 44988)(second 44990)) + (spring (first 44990)(second 44989)) + (spring (first 44990)(second 44991)) + (spring (first 44991)(second 44989)) + (spring (first 44991)(second 44165)) + (spring (first 44991)(second 44163)) + (spring (first 44989)(second 44165)) + (spring (first 44989)(second 44168)) + (spring (first 44990)(second 44992)) + (spring (first 44992)(second 44991)) + (spring (first 44992)(second 44163)) + (spring (first 44992)(second 44161)) + (spring (first 44168)(second 44987)) + (spring (first 44168)(second 44985)) + (spring (first 44167)(second 44985)) + (spring (first 44167)(second 44983)) + (spring (first 44981)(second 44167)) + (spring (first 43337)(second 46799)) + (spring (first 46799)(second 43662)) + (spring (first 46799)(second 44972)) + (spring (first 46799)(second 46800)) + (spring (first 46800)(second 44972)) + (spring (first 46800)(second 44973)) + (spring (first 44973)(second 46801)) + (spring (first 46801)(second 46800)) + (spring (first 46801)(second 44974)) + (spring (first 44974)(second 46802)) + (spring (first 46802)(second 46801)) + (spring (first 46802)(second 44978)) + (spring (first 46802)(second 44978)) + (spring (first 46803)(second 44978)) + (spring (first 44978)(second 46803)) + (spring (first 46802)(second 46803)) + (spring (first 46803)(second 44980)) + (spring (first 44980)(second 46804)) + (spring (first 46804)(second 46803)) + (spring (first 46804)(second 44982)) + (spring (first 44982)(second 46805)) + (spring (first 46805)(second 46804)) + (spring (first 46805)(second 46806)) + (spring (first 46806)(second 44983)) + (spring (first 46805)(second 44984)) + (spring (first 44984)(second 46806)) + (spring (first 44982)(second 46806)) + (spring (first 43336)(second 46799)) + (spring (first 44167)(second 47359)) + (spring (first 47359)(second 44981)) + (spring (first 47359)(second 44979)) + (spring (first 43304)(second 44072)) + (spring (first 46806)(second 43329)) + (spring (first 44977)(second 48486)) + (spring (first 44979)(second 48487)) + (spring (first 48488)(second 48489)) + (spring (first 48489)(second 48490)) + (spring (first 48490)(second 48488)) + (spring (first 48488)(second 48491)) + (spring (first 48490)(second 48491)) + (spring (first 48491)(second 48492)) + (spring (first 48492)(second 48490)) + (spring (first 48492)(second 48493)) + (spring (first 48493)(second 48490)) + (spring (first 48493)(second 48494)) + (spring (first 48494)(second 48490)) + (spring (first 48494)(second 48489)) + (spring (first 48494)(second 48495)) + (spring (first 48495)(second 48489)) + (spring (first 48489)(second 48496)) + (spring (first 48496)(second 48488)) + (spring (first 48488)(second 48497)) + (spring (first 48497)(second 48491)) + (spring (first 48491)(second 48498)) + (spring (first 48498)(second 48492)) + (spring (first 48492)(second 48493)) + (spring (first 48493)(second 48499)) + (spring (first 48492)(second 48499)) + (spring (first 48493)(second 48494)) + (spring (first 48500)(second 48494)) + (spring (first 48500)(second 48493)) + (spring (first 48495)(second 48500)) + (spring (first 48500)(second 48499)) + (spring (first 48499)(second 48498)) + (spring (first 48498)(second 48497)) + (spring (first 48497)(second 48496)) + (spring (first 48496)(second 48495)) + (spring (first 48495)(second 48491)) + (spring (first 48488)(second 48499)) + (spring (first 48498)(second 48494)) + (spring (first 48500)(second 48491)) + (spring (first 48496)(second 48490)) + (spring (first 48490)(second 44158)) + (spring (first 48492)(second 44158)) + (spring (first 48494)(second 44158)) + (spring (first 43437)(second 50287)) + (spring (first 50287)(second 44321)) + (spring (first 44321)(second 50288)) + (spring (first 50288)(second 44156)) + (spring (first 50288)(second 44158)) + (spring (first 50288)(second 50287)) + (spring (first 50287)(second 43434)) + (spring (first 50287)(second 43382)) + (spring (first 50287)(second 50289)) + (spring (first 50289)(second 43434)) + (spring (first 50289)(second 43382)) + (spring (first 50289)(second 50290)) + (spring (first 50290)(second 43382)) + (spring (first 50290)(second 43380)) + (spring (first 50290)(second 43841)) + (spring (first 44977)(second 44979)) + (spring (first 44977)(second 52525)) + (spring (first 52525)(second 44979)) + (spring (first 52525)(second 47359)) + (spring (first 47359)(second 44166)) + (spring (first 52525)(second 52526)) + (spring (first 52526)(second 47359)) + (spring (first 52526)(second 44166)) + (spring (first 52526)(second 44164)) + (spring (first 44164)(second 52527)) + (spring (first 52527)(second 52526)) + (spring (first 52527)(second 52525)) + (spring (first 52527)(second 44162)) + (spring (first 52527)(second 52528)) + (spring (first 52528)(second 52525)) + (spring (first 52528)(second 44977)) + (spring (first 52528)(second 44976)) + (spring (first 52971)(second 43336)) + (spring (first 52971)(second 46799)) + (spring (first 52971)(second 43333)) + (spring (first 48495)(second 54120)) + (spring (first 54120)(second 48500)) + (spring (first 48495)(second 48489)) + (spring (first 54121)(second 48495)) + (spring (first 54121)(second 48496)) + (spring (first 48496)(second 54122)) + (spring (first 54122)(second 48497)) + (spring (first 48499)(second 54123)) + (spring (first 54123)(second 48500)) + (spring (first 43841)(second 44975)) + (spring (first 44975)(second 54124)) + (spring (first 54124)(second 44976)) + (spring (first 54124)(second 43663)) + (spring (first 43841)(second 54125)) + (spring (first 54125)(second 44975)) + (spring (first 54125)(second 54124)) + (spring (first 54125)(second 50290)) + (spring (first 54124)(second 54126)) + (spring (first 54126)(second 44976)) + (spring (first 54126)(second 52528)) + (spring (first 54126)(second 54127)) + (spring (first 54127)(second 52528)) + (spring (first 54127)(second 52527)) + (spring (first 54127)(second 44162)) + (spring (first 54128)(second 44160)) + (spring (first 54128)(second 54127)) + (spring (first 54128)(second 44162)) + (spring (first 44499)(second 54511)) + (spring (first 54511)(second 44159)) + (spring (first 54511)(second 44161)) + (spring (first 54511)(second 54512)) + (spring (first 44161)(second 54512)) + (spring (first 54512)(second 44992)) + (spring (first 44992)(second 54513)) + (spring (first 54513)(second 54512)) + (spring (first 54513)(second 54511)) + (spring (first 54511)(second 54514)) + (spring (first 54514)(second 44499)) + (spring (first 44499)(second 54515)) + (spring (first 54515)(second 44498)) + (spring (first 44498)(second 54516)) + (spring (first 54516)(second 44500)) + (spring (first 54516)(second 54515)) + (spring (first 54515)(second 54514)) + (spring (first 54514)(second 54513)) + (spring (first 44992)(second 54518)) + (spring (first 54517)(second 44992)) + (spring (first 54517)(second 54518)) + (spring (first 54518)(second 44990)) + (spring (first 54517)(second 54513)) + (spring (first 54517)(second 54512)) + (spring (first 54123)(second 57427)) + (spring (first 57427)(second 48499)) + (spring (first 48499)(second 57428)) + (spring (first 57428)(second 57427)) + (spring (first 57428)(second 48498)) + (spring (first 57427)(second 57429)) + (spring (first 57429)(second 57428)) + (spring (first 57429)(second 57430)) + (spring (first 57430)(second 57428)) + (spring (first 48499)(second 44158)) + (spring (first 48491)(second 61457)) + (spring (first 61457)(second 48497)) + (spring (first 61457)(second 61458)) + (spring (first 61458)(second 54122)) + (spring (first 61458)(second 48497)) + (spring (first 61458)(second 61459)) + (spring (first 61459)(second 54122)) + (spring (first 61459)(second 61460)) + (spring (first 61460)(second 61458)) + (spring (first 61460)(second 61457)) + (spring (first 61461)(second 61459)) + (spring (first 61460)(second 61461)) + (spring (first 48497)(second 44158)) + (spring (first 48491)(second 44158)) + (spring (first 43724)(second 43330)) + (spring (first 43327)(second 46799)) + (spring (first 43322)(second 44064)) + (spring (first 44158)(second 50290)) + (spring (first 44160)(second 54124)) + (spring (first 50290)(second 44160)) + (spring (first 44158)(second 54124)) + (spring (first 43322)(second 43383)) + (spring (first 43327)(second 46800)) + (spring (first 43305)(second 70259)) + (spring (first 70259)(second 43317)) + (spring (first 70259)(second 70260)) + (spring (first 70260)(second 43305)) + (spring (first 70260)(second 43304)) + (spring (first 70260)(second 70261)) + (spring (first 70261)(second 43304)) + (spring (first 70261)(second 70262)) + (spring (first 70262)(second 70260)) + (spring (first 70262)(second 70263)) + (spring (first 70263)(second 70260)) + (spring (first 70263)(second 70259)) + (spring (first 70263)(second 70264)) + (spring (first 70264)(second 70259)) + (spring (first 70264)(second 70265)) + (spring (first 70265)(second 70263)) + (spring (first 70265)(second 70262)) + (spring (first 70264)(second 70266)) + (spring (first 70266)(second 43317)) + (spring (first 70266)(second 70259)) + (spring (first 70266)(second 43322)) + (spring (first 44500)(second 70800)) + (spring (first 70800)(second 44501)) + (spring (first 70800)(second 54516)) + (spring (first 70800)(second 44501)) + (spring (first 70801)(second 44501)) + (spring (first 70801)(second 70800)) + (spring (first 70801)(second 44502)) + (spring (first 44502)(second 70802)) + (spring (first 70802)(second 44503)) + (spring (first 70802)(second 70801)) + (spring (first 70802)(second 70803)) + (spring (first 70803)(second 44503)) + (spring (first 70803)(second 70804)) + (spring (first 70804)(second 44503)) + (spring (first 70804)(second 44072)) + (spring (first 44072)(second 70805)) + (spring (first 70805)(second 70804)) + (spring (first 70804)(second 70806)) + (spring (first 70806)(second 70805)) + (spring (first 70806)(second 70804)) + (spring (first 70804)(second 70807)) + (spring (first 70806)(second 70807)) + (spring (first 70807)(second 70803)) + (spring (first 43307)(second 43322)) + (spring (first 43327)(second 43316)) + (spring (first 43306)(second 43317)) + (spring (first 43326)(second 43315)) + (spring (first 43314)(second 43321)) + (spring (first 43308)(second 43318)) + (spring (first 43327)(second 76155)) + (spring (first 76155)(second 43326)) + (spring (first 76155)(second 76156)) + (spring (first 76156)(second 43326)) + (spring (first 76156)(second 43328)) + (spring (first 76155)(second 76157)) + (spring (first 76157)(second 76156)) + (spring (first 76157)(second 76158)) + (spring (first 76158)(second 76156)) + (spring (first 76156)(second 76159)) + (spring (first 76159)(second 43328)) + (spring (first 76159)(second 76158)) + (spring (first 76159)(second 43329)) + (spring (first 76159)(second 76160)) + (spring (first 76160)(second 43329)) + (spring (first 76160)(second 76161)) + (spring (first 76161)(second 76159)) + (spring (first 76161)(second 76158)) + (spring (first 76158)(second 76160)) + (spring (first 70802)(second 78386)) + (spring (first 78386)(second 54513)) + (spring (first 54513)(second 78387)) + (spring (first 78387)(second 44986)) + (spring (first 78386)(second 54516)) + (spring (first 78386)(second 54514)) + (spring (first 78387)(second 54518)) + (spring (first 78387)(second 44988)) + (spring (first 78387)(second 44990)) + (spring (first 78386)(second 54515)) + (spring (first 70804)(second 46800)) + (spring (first 44987)(second 43383)) + (spring (first 44984)(second 79677)) + (spring (first 79677)(second 46806)) + (spring (first 46806)(second 79678)) + (spring (first 79678)(second 79677)) + (spring (first 79678)(second 79679)) + (spring (first 79679)(second 79677)) + (spring (first 79677)(second 79680)) + (spring (first 79680)(second 79679)) + (spring (first 79679)(second 79681)) + (spring (first 79681)(second 79680)) + (spring (first 79680)(second 79682)) + (spring (first 79682)(second 79677)) + (spring (first 79682)(second 44984)) + (spring (first 44985)(second 79682)) + (spring (first 79680)(second 81051)) + (spring (first 81051)(second 79682)) + (spring (first 79682)(second 81052)) + (spring (first 81052)(second 44985)) + (spring (first 81052)(second 81051)) + (spring (first 81051)(second 81053)) + (spring (first 81053)(second 79681)) + (spring (first 81053)(second 79680)) + (spring (first 81052)(second 44986)) + (spring (first 81053)(second 82431)) + (spring (first 82431)(second 81051)) + (spring (first 82431)(second 81052)) + (spring (first 82431)(second 82432)) + (spring (first 82432)(second 44986)) + (spring (first 82432)(second 81052)) + (spring (first 82432)(second 82433)) + (spring (first 82433)(second 44988)) + (spring (first 82433)(second 44987)) + (spring (first 82433)(second 44986)) + (spring (first 43309)(second 43323)) + (spring (first 43324)(second 43311)) + (spring (first 43325)(second 43313)) + (spring (first 70265)(second 43322)) + (spring (first 43333)(second 76157)) + (spring (first 43330)(second 70265)) + ) +) diff --git a/examples/borg.construo b/examples/borg.construo new file mode 100644 index 0000000..d894166 --- /dev/null +++ b/examples/borg.construo @@ -0,0 +1,487 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 1308) (pos 2270.895508 -1082.706299) (velocity -241.573975 -1.117572) (fixed #f) (mass 0.100000)) + (particle (id 1309) (pos 2229.418213 -1074.991333) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1310) (pos 2282.951904 -1123.138794) (velocity -241.615646 -1.089452) (fixed #f) (mass 0.100000)) + (particle (id 1311) (pos 2310.962158 -1090.497070) (velocity -241.573181 -1.112855) (fixed #f) (mass 0.100000)) + (particle (id 1312) (pos 2257.503662 -1043.762817) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1313) (pos 2315.659180 -1125.653198) (velocity -241.558289 -1.091620) (fixed #f) (mass 0.100000)) + (particle (id 1314) (pos 2175.140137 -1026.175293) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1315) (pos 2203.299561 -996.360352) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1316) (pos 2290.214111 -1059.731445) (velocity -241.554031 -1.096110) (fixed #f) (mass 0.100000)) + (particle (id 1317) (pos 2247.567627 -1110.141968) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1318) (pos 2324.517822 -1159.170288) (velocity -241.601929 -1.122767) (fixed #f) (mass 0.100000)) + (particle (id 1319) (pos 2354.907715 -1131.359253) (velocity -241.606262 -1.094849) (fixed #f) (mass 0.100000)) + (particle (id 1320) (pos 2332.446289 -1095.022095) (velocity -241.609558 -1.097359) (fixed #f) (mass 0.100000)) + (particle (id 1321) (pos 2289.949463 -1148.258911) (velocity -241.579559 -1.125597) (fixed #f) (mass 0.100000)) + (particle (id 1322) (pos 2349.938965 -1157.822510) (velocity -241.612244 -1.092523) (fixed #f) (mass 0.100000)) + (particle (id 1323) (pos 2161.001953 -986.563599) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1324) (pos 2145.378906 -945.612854) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1325) (pos 2115.287109 -979.071899) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1326) (pos 2363.186768 -1193.938843) (velocity -241.615387 -1.126414) (fixed #f) (mass 0.100000)) + (particle (id 1327) (pos 2383.763672 -1168.064575) (velocity -241.593353 -1.072519) (fixed #f) (mass 0.100000)) + (particle (id 1328) (pos 2414.326172 -1196.890747) (velocity -241.610855 -1.072342) (fixed #f) (mass 0.100000)) + (particle (id 1329) (pos 2388.176514 -1224.477783) (velocity -241.547821 -1.103212) (fixed #f) (mass 0.100000)) + (particle (id 1330) (pos 2383.031738 -1194.303223) (velocity -241.612366 -1.080124) (fixed #f) (mass 0.100000)) + (particle (id 1331) (pos 2395.725586 -1153.268188) (velocity -241.612289 -1.084328) (fixed #f) (mass 0.100000)) + (particle (id 1332) (pos 2349.295410 -1212.378296) (velocity -241.591827 -1.147897) (fixed #f) (mass 0.100000)) + (particle (id 1333) (pos 2205.634277 -1080.500366) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1334) (pos 2264.185791 -1022.873474) (velocity -241.550278 -1.136421) (fixed #f) (mass 0.100000)) + (particle (id 1335) (pos 2425.026123 -1184.993530) (velocity -241.611893 -1.097224) (fixed #f) (mass 0.100000)) + (particle (id 1336) (pos 2228.402100 -1135.942139) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1337) (pos 2308.119141 -1036.830688) (velocity -241.548035 -1.106171) (fixed #f) (mass 0.100000)) + (particle (id 1338) (pos 2372.139404 -1095.747925) (velocity -241.606781 -1.116460) (fixed #f) (mass 0.100000)) + (particle (id 1339) (pos 2286.175049 -1183.864624) (velocity -241.517212 -1.052466) (fixed #f) (mass 0.100000)) + (particle (id 1340) (pos 2117.199463 -921.614258) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1341) (pos 2096.619385 -947.489136) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1342) (pos 2070.740234 -913.456543) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1343) (pos 2084.707520 -896.430603) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1344) (pos 2039.810547 -891.020386) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1345) (pos 2096.743652 -883.046021) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1346) (pos 2057.291748 -926.913696) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1347) (pos 2087.630859 -964.959595) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1348) (pos 2127.672852 -905.481567) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1349) (pos 2142.651367 -1014.444153) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1350) (pos 2185.074951 -959.796875) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1351) (pos 2126.897461 -1024.485229) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1352) (pos 2163.555664 -1061.486938) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1353) (pos 2121.777832 -1048.123779) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1354) (pos 2097.905273 -1011.858215) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1355) (pos 2080.873535 -984.436035) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1356) (pos 2428.612305 -1225.873657) (velocity -241.443054 -1.064488) (fixed #f) (mass 0.100000)) + (particle (id 1357) (pos 2441.406982 -1207.582397) (velocity -241.606857 -1.065223) (fixed #f) (mass 0.100000)) + (particle (id 1358) (pos 2068.417969 -872.147034) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1393) (pos 1895.253784 -1060.028320) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1395) (pos 1864.323120 -1037.593506) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1397) (pos 1881.805908 -1073.486694) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1409) (pos 1892.929077 -1018.718201) (velocity -202.983612 47.119507) (fixed #f) (mass 0.100000)) + (particle (id 1658) (pos 387.040283 -638.452209) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1659) (pos 414.856140 -612.543152) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1660) (pos 387.545929 -583.300232) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1661) (pos 359.016479 -609.909912) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1662) (pos 445.539154 -582.417664) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1663) (pos 473.355042 -556.508606) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1664) (pos 446.044739 -527.265564) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1665) (pos 417.515320 -553.875244) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1666) (pos 332.406799 -581.380615) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1667) (pos 360.222595 -555.471497) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1668) (pos 332.912415 -526.228638) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1669) (pos 304.382935 -552.838318) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1670) (pos 390.217957 -523.218201) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1671) (pos 418.033783 -497.309174) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1672) (pos 390.723511 -468.066254) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1673) (pos 362.194153 -494.675903) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1674) (pos 277.059662 -525.009399) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1675) (pos 304.875549 -499.100311) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1676) (pos 277.565186 -469.857361) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1677) (pos 249.035812 -496.467072) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1678) (pos 335.558563 -468.974823) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1679) (pos 363.374420 -443.065704) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1680) (pos 336.064087 -413.822693) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1681) (pos 307.534668 -440.432404) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1682) (pos 222.426132 -467.937805) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1683) (pos 250.241989 -442.028656) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1684) (pos 222.931686 -412.785706) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1685) (pos 194.402298 -439.395477) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1686) (pos 280.237366 -409.775391) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1687) (pos 308.053192 -383.866333) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1688) (pos 280.742889 -354.623383) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1689) (pos 252.213486 -381.233032) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1690) (pos 510.434082 -522.905762) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1691) (pos 538.249939 -496.996674) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1692) (pos 510.939758 -467.753784) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1693) (pos 482.410339 -494.363434) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1694) (pos 568.932922 -466.871155) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1695) (pos 596.748718 -440.962036) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1696) (pos 569.438538 -411.719086) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1697) (pos 540.909180 -438.328796) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1698) (pos 455.800659 -465.834198) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1699) (pos 483.616486 -439.925079) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1700) (pos 456.306213 -410.682129) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1701) (pos 427.776794 -437.291809) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1702) (pos 513.611816 -407.671814) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1703) (pos 541.427673 -381.762726) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1704) (pos 514.117371 -352.519745) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1705) (pos 485.587952 -379.129425) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1706) (pos 400.453491 -409.463013) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1707) (pos 428.269348 -383.553894) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1708) (pos 400.959106 -354.310944) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1709) (pos 372.429688 -380.920654) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1710) (pos 458.952332 -353.428284) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1711) (pos 486.768158 -327.519257) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1712) (pos 459.457916 -298.276276) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1713) (pos 430.928497 -324.885986) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1714) (pos 345.819946 -352.391296) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1715) (pos 373.635773 -326.482239) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1716) (pos 346.325562 -297.239258) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1717) (pos 317.796112 -323.848999) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1718) (pos 403.631195 -294.228912) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1719) (pos 431.446930 -268.319885) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1720) (pos 404.136719 -239.076920) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1721) (pos 375.607330 -265.686615) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 1309) (second 1310) (length 72.000237)) + (spring (first 1310) (second 1311) (length 43.012283)) + (spring (first 1311) (second 1312) (length 71.006348)) + (spring (first 1312) (second 1309) (length 42.000149)) + (spring (first 1309) (second 1308) (length 42.188702)) + (spring (first 1312) (second 1308) (length 41.181747)) + (spring (first 1310) (second 1308) (length 42.191746)) + (spring (first 1308) (second 1311) (length 40.817062)) + (spring (first 1311) (second 1313) (length 35.468513)) + (spring (first 1313) (second 1310) (length 32.803783)) + (spring (first 1309) (second 1314) (length 73.000793)) + (spring (first 1314) (second 1315) (length 41.010777)) + (spring (first 1315) (second 1312) (length 72.007492)) + (spring (first 1312) (second 1314) (length 84.220375)) + (spring (first 1309) (second 1315) (length 82.855385)) + (spring (first 1312) (second 1316) (length 36.400146)) + (spring (first 1316) (second 1311) (length 37.108021)) + (spring (first 1309) (second 1317) (length 39.559681)) + (spring (first 1317) (second 1310) (length 37.695683)) + (spring (first 1317) (second 1308) (length 36.012581)) + (spring (first 1316) (second 1308) (length 30.017534)) + (spring (first 1310) (second 1318) (length 55.009037)) + (spring (first 1318) (second 1313) (length 34.668011)) + (spring (first 1311) (second 1319) (length 60.007748)) + (spring (first 1319) (second 1313) (length 39.661148)) + (spring (first 1318) (second 1319) (length 41.194653)) + (spring (first 1316) (second 1320) (length 55.036232)) + (spring (first 1320) (second 1319) (length 42.718903)) + (spring (first 1320) (second 1311) (length 21.955494)) + (spring (first 1320) (second 1313) (length 34.929523)) + (spring (first 1317) (second 1321) (length 57.001064)) + (spring (first 1321) (second 1318) (length 36.249546)) + (spring (first 1321) (second 1310) (length 26.076544)) + (spring (first 1321) (second 1313) (length 34.234600)) + (spring (first 1318) (second 1322) (length 25.456846)) + (spring (first 1322) (second 1319) (length 26.925684)) + (spring (first 1322) (second 1313) (length 47.010300)) + (spring (first 1313) (second 1308) (length 62.034042)) + (spring (first 1314) (second 1323) (length 42.059177)) + (spring (first 1323) (second 1315) (length 43.417324)) + (spring (first 1323) (second 1308) (length 146.013733)) + (spring (first 1315) (second 1324) (length 77.007210)) + (spring (first 1324) (second 1325) (length 45.000267)) + (spring (first 1325) (second 1314) (length 76.165047)) + (spring (first 1323) (second 1325) (length 46.324642)) + (spring (first 1323) (second 1324) (length 43.829704)) + (spring (first 1318) (second 1326) (length 52.001343)) + (spring (first 1326) (second 1322) (length 38.469387)) + (spring (first 1322) (second 1327) (length 35.341347)) + (spring (first 1327) (second 1326) (length 33.058838)) + (spring (first 1327) (second 1319) (length 46.689903)) + (spring (first 1327) (second 1328) (length 42.012077)) + (spring (first 1328) (second 1329) (length 38.011173)) + (spring (first 1329) (second 1326) (length 39.460289)) + (spring (first 1326) (second 1330) (length 19.848316)) + (spring (first 1330) (second 1327) (length 26.248854)) + (spring (first 1330) (second 1328) (length 31.401224)) + (spring (first 1330) (second 1329) (length 30.610012)) + (spring (first 1319) (second 1331) (length 46.326019)) + (spring (first 1331) (second 1328) (length 47.422668)) + (spring (first 1331) (second 1327) (length 19.026834)) + (spring (first 1318) (second 1332) (length 58.694302)) + (spring (first 1332) (second 1326) (length 23.086430)) + (spring (first 1332) (second 1329) (length 40.720238)) + (spring (first 1321) (second 1332) (length 87.368401)) + (spring (first 1320) (second 1331) (length 86.005096)) + (spring (first 1314) (second 1333) (length 62.298523)) + (spring (first 1333) (second 1317) (length 51.352024)) + (spring (first 1333) (second 1309) (length 24.413624)) + (spring (first 1315) (second 1334) (length 66.408424)) + (spring (first 1334) (second 1316) (length 45.121872)) + (spring (first 1334) (second 1312) (length 21.932066)) + (spring (first 1331) (second 1335) (length 43.185863)) + (spring (first 1335) (second 1328) (length 16.001022)) + (spring (first 1333) (second 1336) (length 59.934662)) + (spring (first 1336) (second 1317) (length 32.139793)) + (spring (first 1336) (second 1321) (length 62.767673)) + (spring (first 1334) (second 1337) (length 46.097103)) + (spring (first 1337) (second 1316) (length 29.069481)) + (spring (first 1337) (second 1320) (length 63.071785)) + (spring (first 1337) (second 1338) (length 87.004799)) + (spring (first 1338) (second 1331) (length 62.168228)) + (spring (first 1338) (second 1320) (length 39.699753)) + (spring (first 1336) (second 1339) (length 75.061829)) + (spring (first 1339) (second 1332) (length 69.261894)) + (spring (first 1339) (second 1321) (length 35.805210)) + (spring (first 1324) (second 1340) (length 37.013695)) + (spring (first 1340) (second 1341) (length 33.061291)) + (spring (first 1341) (second 1325) (length 36.687260)) + (spring (first 1341) (second 1324) (length 48.795609)) + (spring (first 1340) (second 1325) (length 57.489456)) + (spring (first 1341) (second 1342) (length 42.754505)) + (spring (first 1342) (second 1343) (length 22.021982)) + (spring (first 1343) (second 1340) (length 41.108913)) + (spring (first 1340) (second 1342) (length 47.169994)) + (spring (first 1341) (second 1343) (length 52.429630)) + (spring (first 1344) (second 1342) (length 38.210297)) + (spring (first 1344) (second 1343) (length 45.221771)) + (spring (first 1345) (second 1343) (length 18.000431)) + (spring (first 1345) (second 1340) (length 43.657177)) + (spring (first 1342) (second 1346) (length 19.025162)) + (spring (first 1346) (second 1344) (length 39.923954)) + (spring (first 1346) (second 1341) (length 44.384815)) + (spring (first 1346) (second 1347) (length 48.661606)) + (spring (first 1347) (second 1341) (length 19.647150)) + (spring (first 1347) (second 1325) (length 31.048758)) + (spring (first 1345) (second 1348) (length 38.209541)) + (spring (first 1348) (second 1340) (length 19.234230)) + (spring (first 1348) (second 1324) (length 43.863705)) + (spring (first 1325) (second 1349) (length 44.721348)) + (spring (first 1349) (second 1323) (length 33.377678)) + (spring (first 1349) (second 1314) (length 34.541855)) + (spring (first 1349) (second 1333) (length 91.270317)) + (spring (first 1323) (second 1350) (length 35.999538)) + (spring (first 1350) (second 1324) (length 42.154034)) + (spring (first 1350) (second 1315) (length 40.853691)) + (spring (first 1350) (second 1334) (length 101.178963)) + (spring (first 1347) (second 1349) (length 73.999847)) + (spring (first 1348) (second 1350) (length 79.026283)) + (spring (first 1314) (second 1317) (length 110.887978)) + (spring (first 1315) (second 1316) (length 107.564095)) + (spring (first 1347) (second 1351) (length 71.310356)) + (spring (first 1349) (second 1351) (length 18.681776)) + (spring (first 1352) (second 1351) (length 52.085991)) + (spring (first 1352) (second 1333) (length 46.174885)) + (spring (first 1352) (second 1349) (length 51.478279)) + (spring (first 1351) (second 1333) (length 96.629097)) + (spring (first 1352) (second 1353) (length 43.862984)) + (spring (first 1353) (second 1351) (length 24.186600)) + (spring (first 1353) (second 1354) (length 43.417625)) + (spring (first 1354) (second 1351) (length 31.622593)) + (spring (first 1354) (second 1355) (length 32.280895)) + (spring (first 1355) (second 1347) (length 20.615362)) + (spring (first 1355) (second 1351) (length 61.009342)) + (spring (first 1354) (second 1347) (length 48.010876)) + (spring (first 1329) (second 1356) (length 40.459877)) + (spring (first 1356) (second 1328) (length 32.312576)) + (spring (first 1356) (second 1357) (length 22.322050)) + (spring (first 1357) (second 1335) (length 27.903215)) + (spring (first 1358) (second 1344) (length 34.272263)) + (spring (first 1358) (second 1345) (length 30.350161)) + (spring (first 1343) (second 1358) (length 29.241087)) + (spring (first 1334) (second 1338) (length 130.248489)) + (spring (first 1337) (second 1309) (length 87.464684)) + (spring (first 1395) (second 1393) (length 38.210297)) + (spring (first 1393) (second 1397) (length 19.025593)) + (spring (first 1397) (second 1395) (length 39.924538)) + (spring (first 1409) (second 1395) (length 34.272118)) + (spring (first 1658) (second 1659) (length 38.013172)) + (spring (first 1659) (second 1660) (length 40.012497)) + (spring (first 1660) (second 1661) (length 39.012833)) + (spring (first 1661) (second 1658) (length 40.000000)) + (spring (first 1658) (second 1660) (length 55.154339)) + (spring (first 1659) (second 1661) (length 55.901711)) + (spring (first 1662) (second 1663) (length 38.013187)) + (spring (first 1663) (second 1664) (length 40.012497)) + (spring (first 1664) (second 1665) (length 39.012848)) + (spring (first 1665) (second 1662) (length 40.000000)) + (spring (first 1662) (second 1664) (length 55.154350)) + (spring (first 1663) (second 1665) (length 55.901722)) + (spring (first 1666) (second 1667) (length 38.013203)) + (spring (first 1667) (second 1668) (length 40.012497)) + (spring (first 1668) (second 1669) (length 39.012863)) + (spring (first 1669) (second 1666) (length 40.000000)) + (spring (first 1666) (second 1668) (length 55.154362)) + (spring (first 1667) (second 1669) (length 55.901730)) + (spring (first 1670) (second 1671) (length 38.013187)) + (spring (first 1671) (second 1672) (length 40.012527)) + (spring (first 1672) (second 1673) (length 39.012848)) + (spring (first 1673) (second 1670) (length 40.000031)) + (spring (first 1670) (second 1672) (length 55.154373)) + (spring (first 1671) (second 1673) (length 55.901741)) + (spring (first 1659) (second 1662) (length 42.999939)) + (spring (first 1665) (second 1670) (length 41.048717)) + (spring (first 1670) (second 1667) (length 44.045368)) + (spring (first 1667) (second 1660) (length 38.999939)) + (spring (first 1660) (second 1665) (length 41.999939)) + (spring (first 1664) (second 1671) (length 41.012161)) + (spring (first 1673) (second 1668) (length 43.046425)) + (spring (first 1666) (second 1661) (length 39.012756)) + (spring (first 1661) (second 1667) (length 54.451736)) + (spring (first 1667) (second 1665) (length 57.314919)) + (spring (first 1665) (second 1671) (length 56.568501)) + (spring (first 1664) (second 1670) (length 55.973244)) + (spring (first 1670) (second 1660) (length 60.141350)) + (spring (first 1659) (second 1665) (length 58.728100)) + (spring (first 1662) (second 1660) (length 57.999996)) + (spring (first 1660) (second 1666) (length 55.172485)) + (spring (first 1668) (second 1670) (length 57.384640)) + (spring (first 1667) (second 1673) (length 60.827579)) + (spring (first 1674) (second 1675) (length 38.013187)) + (spring (first 1675) (second 1676) (length 40.012558)) + (spring (first 1676) (second 1677) (length 39.012848)) + (spring (first 1677) (second 1674) (length 40.000061)) + (spring (first 1674) (second 1676) (length 55.154392)) + (spring (first 1675) (second 1677) (length 55.901764)) + (spring (first 1678) (second 1679) (length 38.013187)) + (spring (first 1679) (second 1680) (length 40.012558)) + (spring (first 1680) (second 1681) (length 39.012848)) + (spring (first 1681) (second 1678) (length 40.000061)) + (spring (first 1678) (second 1680) (length 55.154392)) + (spring (first 1679) (second 1681) (length 55.901764)) + (spring (first 1682) (second 1683) (length 38.013187)) + (spring (first 1683) (second 1684) (length 40.012527)) + (spring (first 1684) (second 1685) (length 39.012848)) + (spring (first 1685) (second 1682) (length 40.000031)) + (spring (first 1682) (second 1684) (length 55.154373)) + (spring (first 1683) (second 1685) (length 55.901741)) + (spring (first 1686) (second 1687) (length 38.013187)) + (spring (first 1687) (second 1688) (length 40.012527)) + (spring (first 1688) (second 1689) (length 39.012848)) + (spring (first 1689) (second 1686) (length 40.000031)) + (spring (first 1686) (second 1688) (length 55.154373)) + (spring (first 1687) (second 1689) (length 55.901741)) + (spring (first 1675) (second 1678) (length 42.999969)) + (spring (first 1681) (second 1686) (length 41.048687)) + (spring (first 1686) (second 1683) (length 44.045399)) + (spring (first 1683) (second 1676) (length 38.999939)) + (spring (first 1676) (second 1681) (length 41.999969)) + (spring (first 1680) (second 1687) (length 41.012131)) + (spring (first 1689) (second 1684) (length 43.046455)) + (spring (first 1682) (second 1677) (length 39.012756)) + (spring (first 1677) (second 1683) (length 54.451748)) + (spring (first 1683) (second 1681) (length 57.314922)) + (spring (first 1681) (second 1687) (length 56.568478)) + (spring (first 1680) (second 1686) (length 55.973221)) + (spring (first 1686) (second 1676) (length 60.141369)) + (spring (first 1675) (second 1681) (length 58.728188)) + (spring (first 1678) (second 1676) (length 58.000042)) + (spring (first 1676) (second 1682) (length 55.172474)) + (spring (first 1684) (second 1686) (length 57.384686)) + (spring (first 1683) (second 1689) (length 60.827602)) + (spring (first 1678) (second 1673) (length 37.013542)) + (spring (first 1668) (second 1675) (length 39.012878)) + (spring (first 1674) (second 1669) (length 39.000061)) + (spring (first 1672) (second 1679) (length 37.054043)) + (spring (first 1679) (second 1673) (length 51.623703)) + (spring (first 1675) (second 1669) (length 53.740192)) + (spring (first 1668) (second 1674) (length 55.865974)) + (spring (first 1675) (second 1673) (length 57.489120)) + (spring (first 1668) (second 1678) (length 57.314919)) + (spring (first 1678) (second 1672) (length 55.172478)) + (spring (first 1690) (second 1691) (length 38.013157)) + (spring (first 1691) (second 1692) (length 40.012436)) + (spring (first 1692) (second 1693) (length 39.012817)) + (spring (first 1693) (second 1690) (length 39.999939)) + (spring (first 1690) (second 1692) (length 55.154285)) + (spring (first 1691) (second 1693) (length 55.901653)) + (spring (first 1694) (second 1695) (length 38.013187)) + (spring (first 1695) (second 1696) (length 40.012497)) + (spring (first 1696) (second 1697) (length 39.012848)) + (spring (first 1697) (second 1694) (length 40.000000)) + (spring (first 1694) (second 1696) (length 55.154350)) + (spring (first 1695) (second 1697) (length 55.901722)) + (spring (first 1698) (second 1699) (length 38.013187)) + (spring (first 1699) (second 1700) (length 40.012527)) + (spring (first 1700) (second 1701) (length 39.012848)) + (spring (first 1701) (second 1698) (length 40.000031)) + (spring (first 1698) (second 1700) (length 55.154373)) + (spring (first 1699) (second 1701) (length 55.901741)) + (spring (first 1702) (second 1703) (length 38.013187)) + (spring (first 1703) (second 1704) (length 40.012527)) + (spring (first 1704) (second 1705) (length 39.012848)) + (spring (first 1705) (second 1702) (length 40.000031)) + (spring (first 1702) (second 1704) (length 55.154373)) + (spring (first 1703) (second 1705) (length 55.901741)) + (spring (first 1691) (second 1694) (length 42.999939)) + (spring (first 1697) (second 1702) (length 41.048656)) + (spring (first 1702) (second 1699) (length 44.045368)) + (spring (first 1699) (second 1692) (length 38.999939)) + (spring (first 1692) (second 1697) (length 41.999939)) + (spring (first 1696) (second 1703) (length 41.012100)) + (spring (first 1705) (second 1700) (length 43.046425)) + (spring (first 1698) (second 1693) (length 39.012756)) + (spring (first 1693) (second 1699) (length 54.451729)) + (spring (first 1699) (second 1697) (length 57.314877)) + (spring (first 1697) (second 1703) (length 56.568455)) + (spring (first 1696) (second 1702) (length 55.973198)) + (spring (first 1702) (second 1692) (length 60.141350)) + (spring (first 1691) (second 1697) (length 58.728100)) + (spring (first 1694) (second 1692) (length 57.999954)) + (spring (first 1692) (second 1698) (length 55.172474)) + (spring (first 1700) (second 1702) (length 57.384663)) + (spring (first 1699) (second 1705) (length 60.827579)) + (spring (first 1706) (second 1707) (length 38.013187)) + (spring (first 1707) (second 1708) (length 40.012527)) + (spring (first 1708) (second 1709) (length 39.012848)) + (spring (first 1709) (second 1706) (length 40.000031)) + (spring (first 1706) (second 1708) (length 55.154373)) + (spring (first 1707) (second 1709) (length 55.901741)) + (spring (first 1710) (second 1711) (length 38.013157)) + (spring (first 1711) (second 1712) (length 40.012527)) + (spring (first 1712) (second 1713) (length 39.012817)) + (spring (first 1713) (second 1710) (length 40.000031)) + (spring (first 1710) (second 1712) (length 55.154350)) + (spring (first 1711) (second 1713) (length 55.901722)) + (spring (first 1714) (second 1715) (length 38.013187)) + (spring (first 1715) (second 1716) (length 40.012527)) + (spring (first 1716) (second 1717) (length 39.012848)) + (spring (first 1717) (second 1714) (length 40.000031)) + (spring (first 1714) (second 1716) (length 55.154373)) + (spring (first 1715) (second 1717) (length 55.901741)) + (spring (first 1718) (second 1719) (length 38.013157)) + (spring (first 1719) (second 1720) (length 40.012527)) + (spring (first 1720) (second 1721) (length 39.012817)) + (spring (first 1721) (second 1718) (length 40.000031)) + (spring (first 1718) (second 1720) (length 55.154350)) + (spring (first 1719) (second 1721) (length 55.901722)) + (spring (first 1707) (second 1710) (length 42.999969)) + (spring (first 1713) (second 1718) (length 41.048717)) + (spring (first 1718) (second 1715) (length 44.045399)) + (spring (first 1715) (second 1708) (length 38.999969)) + (spring (first 1708) (second 1713) (length 41.999969)) + (spring (first 1712) (second 1719) (length 41.012161)) + (spring (first 1721) (second 1716) (length 43.046455)) + (spring (first 1714) (second 1709) (length 39.012787)) + (spring (first 1709) (second 1715) (length 54.451771)) + (spring (first 1715) (second 1713) (length 57.314941)) + (spring (first 1713) (second 1719) (length 56.568478)) + (spring (first 1712) (second 1718) (length 55.973225)) + (spring (first 1718) (second 1708) (length 60.141392)) + (spring (first 1707) (second 1713) (length 58.728165)) + (spring (first 1710) (second 1708) (length 58.000019)) + (spring (first 1708) (second 1714) (length 55.172497)) + (spring (first 1716) (second 1718) (length 57.384686)) + (spring (first 1715) (second 1721) (length 60.827602)) + (spring (first 1710) (second 1705) (length 37.013573)) + (spring (first 1700) (second 1707) (length 39.012878)) + (spring (first 1706) (second 1701) (length 39.000061)) + (spring (first 1704) (second 1711) (length 37.054077)) + (spring (first 1711) (second 1705) (length 51.623703)) + (spring (first 1707) (second 1701) (length 53.740181)) + (spring (first 1700) (second 1706) (length 55.865974)) + (spring (first 1707) (second 1705) (length 57.489143)) + (spring (first 1700) (second 1710) (length 57.314919)) + (spring (first 1710) (second 1704) (length 55.172501)) + (spring (first 1663) (second 1690) (length 50.040073)) + (spring (first 1693) (second 1671) (length 64.443871)) + (spring (first 1664) (second 1698) (length 62.201248)) + (spring (first 1698) (second 1672) (length 65.115372)) + (spring (first 1671) (second 1701) (length 60.803009)) + (spring (first 1701) (second 1679) (length 64.660713)) + (spring (first 1688) (second 1717) (length 48.166409)) + (spring (first 1714) (second 1687) (length 49.163025)) + (spring (first 1680) (second 1709) (length 49.040833)) + (spring (first 1679) (second 1706) (length 50.040016)) + (spring (first 1672) (second 1701) (length 48.166443)) + (spring (first 1664) (second 1693) (length 49.040890)) + (spring (first 1663) (second 1693) (length 62.801346)) + (spring (first 1690) (second 1664) (length 64.536842)) + (spring (first 1671) (second 1698) (length 49.163059)) + (spring (first 1672) (second 1706) (length 59.405453)) + (spring (first 1706) (second 1680) (length 64.536873)) + (spring (first 1680) (second 1714) (length 62.201225)) + (spring (first 1714) (second 1688) (length 65.115326)) + (spring (first 1717) (second 1687) (length 60.803001)) + (spring (first 1687) (second 1709) (length 64.443825)) + (spring (first 1709) (second 1679) (length 62.801315)) + )) + +;; EOF ;; diff --git a/examples/bridg4.construo b/examples/bridg4.construo new file mode 100644 index 0000000..73976c4 --- /dev/null +++ b/examples/bridg4.construo @@ -0,0 +1,431 @@ +;; Written by construo 0.2.1rc1 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 1) (pos 970.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 2) (pos 970.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 3) (pos 1000.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 1000.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 1030.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 1030.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 1060.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 1060.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 1090.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 1090.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 1120.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 1120.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 1150.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 1150.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 1180.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 1180.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 1210.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 1210.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 1240.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 1240.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 1270.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 1270.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 1300.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 1300.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos 1330.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 1330.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 1360.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 1360.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 1390.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 1390.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 1420.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 1420.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 43) (pos 1450.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 44) (pos 1450.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 45) (pos 1480.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 46) (pos 1480.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 1510.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 1510.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 1540.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 1540.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 53) (pos 1570.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 1570.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 1600.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 1600.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 1630.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 58) (pos 1630.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 1660.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 1660.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 1690.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 1690.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 1720.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 1720.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 1750.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 1750.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 1780.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 1780.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 1810.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 74) (pos 1810.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 75) (pos 1840.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 76) (pos 1840.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 77) (pos 1870.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 78) (pos 1870.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 79) (pos 1900.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 82) (pos 1900.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 83) (pos 1930.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 84) (pos 1930.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 85) (pos 1960.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 86) (pos 1960.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 87) (pos 1990.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 88) (pos 1990.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 89) (pos 2020.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 90) (pos 2020.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 91) (pos 2050.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 92) (pos 2050.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 93) (pos 2080.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 94) (pos 2080.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 95) (pos 2110.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 96) (pos 2110.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 97) (pos 2140.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 98) (pos 2140.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 99) (pos 2170.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 100) (pos 2170.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 101) (pos 2200.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 102) (pos 2200.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 103) (pos 2230.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 104) (pos 2230.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 105) (pos 2260.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 106) (pos 2260.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 107) (pos 2290.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 108) (pos 2290.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 109) (pos 2320.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 110) (pos 2320.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 111) (pos 2350.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 112) (pos 2350.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 113) (pos 2380.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 114) (pos 2380.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 115) (pos 2410.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 116) (pos 2410.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 117) (pos 2440.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 118) (pos 2440.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 119) (pos 2470.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 120) (pos 2470.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 121) (pos 2500.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 122) (pos 2500.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 123) (pos 2530.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 124) (pos 2530.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 125) (pos 2560.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 126) (pos 2560.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 127) (pos 2590.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 128) (pos 2590.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 129) (pos 2620.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 130) (pos 2620.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 131) (pos 2650.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 132) (pos 2650.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 133) (pos 2680.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 134) (pos 2680.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 135) (pos 2710.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 136) (pos 2710.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 137) (pos 2740.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 138) (pos 2740.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 139) (pos 2770.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 140) (pos 2770.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 141) (pos 2800.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 142) (pos 2800.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 143) (pos 2830.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 144) (pos 2830.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 145) (pos 2860.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 146) (pos 2860.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 148) (pos 1880.000000 -710.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + ) + (springs + (spring (first 1) (second 2) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 3) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 3) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 6) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 3) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 3) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 8) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 13) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 13) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 16) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 19) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 22) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 25) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 26) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 27) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 27) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 28) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 28) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 32) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 33) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 33) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 34) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 34) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 36) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 37) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 37) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 38) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 38) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 39) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 42) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 43) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 43) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 44) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 44) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 45) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 45) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 46) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 47) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 45) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 45) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 47) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 48) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 48) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 49) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 49) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 52) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 53) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 49) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 49) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 53) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 55) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 57) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 57) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 58) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 58) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 59) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 65) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 67) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 67) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 68) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 68) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 69) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 72) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 74) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 74) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 75) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 75) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 76) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 77) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 75) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 75) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 77) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 78) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 78) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 79) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 79) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 82) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 83) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 79) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 79) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 83) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 84) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 84) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 85) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 85) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 86) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 87) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 85) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 85) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 87) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 88) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 88) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 89) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 90) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 91) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 91) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 92) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 92) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 93) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 94) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 95) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 95) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 96) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 96) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 97) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 98) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 99) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 99) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 100) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 100) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 101) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 102) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 103) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 103) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 105) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 105) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 106) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 107) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 105) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 105) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 107) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 108) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 108) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 109) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 109) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 110) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 111) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 109) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 109) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 111) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 112) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 112) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 113) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 113) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 114) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 115) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 113) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 113) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 115) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 116) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 116) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 117) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 116) (second 117) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 116) (second 118) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 119) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 117) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 117) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 119) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 120) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 120) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 121) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 121) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 122) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 122) (second 123) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 121) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 122) (second 121) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 122) (second 123) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 124) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 122) (second 124) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 125) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 125) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 126) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 127) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 125) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 125) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 127) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 128) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 128) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 129) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 129) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 130) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 131) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 129) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 129) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 131) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 132) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 132) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 133) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 134) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 136) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 136) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 137) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 137) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 138) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 139) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 137) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 137) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 139) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 140) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 140) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 141) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 141) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 142) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 143) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 141) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 141) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 143) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 145) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 145) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 146) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 145) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 148) (length 1027.861816) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 1) (length 961.353210) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 53) (length 438.406219) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 107) (length 514.003906) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 2872.375244 -415.965271) (pos2 3270.108398 46.265171)) + (rect (pos1 367.731110 -405.215698) (pos2 962.539246 100.012894)) + )) + +;; EOF ;; diff --git a/examples/bridge.construo b/examples/bridge.construo new file mode 100644 index 0000000..0a0d3b1 --- /dev/null +++ b/examples/bridge.construo @@ -0,0 +1,161 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 2) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos -295.885010 -55.501011) (velocity 0.000000 0.000000) (fixed #t) (mass 10.000000)) + (particle (id 4) (pos -165.884949 -57.501011) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos -53.884903 -56.501011) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 48.115067 -55.501011) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 163.115097 -55.501011) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos -160.084885 -120.980896) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos -49.084858 -121.980896) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 46.915115 -123.980896) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos 164.915146 -119.980896) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 277.631805 -54.512119) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos 849.631836 -52.512119) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 407.631653 -56.512119) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 25) (pos 519.631653 -55.512119) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 621.631714 -54.512119) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27) (pos 736.631836 -54.512119) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos 413.431702 -119.992004) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 524.431763 -120.992004) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos 620.431763 -122.992004) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos 738.431885 -118.992004) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 32) (pos 1425.231079 -45.712132) (velocity 0.000000 0.000000) (fixed #t) (mass 10.000000)) + (particle (id 33) (pos 983.231201 -49.712132) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 34) (pos 1095.231201 -48.712132) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 35) (pos 1197.231079 -47.712132) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos 1312.231079 -47.712132) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos 989.031250 -113.192017) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos 1100.031250 -114.192017) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 39) (pos 1196.031128 -116.192017) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 40) (pos 1314.031128 -112.192017) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 42) (pos 278.581879 -122.154602) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 43) (pos 858.208862 -118.008301) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 44) (pos 863.968872 -192.888306) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 45) (pos 279.462311 -205.115662) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 47) (pos 468.003174 -204.293335) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 48) (pos 692.643372 -202.853333) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 49) (pos 578.165039 -203.561584) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 50) (pos -35.525227 -183.023544) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 51) (pos 117.114784 -198.863525) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 52) (pos 1088.114990 -180.146103) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 54) (pos 1226.354980 -161.426071) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 55) (pos 585.900940 -292.556854) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 56) (pos 399.967987 -305.171173) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 57) (pos 758.701050 -298.950348) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 60) (pos 584.370361 -376.188019) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 61) (pos 505.170288 -374.747955) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 62) (pos 662.130371 -379.068085) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 4) (second 5) (length 112.004509)) + (spring (first 5) (second 6) (length 102.004868)) + (spring (first 6) (second 7) (length 115.000031)) + (spring (first 0) (second 8) (length 150.762360)) + (spring (first 8) (second 4) (length 63.744305)) + (spring (first 8) (second 9) (length 111.004532)) + (spring (first 9) (second 5) (length 65.655586)) + (spring (first 10) (second 6) (length 68.490395)) + (spring (first 10) (second 11) (length 118.067810)) + (spring (first 11) (second 7) (length 64.505005)) + (spring (first 8) (second 5) (length 124.242065)) + (spring (first 11) (second 6) (length 133.416321)) + (spring (first 9) (second 6) (length 117.759926)) + (spring (first 10) (second 5) (length 121.302017)) + (spring (first 0) (second 4) (length 130.015442)) + (spring (first 9) (second 10) (length 96.020805)) + (spring (first 24) (second 25) (length 112.004463)) + (spring (first 25) (second 26) (length 102.004959)) + (spring (first 26) (second 27) (length 115.000122)) + (spring (first 27) (second 23) (length 113.017700)) + (spring (first 22) (second 28) (length 150.762161)) + (spring (first 28) (second 24) (length 63.744305)) + (spring (first 28) (second 29) (length 111.004562)) + (spring (first 29) (second 25) (length 65.655586)) + (spring (first 30) (second 26) (length 68.490395)) + (spring (first 30) (second 31) (length 118.067902)) + (spring (first 31) (second 27) (length 64.505005)) + (spring (first 31) (second 23) (length 129.556961)) + (spring (first 28) (second 25) (length 124.242043)) + (spring (first 31) (second 26) (length 133.416397)) + (spring (first 29) (second 26) (length 117.759949)) + (spring (first 30) (second 25) (length 121.302094)) + (spring (first 22) (second 24) (length 130.015228)) + (spring (first 29) (second 30) (length 96.020828)) + (spring (first 22) (second 11) (length 130.350327)) + (spring (first 7) (second 22) (length 114.520981)) + (spring (first 33) (second 34) (length 112.004463)) + (spring (first 34) (second 35) (length 102.004776)) + (spring (first 35) (second 36) (length 115.000000)) + (spring (first 36) (second 32) (length 113.017700)) + (spring (first 37) (second 33) (length 63.744305)) + (spring (first 37) (second 38) (length 111.004501)) + (spring (first 38) (second 34) (length 65.655586)) + (spring (first 39) (second 35) (length 68.490395)) + (spring (first 39) (second 40) (length 118.067780)) + (spring (first 40) (second 36) (length 64.505005)) + (spring (first 40) (second 32) (length 129.556961)) + (spring (first 37) (second 34) (length 124.242043)) + (spring (first 40) (second 35) (length 133.416290)) + (spring (first 38) (second 35) (length 117.759850)) + (spring (first 39) (second 34) (length 121.301941)) + (spring (first 38) (second 39) (length 96.020706)) + (spring (first 37) (second 23) (length 152.033707)) + (spring (first 23) (second 33) (length 133.628708)) + (spring (first 11) (second 42) (length 113.687515)) + (spring (first 42) (second 28) (length 134.867157)) + (spring (first 42) (second 22) (length 67.649155)) + (spring (first 31) (second 43) (length 119.781013)) + (spring (first 43) (second 37) (length 130.911011)) + (spring (first 43) (second 23) (length 66.055397)) + (spring (first 31) (second 44) (length 145.671539)) + (spring (first 44) (second 43) (length 75.101219)) + (spring (first 44) (second 37) (length 148.297333)) + (spring (first 11) (second 45) (length 142.719940)) + (spring (first 45) (second 42) (length 82.965729)) + (spring (first 45) (second 28) (length 158.725662)) + (spring (first 45) (second 47) (length 188.542664)) + (spring (first 47) (second 29) (length 100.614601)) + (spring (first 30) (second 48) (length 107.667770)) + (spring (first 48) (second 44) (length 171.615067)) + (spring (first 48) (second 31) (length 95.547424)) + (spring (first 47) (second 28) (length 100.422905)) + (spring (first 47) (second 49) (length 110.164299)) + (spring (first 49) (second 48) (length 114.480522)) + (spring (first 49) (second 30) (length 90.983147)) + (spring (first 49) (second 29) (length 98.513962)) + (spring (first 8) (second 50) (length 139.156021)) + (spring (first 50) (second 9) (length 62.530540)) + (spring (first 50) (second 10) (length 101.402390)) + (spring (first 50) (second 51) (length 153.459702)) + (spring (first 51) (second 11) (length 92.235260)) + (spring (first 51) (second 45) (length 162.467865)) + (spring (first 51) (second 10) (length 102.642105)) + (spring (first 44) (second 52) (length 224.508011)) + (spring (first 52) (second 39) (length 125.443283)) + (spring (first 52) (second 54) (length 139.501740)) + (spring (first 54) (second 40) (length 100.553963)) + (spring (first 54) (second 39) (length 54.457836)) + (spring (first 52) (second 37) (length 119.584435)) + (spring (first 52) (second 38) (length 67.021927)) + (spring (first 47) (second 55) (length 147.276382)) + (spring (first 55) (second 49) (length 89.330856)) + (spring (first 55) (second 48) (length 139.429794)) + (spring (first 45) (second 56) (length 156.629257)) + (spring (first 56) (second 55) (length 186.360367)) + (spring (first 55) (second 57) (length 172.918350)) + (spring (first 57) (second 44) (length 149.433838)) + (spring (first 57) (second 48) (length 116.611549)) + (spring (first 56) (second 47) (length 121.676315)) + (spring (first 55) (second 60) (length 83.645172)) + (spring (first 56) (second 61) (length 126.128716)) + (spring (first 61) (second 60) (length 79.213165)) + (spring (first 60) (second 62) (length 77.813324)) + (spring (first 62) (second 57) (length 125.478073)) + (spring (first 62) (second 55) (length 115.304466)) + (spring (first 61) (second 55) (length 115.207703)) + )) + +;; EOF ;; diff --git a/examples/bridge2.construo b/examples/bridge2.construo new file mode 100644 index 0000000..4662fb7 --- /dev/null +++ b/examples/bridge2.construo @@ -0,0 +1,1160 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 3) + (author "Tristan Lietz" "") + (particles + (particle (id 0) (pos 829.389465 310.537201) (velocity 0.191152 -2.044304) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 719.225037 315.982727) (velocity -0.033953 -3.264931) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 681.886597 316.498840) (velocity -0.109650 -3.348233) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 643.118042 315.313934) (velocity -0.170636 -3.226635) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 605.708923 314.497070) (velocity -0.233175 -2.980565) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 790.566711 312.837341) (velocity 0.117826 -2.625142) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 529.917664 311.308990) (velocity -0.326315 -2.137994) (fixed #f) (mass 0.100000)) + (particle (id 10) (pos 455.486694 309.792480) (velocity -0.339187 -1.195488) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos 417.727386 309.972961) (velocity -0.330835 -0.755258) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 379.983521 310.407410) (velocity -0.316029 -0.335543) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 340.784973 311.127777) (velocity -0.290780 0.070855) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 302.983002 313.102509) (velocity -0.259694 0.406472) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 266.668610 314.618744) (velocity -0.232010 0.694667) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 490.393921 309.851227) (velocity -0.345523 -1.615163) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 217.257507 318.983368) (velocity -0.188840 1.049399) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 143.596191 323.115601) (velocity -0.131939 1.471385) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 106.048866 324.547852) (velocity -0.107597 1.617250) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 68.539742 326.856659) (velocity -0.076106 1.707170) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 29.543917 328.273560) (velocity -0.042927 1.716505) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos -7.999347 330.178406) (velocity -0.010538 1.644986) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos -42.719261 330.792328) (velocity 0.025091 1.472711) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 178.249313 320.980865) (velocity -0.161468 1.289366) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 832.475464 340.860382) (velocity -0.283050 -1.993131) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 757.871399 345.159424) (velocity -0.233018 -2.993981) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 719.917847 346.499512) (velocity -0.170992 -3.260582) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 681.924988 346.303406) (velocity -0.096395 -3.333622) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 642.565430 346.044342) (velocity -0.029612 -3.228677) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 604.749023 344.266266) (velocity 0.014271 -2.964403) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos 568.429871 342.948395) (velocity 0.042366 -2.601689) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 792.845032 343.513641) (velocity -0.281680 -2.593699) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos 528.936951 341.345184) (velocity 0.047834 -2.114761) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 455.659241 340.161346) (velocity 0.021852 -1.196462) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 418.211945 340.303986) (velocity 0.011999 -0.762946) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 380.758514 340.779724) (velocity 0.010519 -0.343273) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 341.992462 341.754822) (velocity 0.002943 0.055289) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 304.593201 342.920654) (velocity -0.005769 0.392665) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 268.598877 345.159210) (velocity -0.001121 0.680823) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 490.084808 340.569275) (velocity 0.036925 -1.619003) (fixed #f) (mass 0.100000)) + (particle (id 41) (pos 217.803741 348.900238) (velocity 0.012681 1.044247) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 143.950043 353.057007) (velocity 0.000868 1.469481) (fixed #f) (mass 0.100000)) + (particle (id 43) (pos 106.373009 355.306549) (velocity -0.012249 1.617001) (fixed #f) (mass 0.100000)) + (particle (id 44) (pos 68.745598 356.745728) (velocity -0.037852 1.703822) (fixed #f) (mass 0.100000)) + (particle (id 45) (pos 29.646494 358.804779) (velocity -0.070719 1.717320) (fixed #f) (mass 0.100000)) + (particle (id 46) (pos -8.080373 359.951111) (velocity -0.114019 1.637579) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos -42.159882 361.349762) (velocity -0.163678 1.475170) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 178.755524 351.449127) (velocity 0.012195 1.287542) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos 571.124451 312.385651) (velocity -0.294511 -2.627865) (fixed #f) (mass 0.100000)) + (particle (id 51) (pos 872.671204 307.806732) (velocity 0.251376 -1.312467) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 876.369385 338.502625) (velocity -0.253473 -1.248015) (fixed #f) (mass 0.100000)) + (particle (id 53) (pos 272.560242 596.640015) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 54) (pos 272.896362 563.626892) (velocity 0.010684 0.000144) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 303.072205 564.020996) (velocity 0.010298 0.013605) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 337.394562 565.820496) (velocity 0.004255 0.026638) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 370.248596 564.170288) (velocity 0.000599 0.028851) (fixed #f) (mass 0.100000)) + (particle (id 58) (pos 412.149475 565.260803) (velocity -0.009980 -0.028180) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 450.770477 566.049377) (velocity 0.003743 -0.059913) (fixed #f) (mass 0.100000)) + (particle (id 60) (pos 484.905334 564.901672) (velocity 0.013289 -0.029227) (fixed #f) (mass 0.100000)) + (particle (id 61) (pos 520.759705 563.707581) (velocity 0.019991 -0.002845) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 523.120239 595.200012) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 63) (pos 467.005127 598.627380) (velocity -0.000222 -0.044495) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 432.065277 598.812195) (velocity 0.004702 -0.043538) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 392.980164 599.000000) (velocity 0.002290 -1.786973) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 360.471680 598.889038) (velocity 0.003130 0.026909) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 315.736450 595.918945) (velocity 0.001037 0.020926) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 449.912079 510.029175) (velocity -0.210137 -0.144453) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 448.678070 444.480927) (velocity -0.452798 -0.198633) (fixed #f) (mass 0.100000)) + (particle (id 70) (pos 446.962036 378.762024) (velocity -0.741215 -0.231852) (fixed #f) (mass 0.100000)) + (particle (id 71) (pos 446.025757 300.469727) (velocity -1.102473 -0.246180) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 445.117218 216.134201) (velocity -1.474848 -0.246874) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 445.471130 116.769981) (velocity -1.886886 -0.250666) (fixed #f) (mass 0.100000)) + (particle (id 78) (pos 368.015472 515.475403) (velocity -0.186731 0.089884) (fixed #f) (mass 0.100000)) + (particle (id 79) (pos 368.606384 443.916687) (velocity -0.447638 0.106442) (fixed #f) (mass 0.100000)) + (particle (id 80) (pos 368.293213 377.771271) (velocity -0.736974 0.112117) (fixed #f) (mass 0.100000)) + (particle (id 81) (pos 369.082855 298.807343) (velocity -1.100330 0.094328) (fixed #f) (mass 0.100000)) + (particle (id 82) (pos 371.333740 211.515472) (velocity -1.484976 0.056576) (fixed #f) (mass 0.100000)) + (particle (id 83) (pos 376.667023 113.676987) (velocity -1.897544 0.025418) (fixed #f) (mass 0.100000)) + (particle (id 85) (pos 392.472534 -9.874528) (velocity -2.385040 -0.049736) (fixed #f) (mass 0.100000)) + (particle (id 87) (pos 415.517426 -110.674873) (velocity -2.661182 -0.132489) (fixed #f) (mass 0.100000)) + (particle (id 88) (pos 431.707123 -9.697728) (velocity -2.387493 -0.189531) (fixed #f) (mass 0.100000)) + (particle (id 98) (pos 481.924469 -3.323127) (velocity -0.344231 -1.591372) (fixed #f) (mass 0.100000)) + (particle (id 99) (pos 559.623596 74.575058) (velocity 0.746062 -2.674803) (fixed #f) (mass 0.100000)) + (particle (id 100) (pos 630.544128 135.798325) (velocity 1.319773 -3.328312) (fixed #f) (mass 0.100000)) + (particle (id 101) (pos 713.630615 196.324142) (velocity 1.332696 -3.328380) (fixed #f) (mass 0.100000)) + (particle (id 102) (pos 781.556763 240.432800) (velocity 0.961162 -2.733415) (fixed #f) (mass 0.100000)) + (particle (id 105) (pos 869.829529 274.822906) (velocity 0.425860 -1.330167) (fixed #f) (mass 0.100000)) + (particle (id 107) (pos 345.170441 -0.142517) (velocity -2.356015 0.052227) (fixed #f) (mass 0.100000)) + (particle (id 108) (pos 265.796600 89.461441) (velocity -1.618978 0.698638) (fixed #f) (mass 0.100000)) + (particle (id 109) (pos 177.453018 168.046249) (velocity -1.085199 1.293760) (fixed #f) (mass 0.100000)) + (particle (id 110) (pos 102.579407 229.248215) (velocity -0.791477 1.640725) (fixed #f) (mass 0.100000)) + (particle (id 111) (pos 28.091087 268.706360) (velocity -0.737635 1.729852) (fixed #f) (mass 0.100000)) + (particle (id 112) (pos -40.873795 294.210327) (velocity -0.843329 1.434399) (fixed #f) (mass 0.100000)) + (particle (id 116) (pos 451.120270 592.032043) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 117) (pos 375.088257 592.032043) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 119) (pos 755.705444 314.398224) (velocity 0.037999 -3.019074) (fixed #f) (mass 0.100000)) + (particle (id 122) (pos 910.105774 599.000000) (velocity 0.000000 -0.050000) (fixed #t) (mass 0.100000)) + (particle (id 124) (pos -217.170181 334.134064) (velocity 0.087068 -0.622835) (fixed #f) (mass 0.100000)) + (particle (id 125) (pos -329.928192 331.516937) (velocity -0.019047 -1.751049) (fixed #f) (mass 0.100000)) + (particle (id 126) (pos -368.112030 329.949554) (velocity -0.071121 -1.864916) (fixed #f) (mass 0.100000)) + (particle (id 127) (pos -407.589294 327.010162) (velocity -0.125781 -1.841106) (fixed #f) (mass 0.100000)) + (particle (id 128) (pos -444.863739 323.988983) (velocity -0.187236 -1.696346) (fixed #f) (mass 0.100000)) + (particle (id 129) (pos -260.560394 333.201996) (velocity 0.066304 -1.174318) (fixed #f) (mass 0.100000)) + (particle (id 130) (pos -520.305908 317.518921) (velocity -0.302858 -1.110219) (fixed #f) (mass 0.100000)) + (particle (id 131) (pos -594.612122 313.031281) (velocity -0.383717 -0.333816) (fixed #f) (mass 0.100000)) + (particle (id 132) (pos -632.465210 312.607758) (velocity -0.402815 0.106027) (fixed #f) (mass 0.100000)) + (particle (id 133) (pos -670.360474 312.828247) (velocity -0.407257 0.559249) (fixed #f) (mass 0.100000)) + (particle (id 134) (pos -709.848511 313.864563) (velocity -0.398446 1.042872) (fixed #f) (mass 0.100000)) + (particle (id 135) (pos -747.755005 317.973358) (velocity -0.352329 1.550100) (fixed #f) (mass 0.100000)) + (particle (id 136) (pos -783.896057 321.717560) (velocity -0.299008 1.998815) (fixed #f) (mass 0.100000)) + (particle (id 137) (pos -559.579163 313.941162) (velocity -0.364218 -0.716313) (fixed #f) (mass 0.100000)) + (particle (id 138) (pos -832.762817 328.820831) (velocity -0.191901 2.564384) (fixed #f) (mass 0.100000)) + (particle (id 139) (pos -905.541077 335.115540) (velocity -0.060446 3.119315) (fixed #f) (mass 0.100000)) + (particle (id 140) (pos -942.621643 336.184113) (velocity -0.005945 3.203864) (fixed #f) (mass 0.100000)) + (particle (id 141) (pos -979.637756 337.228455) (velocity 0.043642 3.163996) (fixed #f) (mass 0.100000)) + (particle (id 142) (pos -1018.025330 335.756500) (velocity 0.111300 2.937231) (fixed #f) (mass 0.100000)) + (particle (id 143) (pos -1054.879395 333.206909) (velocity 0.174379 2.607442) (fixed #f) (mass 0.100000)) + (particle (id 144) (pos -1092.998291 329.867462) (velocity 0.250320 2.130167) (fixed #f) (mass 0.100000)) + (particle (id 145) (pos -871.338989 332.143890) (velocity -0.117604 2.897932) (fixed #f) (mass 0.100000)) + (particle (id 146) (pos -218.642700 362.952240) (velocity -0.293568 -0.645791) (fixed #f) (mass 0.100000)) + (particle (id 147) (pos -293.963989 362.959930) (velocity -0.221147 -1.510628) (fixed #f) (mass 0.100000)) + (particle (id 148) (pos -330.874512 362.065216) (velocity -0.163562 -1.752604) (fixed #f) (mass 0.100000)) + (particle (id 149) (pos -370.843567 360.692230) (velocity -0.106051 -1.866171) (fixed #f) (mass 0.100000)) + (particle (id 150) (pos -410.045502 357.788361) (velocity -0.056187 -1.835844) (fixed #f) (mass 0.100000)) + (particle (id 151) (pos -447.521729 353.756897) (velocity -0.029517 -1.683295) (fixed #f) (mass 0.100000)) + (particle (id 152) (pos -483.494415 350.436218) (velocity -0.021133 -1.439256) (fixed #f) (mass 0.100000)) + (particle (id 153) (pos -261.014709 363.039032) (velocity -0.267517 -1.180983) (fixed #f) (mass 0.100000)) + (particle (id 154) (pos -522.590576 347.330658) (velocity -0.028066 -1.096575) (fixed #f) (mass 0.100000)) + (particle (id 155) (pos -595.100647 343.425110) (velocity -0.044092 -0.331034) (fixed #f) (mass 0.100000)) + (particle (id 156) (pos -632.295898 342.987976) (velocity -0.041847 0.102433) (fixed #f) (mass 0.100000)) + (particle (id 157) (pos -669.454529 343.213654) (velocity -0.036591 0.545047) (fixed #f) (mass 0.100000)) + (particle (id 158) (pos -707.694031 344.718445) (velocity -0.012382 1.024410) (fixed #f) (mass 0.100000)) + (particle (id 159) (pos -744.544006 347.668396) (velocity 0.027994 1.499370) (fixed #f) (mass 0.100000)) + (particle (id 160) (pos -780.225525 352.153137) (velocity 0.069066 1.957466) (fixed #f) (mass 0.100000)) + (particle (id 161) (pos -561.036560 344.787415) (velocity -0.037939 -0.700709) (fixed #f) (mass 0.100000)) + (particle (id 162) (pos -830.856750 358.719818) (velocity 0.112587 2.530408) (fixed #f) (mass 0.100000)) + (particle (id 163) (pos -905.018494 365.032227) (velocity 0.063717 3.100349) (fixed #f) (mass 0.100000)) + (particle (id 164) (pos -942.995789 367.041077) (velocity 0.013994 3.205437) (fixed #f) (mass 0.100000)) + (particle (id 165) (pos -981.117371 367.084137) (velocity -0.054404 3.136671) (fixed #f) (mass 0.100000)) + (particle (id 166) (pos -1020.823608 366.132660) (velocity -0.114507 2.916293) (fixed #f) (mass 0.100000)) + (particle (id 167) (pos -1058.941040 363.086823) (velocity -0.143688 2.544433) (fixed #f) (mass 0.100000)) + (particle (id 168) (pos -1097.071167 360.142273) (velocity -0.148880 2.073704) (fixed #f) (mass 0.100000)) + (particle (id 169) (pos -869.974731 362.738098) (velocity 0.103323 2.889068) (fixed #f) (mass 0.100000)) + (particle (id 170) (pos -479.332489 319.968567) (velocity -0.253447 -1.467354) (fixed #f) (mass 0.100000)) + (particle (id 171) (pos -175.642960 333.741913) (velocity 0.103098 -0.039300) (fixed #f) (mass 0.100000)) + (particle (id 172) (pos -175.133087 362.860168) (velocity -0.301096 -0.032668) (fixed #f) (mass 0.100000)) + (particle (id 173) (pos -795.510498 585.726074) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 174) (pos -794.824646 552.742554) (velocity 0.023374 0.003653) (fixed #f) (mass 0.100000)) + (particle (id 175) (pos -764.688721 553.458252) (velocity 0.024385 0.027654) (fixed #f) (mass 0.100000)) + (particle (id 176) (pos -730.463318 555.592224) (velocity 0.013114 0.053069) (fixed #f) (mass 0.100000)) + (particle (id 177) (pos -697.739990 554.092957) (velocity 0.004329 0.066090) (fixed #f) (mass 0.100000)) + (particle (id 178) (pos -656.117615 555.763428) (velocity -0.022505 0.026469) (fixed #f) (mass 0.100000)) + (particle (id 179) (pos -617.571899 555.966797) (velocity -0.005382 -0.030484) (fixed #f) (mass 0.100000)) + (particle (id 180) (pos -583.490295 554.416077) (velocity 0.006168 -0.017262) (fixed #f) (mass 0.100000)) + (particle (id 181) (pos -547.677246 552.838074) (velocity 0.003379 -0.004132) (fixed #f) (mass 0.100000)) + (particle (id 182) (pos -544.950439 584.286072) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 183) (pos -601.114014 588.294861) (velocity -0.000522 -0.021053) (fixed #f) (mass 0.100000)) + (particle (id 184) (pos -635.932617 588.956421) (velocity 0.004497 -0.004974) (fixed #f) (mass 0.100000)) + (particle (id 185) (pos -675.400330 589.551392) (velocity 0.001142 0.045916) (fixed #f) (mass 0.100000)) + (particle (id 186) (pos -707.446472 588.755432) (velocity 0.010079 0.061599) (fixed #f) (mass 0.100000)) + (particle (id 187) (pos -752.285828 585.497742) (velocity 0.001798 0.040021) (fixed #f) (mass 0.100000)) + (particle (id 188) (pos -616.693665 500.814850) (velocity -0.232276 -0.093042) (fixed #f) (mass 0.100000)) + (particle (id 189) (pos -616.543701 435.957367) (velocity -0.491033 -0.115289) (fixed #f) (mass 0.100000)) + (particle (id 190) (pos -614.613647 369.589111) (velocity -0.804958 -0.126925) (fixed #f) (mass 0.100000)) + (particle (id 191) (pos -612.406128 292.817444) (velocity -1.181128 -0.116842) (fixed #f) (mass 0.100000)) + (particle (id 192) (pos -613.318481 209.174072) (velocity -1.563553 -0.081212) (fixed #f) (mass 0.100000)) + (particle (id 193) (pos -610.624634 109.723145) (velocity -1.975947 -0.081482) (fixed #f) (mass 0.100000)) + (particle (id 194) (pos -698.939575 506.079193) (velocity -0.225865 0.165376) (fixed #f) (mass 0.100000)) + (particle (id 195) (pos -696.951599 435.306793) (velocity -0.509405 0.219092) (fixed #f) (mass 0.100000)) + (particle (id 196) (pos -693.634949 368.849640) (velocity -0.814506 0.239341) (fixed #f) (mass 0.100000)) + (particle (id 197) (pos -688.584656 290.898438) (velocity -1.196669 0.231580) (fixed #f) (mass 0.100000)) + (particle (id 198) (pos -686.772156 206.827713) (velocity -1.572058 0.222761) (fixed #f) (mass 0.100000)) + (particle (id 199) (pos -683.296082 109.874863) (velocity -1.981725 0.208149) (fixed #f) (mass 0.100000)) + (particle (id 200) (pos -667.785706 -13.697371) (velocity -2.462486 0.140339) (fixed #f) (mass 0.100000)) + (particle (id 201) (pos -651.491211 -114.868019) (velocity -2.704255 0.087286) (fixed #f) (mass 0.100000)) + (particle (id 202) (pos -628.509521 -16.502804) (velocity -2.471257 0.003918) (fixed #f) (mass 0.100000)) + (particle (id 206) (pos -576.656860 2.376240) (velocity -1.527286 -0.647462) (fixed #f) (mass 0.100000)) + (particle (id 207) (pos -490.373657 105.917839) (velocity -0.544297 -1.448819) (fixed #f) (mass 0.100000)) + (particle (id 208) (pos -415.475433 174.340179) (velocity -0.161925 -1.838262) (fixed #f) (mass 0.100000)) + (particle (id 209) (pos -336.168579 229.023438) (velocity -0.210286 -1.739656) (fixed #f) (mass 0.100000)) + (particle (id 210) (pos -259.466614 270.491974) (velocity -0.490321 -1.189128) (fixed #f) (mass 0.100000)) + (particle (id 211) (pos -177.235794 294.992950) (velocity -0.829782 -0.006592) (fixed #f) (mass 0.100000)) + (particle (id 213) (pos -713.639160 2.067833) (velocity -0.978635 1.034568) (fixed #f) (mass 0.100000)) + (particle (id 214) (pos -786.271301 87.255669) (velocity 0.135829 1.994132) (fixed #f) (mass 0.100000)) + (particle (id 215) (pos -869.206970 174.664032) (velocity 1.091701 2.909587) (fixed #f) (mass 0.100000)) + (particle (id 216) (pos -944.986572 225.966614) (velocity 1.276036 3.169406) (fixed #f) (mass 0.100000)) + (particle (id 217) (pos -1018.370972 263.566650) (velocity 1.153670 2.932299) (fixed #f) (mass 0.100000)) + (particle (id 218) (pos -1091.220581 290.778992) (velocity 0.877130 2.154864) (fixed #f) (mass 0.100000)) + (particle (id 220) (pos -616.950439 581.118103) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 221) (pos -692.982544 581.118103) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 222) (pos -294.008545 332.787170) (velocity 0.024539 -1.510334) (fixed #f) (mass 0.100000)) + (particle (id 227) (pos -74.868988 332.603546) (velocity 0.053231 1.226934) (fixed #f) (mass 0.100000)) + (particle (id 243) (pos -105.109055 333.148682) (velocity 0.080254 0.906454) (fixed #f) (mass 0.100000)) + (particle (id 244) (pos -140.698715 333.834625) (velocity 0.094824 0.455834) (fixed #f) (mass 0.100000)) + (particle (id 245) (pos -139.447266 362.749939) (velocity -0.286526 0.465773) (fixed #f) (mass 0.100000)) + (particle (id 246) (pos -106.093163 362.359100) (velocity -0.254740 0.894064) (fixed #f) (mass 0.100000)) + (particle (id 247) (pos -73.480614 361.684357) (velocity -0.208727 1.235410) (fixed #f) (mass 0.100000)) + (particle (id 249) (pos -106.150307 299.760193) (velocity -0.886798 0.934005) (fixed #f) (mass 0.100000)) + (particle (id 255) (pos 986.411194 302.500549) (velocity 0.094698 0.031564) (fixed #f) (mass 0.100000)) + (particle (id 256) (pos 948.621338 303.727539) (velocity 0.178968 -0.196396) (fixed #f) (mass 0.100000)) + (particle (id 257) (pos 909.635559 305.995178) (velocity 0.242440 -0.694275) (fixed #f) (mass 0.100000)) + (particle (id 258) (pos 1021.293335 301.380829) (velocity 0.059311 0.125490) (fixed #f) (mass 0.100000)) + (particle (id 263) (pos 986.302917 332.678162) (velocity -0.032835 0.040612) (fixed #f) (mass 0.100000)) + (particle (id 264) (pos 948.890747 334.288116) (velocity -0.089191 -0.159191) (fixed #f) (mass 0.100000)) + (particle (id 265) (pos 912.001953 335.875580) (velocity -0.181667 -0.661084) (fixed #f) (mass 0.100000)) + (particle (id 266) (pos 1021.014709 331.651825) (velocity 0.001372 0.129430) (fixed #f) (mass 0.100000)) + (particle (id 267) (pos 907.718140 286.679840) (velocity 0.236777 -0.700617) (fixed #f) (mass 0.100000)) + (particle (id 268) (pos 910.250610 556.459778) (velocity -0.030153 -0.000902) (fixed #f) (mass 0.100000)) + (particle (id 270) (pos 1163.915039 596.110474) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 271) (pos 1123.697510 559.670837) (velocity -0.040548 -0.019905) (fixed #f) (mass 0.100000)) + (particle (id 272) (pos 1086.216064 556.625549) (velocity -0.031050 -0.025646) (fixed #f) (mass 0.100000)) + (particle (id 273) (pos 1037.367432 557.624756) (velocity -0.015679 -0.001113) (fixed #f) (mass 0.100000)) + (particle (id 274) (pos 994.130310 557.807312) (velocity -0.021019 -0.005228) (fixed #f) (mass 0.100000)) + (particle (id 275) (pos 949.702026 557.478638) (velocity -0.019183 -0.011078) (fixed #f) (mass 0.100000)) + (particle (id 276) (pos 950.679871 599.000000) (velocity -0.001482 -0.081659) (fixed #f) (mass 0.100000)) + (particle (id 277) (pos 988.903503 597.119080) (velocity -0.015375 -0.007450) (fixed #f) (mass 0.100000)) + (particle (id 278) (pos 1036.382080 599.000000) (velocity -0.003123 -0.115760) (fixed #f) (mass 0.100000)) + (particle (id 279) (pos 1083.109497 599.000000) (velocity -0.002087 -0.339665) (fixed #f) (mass 0.100000)) + (particle (id 280) (pos 1123.733765 599.000000) (velocity -0.000628 -0.168921) (fixed #f) (mass 0.100000)) + (particle (id 282) (pos 1078.447754 470.574554) (velocity -0.071075 -0.043770) (fixed #f) (mass 0.100000)) + (particle (id 283) (pos 1059.981445 382.716736) (velocity -0.110181 -0.051057) (fixed #f) (mass 0.100000)) + (particle (id 284) (pos 1041.914307 267.720703) (velocity -0.090997 -0.051590) (fixed #f) (mass 0.100000)) + (particle (id 285) (pos 1038.109741 180.463531) (velocity -0.064675 -0.054481) (fixed #f) (mass 0.100000)) + (particle (id 286) (pos 987.254089 180.682648) (velocity -0.064864 -0.067048) (fixed #f) (mass 0.100000)) + (particle (id 287) (pos 986.360291 267.596985) (velocity -0.086910 -0.068331) (fixed #f) (mass 0.100000)) + (particle (id 288) (pos 972.832642 383.654877) (velocity -0.114609 -0.068772) (fixed #f) (mass 0.100000)) + (particle (id 289) (pos 962.159485 472.518799) (velocity -0.063246 -0.025697) (fixed #f) (mass 0.100000)) + (particle (id 302) (pos -1137.889282 327.283966) (velocity 0.299314 1.488107) (fixed #f) (mass 0.100000)) + (particle (id 308) (pos -1179.190430 324.941620) (velocity 0.320814 0.865506) (fixed #f) (mass 0.100000)) + (particle (id 309) (pos -1139.929688 356.596527) (velocity -0.122434 1.437718) (fixed #f) (mass 0.100000)) + (particle (id 315) (pos -1181.019531 355.546051) (velocity -0.105466 0.834427) (fixed #f) (mass 0.100000)) + (particle (id 323) (pos -1404.858276 599.000000) (velocity 0.043545 -0.116497) (fixed #t) (mass 0.100000)) + (particle (id 324) (pos -1403.624146 556.277344) (velocity -0.005299 0.006170) (fixed #f) (mass 0.100000)) + (particle (id 327) (pos -1190.882324 562.002869) (velocity 0.021638 0.017180) (fixed #f) (mass 0.100000)) + (particle (id 328) (pos -1229.300171 560.878845) (velocity 0.008280 0.023458) (fixed #f) (mass 0.100000)) + (particle (id 329) (pos -1278.077393 561.759766) (velocity 0.000843 -0.001548) (fixed #f) (mass 0.100000)) + (particle (id 330) (pos -1323.811646 561.269287) (velocity 0.007115 -0.002840) (fixed #f) (mass 0.100000)) + (particle (id 331) (pos -1364.274048 558.449768) (velocity -0.002969 0.005041) (fixed #f) (mass 0.100000)) + (particle (id 333) (pos -1325.924194 599.000000) (velocity 0.000928 -0.027606) (fixed #f) (mass 0.100000)) + (particle (id 334) (pos -1279.950073 598.892456) (velocity 0.001192 0.001310) (fixed #f) (mass 0.100000)) + (particle (id 335) (pos -1232.023560 599.000000) (velocity -0.000549 -0.905959) (fixed #f) (mass 0.100000)) + (particle (id 336) (pos -1190.725220 595.773254) (velocity -0.111252 -5.013959) (fixed #t) (mass 0.100000)) + (particle (id 338) (pos -1365.539429 598.952209) (velocity 0.002459 0.001448) (fixed #f) (mass 0.100000)) + (particle (id 344) (pos -1353.419800 451.515076) (velocity 0.017707 0.012219) (fixed #f) (mass 0.100000)) + (particle (id 345) (pos -1229.869141 449.326904) (velocity 0.012823 0.046142) (fixed #f) (mass 0.100000)) + (particle (id 346) (pos -1240.484863 350.187775) (velocity 0.048023 0.089188) (fixed #f) (mass 0.100000)) + (particle (id 347) (pos -1331.167114 352.044464) (velocity 0.071497 0.004782) (fixed #f) (mass 0.100000)) + (particle (id 349) (pos -1242.276001 250.546448) (velocity 0.156018 0.086531) (fixed #f) (mass 0.100000)) + (particle (id 350) (pos -1244.135864 160.306580) (velocity 0.252967 0.087910) (fixed #f) (mass 0.100000)) + (particle (id 351) (pos -1315.282104 158.043793) (velocity 0.255026 0.014142) (fixed #f) (mass 0.100000)) + (particle (id 357) (pos -1318.130737 248.132706) (velocity 0.160047 0.011602) (fixed #f) (mass 0.100000)) + (particle (id 388) (pos 367.181519 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 392) (pos 368.034698 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 416) (pos -1268.855225 322.294525) (velocity 0.160831 0.000222) (fixed #f) (mass 0.100000)) + (particle (id 417) (pos -1304.544678 321.936768) (velocity 0.126654 -0.049887) (fixed #f) (mass 0.100000)) + (particle (id 418) (pos -1268.732544 353.189423) (velocity 0.081484 0.000982) (fixed #f) (mass 0.100000)) + (particle (id 420) (pos -1482.975830 363.391632) (velocity 0.054670 0.003490) (fixed #f) (mass 0.100000)) + (particle (id 421) (pos -1584.173584 395.791382) (velocity 0.019123 -0.005829) (fixed #f) (mass 0.100000)) + (particle (id 422) (pos -1519.388672 373.842194) (velocity 0.034148 -0.007778) (fixed #f) (mass 0.100000)) + (particle (id 423) (pos -1469.728882 391.046448) (velocity 0.032277 -0.019188) (fixed #f) (mass 0.100000)) + (particle (id 424) (pos -1539.788574 415.079590) (velocity 0.019402 -0.017162) (fixed #f) (mass 0.100000)) + (particle (id 425) (pos -1574.808350 424.395264) (velocity 0.020714 0.001174) (fixed #f) (mass 0.100000)) + (particle (id 426) (pos -1507.325562 402.185974) (velocity 0.042691 -0.003485) (fixed #f) (mass 0.100000)) + (particle (id 427) (pos -1441.599121 347.913025) (velocity 0.049514 -0.004149) (fixed #f) (mass 0.100000)) + (particle (id 428) (pos -1428.225342 373.487518) (velocity 0.053311 -0.006230) (fixed #f) (mass 0.100000)) + (particle (id 429) (pos -1551.543213 385.320770) (velocity 0.026397 0.009397) (fixed #f) (mass 0.100000)) + (particle (id 430) (pos -1334.706177 324.815521) (velocity 0.080268 -0.010515) (fixed #f) (mass 0.100000)) + (particle (id 431) (pos -1368.280273 325.577942) (velocity 0.072670 -0.005080) (fixed #f) (mass 0.100000)) + (particle (id 432) (pos -1403.158203 333.900024) (velocity 0.065497 0.003200) (fixed #f) (mass 0.100000)) + (particle (id 433) (pos -1392.029297 359.011932) (velocity 0.056502 0.000261) (fixed #f) (mass 0.100000)) + (particle (id 434) (pos -1365.833618 354.848846) (velocity 0.067643 -0.011885) (fixed #f) (mass 0.100000)) + (particle (id 436) (pos -1639.727051 417.032013) (velocity 0.012749 -0.014058) (fixed #f) (mass 0.100000)) + (particle (id 437) (pos -1672.562988 428.558472) (velocity 0.006280 -0.013862) (fixed #f) (mass 0.100000)) + (particle (id 438) (pos -1707.267334 438.733582) (velocity 0.005124 -0.013894) (fixed #f) (mass 0.100000)) + (particle (id 439) (pos -1631.219482 445.390381) (velocity 0.006863 -0.009708) (fixed #f) (mass 0.100000)) + (particle (id 441) (pos -1699.627563 467.522797) (velocity 0.003390 -0.016814) (fixed #f) (mass 0.100000)) + (particle (id 442) (pos -1875.759644 481.286163) (velocity -0.005109 -0.002634) (fixed #f) (mass 0.100000)) + (particle (id 444) (pos -1867.437134 509.217621) (velocity -0.009432 0.000179) (fixed #f) (mass 0.100000)) + (particle (id 445) (pos -1938.725586 529.124390) (velocity -0.009141 -0.002771) (fixed #f) (mass 0.100000)) + (particle (id 446) (pos -1904.494751 519.698975) (velocity -0.007005 -0.000359) (fixed #f) (mass 0.100000)) + (particle (id 449) (pos -1947.100708 501.078857) (velocity -0.014219 0.003412) (fixed #f) (mass 0.100000)) + (particle (id 450) (pos -1735.972046 447.816895) (velocity 0.003399 -0.008899) (fixed #f) (mass 0.100000)) + (particle (id 451) (pos -1764.882202 455.905823) (velocity 0.002798 -0.005921) (fixed #f) (mass 0.100000)) + (particle (id 454) (pos -1758.622192 482.931885) (velocity -0.001723 -0.010196) (fixed #f) (mass 0.100000)) + (particle (id 455) (pos -1727.352539 475.121796) (velocity 0.001423 -0.012985) (fixed #f) (mass 0.100000)) + (particle (id 456) (pos -2017.774414 527.028320) (velocity -0.004520 0.007775) (fixed #f) (mass 0.100000)) + (particle (id 457) (pos -2052.895752 538.437622) (velocity -0.002991 0.009951) (fixed #f) (mass 0.100000)) + (particle (id 458) (pos -2086.781494 548.604431) (velocity 0.007427 0.012216) (fixed #f) (mass 0.100000)) + (particle (id 459) (pos -2009.159546 556.249695) (velocity -0.010339 0.009513) (fixed #f) (mass 0.100000)) + (particle (id 460) (pos -2044.876465 568.209412) (velocity 0.004529 0.008798) (fixed #f) (mass 0.100000)) + (particle (id 461) (pos -2079.714600 578.372742) (velocity 0.000404 0.011678) (fixed #f) (mass 0.100000)) + (particle (id 476) (pos -1568.524292 599.000000) (velocity -0.009815 -1.090748) (fixed #f) (mass 0.100000)) + (particle (id 478) (pos -1629.979736 599.000000) (velocity -0.009464 -0.468320) (fixed #f) (mass 0.100000)) + (particle (id 480) (pos -1939.498291 599.000000) (velocity -0.003001 -1.070310) (fixed #f) (mass 0.100000)) + (particle (id 482) (pos -1873.850586 599.000000) (velocity -0.003545 -0.138468) (fixed #f) (mass 0.100000)) + (particle (id 484) (pos -1418.251953 425.764343) (velocity 0.023211 -0.014528) (fixed #f) (mass 0.100000)) + (particle (id 485) (pos -1493.209351 451.717224) (velocity 0.022063 -0.017065) (fixed #f) (mass 0.100000)) + (particle (id 486) (pos -1560.971313 474.882324) (velocity 0.012987 -0.017015) (fixed #f) (mass 0.100000)) + (particle (id 487) (pos -1748.843872 529.886108) (velocity 0.006593 -0.015582) (fixed #f) (mass 0.100000)) + (particle (id 489) (pos -1971.282837 575.053406) (velocity 0.007214 0.002431) (fixed #f) (mass 0.100000)) + (particle (id 492) (pos 1287.420044 293.193085) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 500) (pos 368.509735 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 501) (pos 368.509735 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 509) (pos 368.509888 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 510) (pos 368.727844 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 511) (pos 368.509888 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 512) (pos 368.727844 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 586) (pos -2301.712891 599.000000) (velocity 0.002795 -0.051064) (fixed #t) (mass 0.100000)) + (particle (id 738) (pos 2893.663574 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 740) (pos 390.525635 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 770) (pos 953.882202 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 782) (pos 953.882202 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 853) (pos 463.617432 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 854) (pos 362.496552 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 855) (pos 525.938843 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 856) (pos 434.900482 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 888) (pos 390.503998 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 889) (pos 362.993958 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 901) (pos 954.912292 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 910) (pos 470.403870 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 917) (pos 470.403870 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 940) (pos -2116.854492 559.517456) (velocity 0.001231 0.006527) (fixed #f) (mass 0.100000)) + (particle (id 941) (pos -2149.252197 569.628479) (velocity -0.017780 0.007802) (fixed #f) (mass 0.100000)) + (particle (id 942) (pos -2185.506836 578.493530) (velocity -0.002297 -0.007615) (fixed #f) (mass 0.100000)) + (particle (id 943) (pos -2221.717285 584.650879) (velocity -0.009116 -0.000709) (fixed #f) (mass 0.100000)) + (particle (id 944) (pos -2263.802246 591.762878) (velocity 0.002684 -0.004285) (fixed #f) (mass 0.100000)) + (particle (id 945) (pos -2108.063232 589.174316) (velocity 0.001712 0.013564) (fixed #f) (mass 0.100000)) + (particle (id 946) (pos -2141.562988 597.177673) (velocity 0.002870 0.010549) (fixed #f) (mass 0.100000)) + (particle (id 947) (pos -2181.181152 599.000000) (velocity 0.000006 -0.345823) (fixed #f) (mass 0.100000)) + (particle (id 950) (pos -2266.000732 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 951) (pos -2221.298096 599.000000) (velocity -0.000850 -0.170751) (fixed #f) (mass 0.100000)) + (particle (id 952) (pos -1909.620117 490.372375) (velocity -0.005180 0.000797) (fixed #f) (mass 0.100000)) + (particle (id 953) (pos -1980.557617 512.930786) (velocity -0.004454 0.005796) (fixed #f) (mass 0.100000)) + (particle (id 954) (pos -1968.938477 539.814148) (velocity -0.002854 -0.003019) (fixed #f) (mass 0.100000)) + (particle (id 955) (pos -1664.194336 457.060028) (velocity 0.003193 -0.015405) (fixed #f) (mass 0.100000)) + (particle (id 960) (pos -649.890381 -47.114346) (velocity -2.588748 0.077084) (fixed #f) (mass 0.100000)) + (particle (id 963) (pos -1620.736328 495.788666) (velocity 0.013691 -0.018010) (fixed #f) (mass 0.100000)) + (particle (id 964) (pos -1686.219727 513.738037) (velocity -0.004370 -0.016391) (fixed #f) (mass 0.100000)) + (particle (id 966) (pos -1610.271851 406.306122) (velocity 0.006476 0.001233) (fixed #f) (mass 0.100000)) + (particle (id 967) (pos -1602.899902 434.592468) (velocity 0.004113 -0.009817) (fixed #f) (mass 0.100000)) + (particle (id 984) (pos -1835.298706 471.299072) (velocity 0.001119 -0.003064) (fixed #f) (mass 0.100000)) + (particle (id 985) (pos -1793.795410 491.658051) (velocity -0.006218 -0.010951) (fixed #f) (mass 0.100000)) + (particle (id 986) (pos -1828.534668 499.436951) (velocity 0.000000 0.001346) (fixed #f) (mass 0.100000)) + (particle (id 987) (pos -1801.505371 463.631531) (velocity -0.003649 -0.001701) (fixed #f) (mass 0.100000)) + (particle (id 988) (pos -1816.942505 544.535339) (velocity -0.003474 -0.004059) (fixed #f) (mass 0.100000)) + (particle (id 989) (pos -1893.898438 560.805054) (velocity -0.001969 -0.001719) (fixed #f) (mass 0.100000)) + (particle (id 991) (pos -2040.534912 585.715332) (velocity -0.011113 0.009352) (fixed #f) (mass 0.100000)) + (particle (id 1004) (pos 1168.165161 293.117340) (velocity -0.013982 0.006124) (fixed #f) (mass 0.100000)) + (particle (id 1005) (pos 1057.773560 299.688049) (velocity 0.029499 0.155459) (fixed #f) (mass 0.100000)) + (particle (id 1006) (pos 1129.383179 296.380554) (velocity -0.011875 0.063564) (fixed #f) (mass 0.100000)) + (particle (id 1007) (pos 1171.857422 322.511627) (velocity -0.278316 -0.235955) (fixed #t) (mass 0.100000)) + (particle (id 1008) (pos 1096.596802 328.775238) (velocity 0.038577 0.127183) (fixed #f) (mass 0.100000)) + (particle (id 1009) (pos 1058.196167 329.971802) (velocity 0.026629 0.155493) (fixed #f) (mass 0.100000)) + (particle (id 1010) (pos 1131.972656 326.751404) (velocity 0.050129 0.073693) (fixed #f) (mass 0.100000)) + (particle (id 1011) (pos 1201.992310 293.362762) (velocity -0.003839 -0.006393) (fixed #f) (mass 0.100000)) + (particle (id 1013) (pos 1094.371826 298.164642) (velocity 0.005400 0.132654) (fixed #f) (mass 0.100000)) + (particle (id 1019) (pos -1301.526123 351.895538) (velocity 0.095148 -0.050318) (fixed #f) (mass 0.100000)) + (particle (id 1020) (pos -1220.118286 323.276947) (velocity 0.302944 0.300609) (fixed #f) (mass 0.100000)) + (particle (id 1021) (pos -1237.738281 322.215332) (velocity 0.236669 0.139167) (fixed #f) (mass 0.100000)) + (particle (id 1022) (pos -1223.173462 352.123657) (velocity -0.017338 0.277601) (fixed #f) (mass 0.100000)) + (particle (id 1023) (pos -5372.526367 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 1024) (pos -5372.526367 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 1025) (pos 3482.269775 599.000000) (velocity 0.000000 -0.050000) (fixed #f) (mass 0.100000)) + (particle (id 1026) (pos 412.412506 -30.384359) (velocity -2.461502 -0.120300) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 3) (second 4) (length 37.440002) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 5) (length 38.880005) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 6) (length 37.440002) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 0) (length 38.880005) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 11) (length 37.439911) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 12) (length 37.440002) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 13) (length 38.879944) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 37.439972) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 35.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 16) (length 34.559998) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 9) (length 39.183273) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 19) (length 37.439880) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 20) (length 37.439980) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 21) (length 38.879993) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 22) (length 37.439968) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 34.638893) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 24) (length 34.559998) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 17) (length 38.880005) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 27) (length 37.439880) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 28) (length 37.440002) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 38.880066) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 30) (length 37.440002) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 31) (length 36.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 32) (length 34.559998) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 25) (length 39.303452) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 37.439941) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 36) (length 37.440002) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 37) (length 38.880005) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 38) (length 37.439911) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 39) (length 36.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 40) (length 34.559937) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 33) (length 38.879913) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 43) (length 37.439903) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 44) (length 37.440010) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 45) (length 38.879974) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 45) (second 46) (length 37.439938) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 47) (length 33.883282) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 48) (length 34.559914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 41) (length 38.879868) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 31) (length 49.786274) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 6) (length 46.987427) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 29) (length 48.464275) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 4) (length 49.214661) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 27) (length 48.464325) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 0) (length 49.214710) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 8) (length 50.410461) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 26) (length 45.900955) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 3) (length 48.464230) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 28) (length 48.092285) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 5) (length 49.592163) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 30) (length 48.092335) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 40) (length 49.522236) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 10) (length 46.260731) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 35) (length 48.092121) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 12) (length 48.464420) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 37) (length 49.214520) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 14) (length 48.464348) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 39) (length 46.987240) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 17) (length 57.679092) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 48) (length 50.353073) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 18) (length 45.187405) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 43) (length 49.214436) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 20) (length 47.353481) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 45) (length 50.353024) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 45) (second 22) (length 47.353462) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 47) (length 46.222481) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 23) (length 30.527414) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 46) (length 45.205032) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 21) (length 49.214489) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 44) (length 48.464375) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 19) (length 49.214535) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 42) (length 47.353424) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 24) (length 46.987186) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 41) (length 48.464252) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 15) (length 59.580624) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 38) (length 47.353485) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 38) (length 48.092167) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 36) (length 49.592209) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 11) (length 48.092194) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 34) (length 48.464371) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 16) (length 45.900749) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 33) (length 49.592163) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 31) (length 39.294098) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 50) (length 34.559998) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 9) (length 40.974964) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 50) (length 46.260616) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 33) (length 51.304733) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 34) (length 30.480742) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 36) (length 30.480742) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 17) (length 49.371166) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 39) (length 50.810982) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 51) (length 51.984844) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 52) (length 30.923923) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 0) (length 54.736385) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 52) (length 43.581650) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 0) (length 43.295906) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 54) (length 33.074841) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 55) (length 30.219576) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 56) (length 34.489483) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 57) (length 33.034794) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 58) (length 41.927650) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 59) (length 38.740856) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 60) (length 34.253860) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 61) (length 35.912968) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 62) (length 31.632397) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 56.149101) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 65) (length 38.988316) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 67) (length 44.724453) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 53) (length 43.155369) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 60) (length 48.836578) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 63) (length 38.165421) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 59) (length 36.481369) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 64) (length 37.771072) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 58) (length 38.991619) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 65) (length 39.533737) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 57) (length 42.072769) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 66) (length 36.079445) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 56) (length 40.335056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 67) (length 37.123966) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 55) (length 34.274734) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 53) (length 44.755848) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 67) (length 53.596703) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 63) (length 64.059448) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 58) (length 115.128708) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 53) (length 103.136215) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 68) (length 56.781815) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 69) (length 66.508026) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 70) (length 66.719284) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 71) (length 79.245636) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 72) (length 85.241394) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 99.874420) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 78) (length 49.772705) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 79) (length 72.595253) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 80) (length 67.101479) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 81) (length 79.803955) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 81) (second 82) (length 88.066841) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 83) (length 98.617241) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 85) (length 124.963364) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 85) (length 103.939682) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 68) (length 67.412865) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 78) (length 66.823074) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 79) (length 105.049591) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 70) (length 102.230675) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 81) (length 111.913513) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 71) (length 109.966560) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 69) (length 104.704613) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 78) (length 107.777161) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 68) (length 81.585434) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 79) (length 79.636894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 70) (length 78.231758) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 81) (length 76.497597) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 81) (length 112.680565) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 71) (length 116.502831) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 82) (length 73.574341) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 73) (length 120.436768) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 72) (length 123.351105) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 85) (length 137.444290) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 83) (length 135.329788) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 73) (length 127.529198) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 88) (length 102.796242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 98) (length 125.096809) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 99) (length 109.193024) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 100) (length 92.920792) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 101) (length 102.079239) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 102) (length 80.303207) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 107) (length 129.862244) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 108) (length 118.771690) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 109) (length 117.410500) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 109) (second 110) (length 95.908577) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 111) (length 83.593071) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 112) (length 72.869797) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 51) (length 33.092869) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 16) (length 312.942047) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 50) (length 238.032410) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 5) (length 179.902069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 3) (length 119.772163) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 8) (length 72.835953) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 13) (length 311.052673) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 15) (length 225.039429) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 109) (second 24) (length 152.917603) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 19) (length 95.213585) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 21) (length 59.512661) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 23) (length 36.478977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 105) (length 94.133224) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 66) (length 36.079445) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 116) (length 26.663210) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 117) (length 28.849005) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 116) (length 17.037401) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 116) (second 64) (length 20.084841) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 117) (length 19.200113) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 117) (second 66) (length 16.024782) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 31) (length 30.628952) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 29) (length 30.737228) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 27) (length 30.499813) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 32) (length 30.716326) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 8) (length 34.947113) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 3) (length 36.598240) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 27) (length 48.078129) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 32) (length 47.234875) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 40) (length 30.661301) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 37) (length 30.607246) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 39) (length 30.560320) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 48) (length 30.434673) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 43) (length 30.726139) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 45) (length 30.460506) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 35) (length 30.394966) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 125) (second 126) (length 38.061459) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 127) (length 39.396481) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 128) (length 37.144970) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 124) (length 43.319492) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 132) (length 37.560814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 133) (length 37.551861) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 134) (length 39.049026) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 37.604649) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 136) (length 35.948086) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 137) (length 34.730995) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 130) (length 39.052502) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 140) (length 37.093735) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 141) (length 37.148560) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 142) (length 38.628025) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 143) (length 37.241444) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 144) (length 38.556206) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 145) (length 34.194054) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 138) (length 38.500744) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 148) (length 36.633617) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 149) (length 39.738644) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 150) (length 39.150391) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 151) (length 37.581326) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 152) (length 36.071102) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 153) (length 32.679619) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 146) (length 42.074593) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 156) (length 37.234753) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 157) (length 37.245239) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 158) (length 38.520443) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 159) (length 37.161808) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 159) (second 160) (length 35.991692) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 161) (length 34.173565) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 161) (second 154) (length 38.558525) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 164) (length 37.700939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 164) (second 165) (length 37.669445) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 166) (length 39.170959) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 167) (length 37.649967) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 168) (length 37.599598) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 169) (length 34.929554) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 162) (length 39.217930) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 152) (length 49.369602) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 128) (length 46.869595) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 150) (length 48.503834) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 126) (length 50.375298) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 148) (length 49.172691) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 124) (length 52.548126) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 129) (length 51.368519) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 147) (length 44.705952) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 125) (length 47.765736) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 125) (second 149) (length 50.296608) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 127) (length 49.768066) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 151) (length 48.077229) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 161) (length 49.060745) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 161) (second 131) (length 46.190216) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 156) (length 48.092476) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 133) (length 48.455158) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 158) (length 49.133812) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 135) (length 48.279129) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 160) (length 47.081108) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 160) (second 138) (length 57.529728) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 169) (length 50.342876) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 139) (length 45.137875) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 164) (length 49.148411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 164) (second 141) (length 47.331718) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 166) (length 50.290482) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 143) (length 47.397247) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 168) (length 50.089642) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 168) (second 144) (length 30.567902) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 167) (length 47.582031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 142) (length 49.142673) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 165) (length 48.456104) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 140) (length 49.285645) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 163) (length 47.465900) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 145) (length 46.956642) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 162) (length 48.430317) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 136) (length 59.723309) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 159) (length 47.223442) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 159) (length 48.309925) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 157) (length 49.732750) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 132) (length 48.019161) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 155) (length 48.377190) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 137) (length 46.045898) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 154) (length 49.780365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 152) (length 39.211403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 170) (length 34.391075) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 170) (second 130) (length 40.710426) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 170) (length 46.343403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 170) (second 154) (length 51.184425) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 155) (length 30.480354) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 157) (length 30.486620) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 138) (length 49.113396) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 160) (length 51.002289) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 171) (length 51.964825) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 171) (second 172) (length 29.068214) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 124) (length 50.930725) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 172) (length 43.199249) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 171) (second 124) (length 41.461983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 174) (length 33.060093) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 174) (second 175) (length 30.198755) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 175) (second 176) (length 34.432533) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 176) (second 177) (length 32.930729) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 178) (length 41.989857) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 179) (length 38.710468) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 180) (length 34.186386) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 181) (length 35.890816) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 182) (length 31.619526) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 183) (length 56.155380) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 185) (length 39.027962) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 186) (second 187) (length 44.784702) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 173) (length 43.157536) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 180) (length 48.797493) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 183) (length 38.195065) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 183) (second 179) (length 36.399761) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 184) (length 37.778477) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 178) (length 38.970879) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 185) (length 39.158070) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 185) (second 177) (length 41.752533) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 186) (length 36.039658) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 186) (second 176) (length 40.369446) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 176) (second 187) (length 37.077538) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 175) (length 34.305035) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 175) (second 173) (length 44.720280) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 174) (second 187) (length 53.621685) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 183) (length 64.084351) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 178) (length 114.984398) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 173) (length 102.971840) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 188) (length 56.450157) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 189) (length 66.073448) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 189) (second 190) (length 67.569595) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 190) (second 191) (length 77.819458) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 192) (length 84.475830) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 193) (length 99.829041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 194) (length 49.013397) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 194) (second 195) (length 71.704803) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 195) (second 196) (length 67.465546) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 197) (length 79.055122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 198) (length 84.946686) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 199) (length 97.364105) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 199) (second 200) (length 124.713623) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 200) (length 102.732346) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 188) (length 67.872108) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 194) (length 65.775131) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 195) (length 103.940361) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 195) (second 190) (length 105.606972) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 190) (second 197) (length 108.401688) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 191) (length 111.530251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 189) (length 102.562965) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 189) (second 194) (length 108.528076) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 194) (second 188) (length 81.989220) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 189) (second 195) (length 79.921677) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 190) (length 78.544174) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 197) (length 75.662354) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 197) (length 111.552887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 191) (length 114.156334) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 198) (length 73.054161) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 193) (length 123.481483) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 199) (second 192) (length 121.601669) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 193) (length 127.627899) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 202) (length 101.225906) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 206) (length 137.929764) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 207) (length 133.816238) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 208) (length 100.617035) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 208) (second 209) (length 95.591652) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 210) (length 86.502808) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 213) (length 131.125458) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 214) (length 111.000458) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 215) (length 119.597458) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 216) (length 90.769890) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 217) (length 81.762306) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 218) (length 77.105904) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 171) (length 38.669163) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 137) (length 311.825073) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 170) (length 214.185089) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 208) (second 127) (length 152.765091) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 125) (length 102.622162) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 129) (length 62.602978) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 134) (length 311.425507) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 136) (length 234.434845) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 145) (length 157.294266) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 140) (length 110.175827) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 142) (length 72.138046) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 218) (second 144) (length 39.176712) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 211) (length 85.164299) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 186) (length 36.039658) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 220) (length 26.353672) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 221) (length 28.432056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 183) (second 220) (length 17.121212) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 184) (length 20.112646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 185) (second 221) (length 19.240046) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 186) (length 16.135864) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 170) (second 152) (length 30.693394) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 150) (length 30.836933) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 125) (second 148) (length 30.507629) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 153) (length 29.794077) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 129) (length 33.364719) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 125) (length 35.821903) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 148) (length 47.121593) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 153) (length 44.762901) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 161) (length 30.839510) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 158) (length 30.818476) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 160) (length 30.640640) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 169) (length 30.530216) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 164) (length 30.827057) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 166) (length 30.501926) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 156) (length 30.447546) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 227) (length 32.085514) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 243) (length 30.169689) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 244) (length 35.537659) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 171) (length 34.880203) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 245) (length 35.367748) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 245) (second 246) (length 33.024986) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 246) (second 247) (length 32.308331) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 47) (length 31.049242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 227) (length 43.589539) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 247) (length 43.546524) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 246) (length 29.195934) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 245) (length 45.323536) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 246) (length 44.863636) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 246) (second 227) (length 43.123135) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 243) (length 42.603413) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 172) (length 45.061298) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 171) (second 245) (length 46.356842) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 249) (length 64.900360) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 249) (length 70.634132) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 256) (length 37.476524) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 257) (length 38.720036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 258) (length 34.636593) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 264) (length 37.219471) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 265) (length 36.833683) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 266) (length 34.383877) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 255) (length 45.152164) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 264) (length 49.229855) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 257) (length 48.486294) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 256) (length 48.596451) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 263) (length 47.393837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 258) (length 46.967300) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 266) (length 30.481049) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 264) (length 30.763805) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 52) (length 46.411194) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 265) (length 48.392555) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 51) (length 36.832176) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 265) (length 35.480595) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 122) (second 268) (length 42.702698) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 272) (length 37.592937) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 273) (length 48.828415) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 274) (length 43.281460) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 275) (length 44.469593) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 268) (length 39.407166) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 276) (second 277) (length 38.266483) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 278) (length 47.530823) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 279) (length 46.742554) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 280) (length 40.643677) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 270) (length 40.304787) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 270) (second 271) (length 54.595276) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 279) (length 56.540447) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 273) (length 61.718616) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 277) (length 62.459938) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 275) (length 55.717804) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 122) (length 57.494637) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 277) (length 39.688332) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 278) (length 41.425632) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 279) (length 42.617523) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 280) (length 39.398438) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 282) (length 100.157349) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 283) (length 89.896957) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 284) (length 116.444565) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 285) (length 87.359505) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 285) (second 286) (length 50.850636) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 287) (length 86.939400) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 288) (length 116.885445) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 289) (length 89.765686) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 268) (length 98.868866) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 283) (length 87.148674) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 287) (length 55.540192) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 282) (length 188.818100) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 271) (length 183.698257) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 282) (length 86.499252) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 289) (length 85.923203) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 284) (length 102.789719) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 288) (length 134.980865) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 282) (length 136.999069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 289) (length 132.766586) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 287) (length 136.671188) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 285) (length 101.354843) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 267) (length 39.113979) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 243) (length 33.340420) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 302) (length 41.350590) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 309) (length 40.794830) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 315) (length 51.736256) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 309) (length 50.261013) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 315) (length 30.709993) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 309) (second 144) (length 54.094177) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 168) (length 52.278030) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 302) (length 45.187122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 324) (length 42.165424) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 328) (length 38.027996) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 329) (length 48.339985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 330) (length 45.585888) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 331) (length 40.407906) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 324) (length 39.739017) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 334) (length 45.971493) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 335) (length 47.925243) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 336) (length 41.750549) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 335) (length 55.075764) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 329) (length 59.450500) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 333) (length 60.482620) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 331) (length 55.890965) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 323) (length 56.695042) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 333) (length 37.810787) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 334) (length 37.149731) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 335) (length 38.733871) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 336) (length 35.117886) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 168) (second 309) (length 42.486980) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 338) (length 39.145176) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 333) (length 39.442562) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 338) (length 40.491699) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 324) (second 344) (length 115.582253) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 345) (length 120.284927) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 346) (length 100.652382) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 344) (second 347) (length 101.432228) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 346) (length 99.753838) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 350) (length 90.275909) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 350) (second 351) (length 71.172119) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 344) (length 123.456078) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 349) (length 117.858383) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 324) (length 203.925201) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 344) (second 327) (length 196.843750) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 347) (length 141.073044) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 344) (length 151.015945) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 357) (length 90.151184) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 357) (second 347) (length 104.816269) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 357) (second 349) (length 75.915527) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 350) (second 357) (length 114.858673) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 347) (length 134.872650) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 345) (length 112.019714) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 344) (second 331) (length 106.972038) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 357) (length 128.196747) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 416) (second 417) (length 35.477432) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 417) (second 418) (length 47.603436) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 422) (second 420) (length 38.160950) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 424) (second 425) (length 36.429356) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 424) (second 426) (length 34.951977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 426) (second 423) (length 39.036053) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 426) (second 420) (length 45.847725) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 423) (second 422) (length 52.425720) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 422) (second 424) (length 46.039360) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 424) (second 421) (length 48.104946) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 423) (second 427) (length 51.440716) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 427) (second 428) (length 28.823490) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 428) (second 420) (length 55.717888) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 423) (second 428) (length 45.045498) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 427) (second 420) (length 44.441311) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 421) (second 425) (length 30.533636) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 422) (second 426) (length 30.873905) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 429) (second 422) (length 34.309200) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 429) (second 421) (length 34.099766) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 429) (second 425) (length 45.722797) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 429) (second 426) (length 47.117954) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 417) (second 430) (length 30.137911) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 430) (second 431) (length 33.614231) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 431) (second 432) (length 35.860104) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 432) (second 427) (length 40.981392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 428) (second 433) (length 39.007446) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 433) (second 434) (length 26.595100) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 431) (second 434) (length 29.332626) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 431) (second 433) (length 41.082348) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 432) (second 434) (length 42.850704) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 434) (second 430) (length 43.236282) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 432) (second 428) (length 46.830795) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 427) (second 433) (length 50.973400) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 436) (second 437) (length 34.783184) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 437) (second 438) (length 36.224548) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 439) (second 437) (length 44.704254) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 437) (second 441) (length 47.420918) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 441) (second 438) (length 29.727474) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 436) (second 439) (length 29.729462) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 445) (second 446) (length 35.566154) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 446) (second 444) (length 38.452782) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 446) (second 442) (length 48.023636) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 449) (second 446) (length 46.405640) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 438) (second 450) (length 30.153708) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 450) (second 451) (length 30.130444) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 454) (second 455) (length 32.321468) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 455) (second 441) (length 28.747652) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 441) (second 450) (length 41.403069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 438) (second 455) (length 41.645077) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 451) (second 454) (length 27.712116) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 454) (second 450) (length 41.768894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 455) (second 451) (length 42.237778) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 456) (second 457) (length 37.058437) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 457) (second 458) (length 35.609856) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 459) (second 460) (length 37.624092) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 460) (second 461) (length 36.173935) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 459) (second 457) (length 47.309193) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 457) (second 461) (length 48.070869) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 461) (second 458) (length 30.587032) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 458) (second 460) (length 46.297516) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 460) (second 456) (length 49.223953) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 456) (second 459) (length 30.498949) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 478) (second 425) (length 183.118713) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 425) (second 476) (length 175.421906) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 445) (second 480) (length 70.364929) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 482) (second 445) (length 95.494514) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 484) (second 485) (length 79.348320) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 485) (second 486) (length 71.810005) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 484) (second 433) (length 71.679985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 484) (second 344) (length 69.476089) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 484) (second 346) (length 193.276276) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 458) (second 940) (length 32.256954) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 940) (second 941) (length 34.152733) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 941) (second 942) (length 37.528133) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 942) (second 943) (length 36.712933) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 943) (second 944) (length 42.612675) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 944) (second 586) (length 38.614468) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 461) (second 945) (length 30.215405) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 945) (second 946) (length 34.346420) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 946) (second 947) (length 39.782001) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 947) (second 943) (length 42.944202) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 947) (second 951) (length 40.212387) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 458) (second 945) (length 45.813297) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 945) (second 941) (length 45.568954) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 946) (second 940) (length 45.113644) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 940) (second 461) (length 41.645668) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 941) (second 946) (length 28.658747) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 942) (second 947) (length 21.151819) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 951) (second 586) (length 80.460220) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 951) (second 943) (length 14.412523) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 951) (second 944) (length 43.204266) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 942) (second 946) (length 47.472229) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 951) (second 947) (length 40.156254) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 442) (second 952) (length 35.080067) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 952) (second 449) (length 38.838242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 449) (second 953) (length 35.375210) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 456) (second 953) (length 39.795765) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 445) (second 954) (length 32.087933) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 954) (second 459) (length 43.348015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 459) (second 953) (length 51.859974) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 953) (second 445) (length 44.946186) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 445) (second 952) (length 48.603367) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 445) (second 449) (length 29.445305) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 954) (second 449) (length 44.350784) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 456) (second 954) (length 50.558945) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 442) (second 444) (length 29.148596) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 446) (second 952) (length 29.767748) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 489) (second 459) (length 42.432976) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 441) (second 955) (length 36.997746) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 955) (second 439) (length 34.897892) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 436) (second 955) (length 46.829304) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 955) (second 438) (length 46.854336) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 218) (second 346) (length 159.983719) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 416) (second 418) (length 30.931028) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 433) (second 432) (length 27.473808) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 476) (second 478) (length 61.459351) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 480) (second 482) (length 65.543289) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 193) (second 200) (length 136.123230) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 199) (length 137.844940) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 199) (second 193) (length 72.515770) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 960) (length 37.893536) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 960) (second 202) (length 37.330688) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 960) (second 201) (length 68.013382) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 960) (second 193) (length 161.818237) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 960) (second 199) (length 160.661377) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 202) (length 39.314434) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 201) (length 326.987885) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 198) (length 324.384338) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 433) (second 344) (length 100.422714) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 484) (second 423) (length 61.850529) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 423) (second 485) (length 65.182655) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 485) (second 424) (length 59.112041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 424) (second 486) (length 63.438053) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 486) (second 963) (length 63.531792) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 963) (second 964) (length 67.899811) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 964) (second 487) (length 64.477600) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 439) (second 476) (length 165.821762) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 439) (second 478) (length 153.858810) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 421) (second 966) (length 27.953825) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 966) (second 436) (length 31.302393) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 439) (second 967) (length 30.402588) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 967) (second 425) (length 30.001549) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 421) (second 967) (length 42.803711) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 967) (second 436) (length 40.740860) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 966) (second 439) (length 44.266006) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 966) (second 425) (length 39.911861) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 486) (second 967) (length 58.123459) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 967) (second 963) (length 63.509689) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 963) (second 955) (length 58.395184) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 955) (second 964) (length 60.604305) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 964) (second 455) (length 56.579582) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 455) (second 487) (length 58.834267) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 985) (second 986) (length 35.635761) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 985) (second 984) (length 46.220703) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 984) (second 986) (length 28.904980) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 987) (second 984) (length 34.807407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 987) (second 986) (length 44.885704) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 985) (second 451) (length 46.010303) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 987) (second 454) (length 47.045582) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 984) (second 444) (length 49.817421) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 442) (second 986) (length 50.578655) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 442) (second 984) (length 41.741604) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 987) (second 451) (length 37.579548) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 454) (second 985) (length 36.309559) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 986) (second 444) (length 40.186348) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 487) (second 985) (length 58.977665) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 487) (second 988) (length 69.489090) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 985) (second 988) (length 57.808098) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 988) (second 444) (length 61.484699) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 988) (second 989) (length 78.638924) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 989) (second 489) (length 78.897446) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 444) (second 989) (length 58.120365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 989) (second 445) (length 54.694466) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 445) (second 489) (length 56.131138) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 946) (second 991) (length 101.610489) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 991) (second 489) (length 70.049278) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 459) (second 991) (length 42.989380) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 991) (second 461) (length 39.870495) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 482) (second 444) (length 89.956825) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 952) (second 444) (length 46.120609) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 480) (second 444) (length 115.283272) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1006) (second 1004) (length 38.722694) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1008) (second 1009) (length 38.064392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1008) (second 1010) (length 35.148247) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1010) (second 1007) (length 39.453465) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1010) (second 1004) (length 49.218002) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1007) (second 1006) (length 49.647251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1006) (second 1008) (length 45.940132) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1008) (second 1005) (length 48.453590) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1007) (second 1011) (length 41.964233) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1011) (second 1004) (length 33.471317) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1005) (second 1009) (length 30.523802) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1006) (second 1010) (length 30.730259) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1013) (second 1006) (length 34.801277) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1013) (second 1005) (length 36.460358) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1013) (second 1009) (length 48.048401) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1013) (second 1010) (length 47.215889) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1009) (second 258) (length 46.379971) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1005) (second 266) (length 48.439148) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 1009) (length 37.008884) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 1005) (length 36.513470) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1011) (second 492) (length 85.098892) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1004) (second 1007) (length 29.804256) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 263) (length 30.209352) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1013) (second 1008) (length 30.807251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 255) (length 79.700089) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 1010) (length 147.047882) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 257) (length 19.377119) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 264) (length 55.205532) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 289) (length 116.259308) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 276) (second 122) (length 40.569641) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 276) (second 275) (length 41.551701) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 434) (second 347) (length 34.901783) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 430) (length 27.323748) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 347) (length 90.628471) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 1019) (length 29.294504) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1019) (second 418) (length 32.876141) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 416) (second 1019) (length 43.805107) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1019) (second 430) (length 43.080105) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 431) (second 347) (length 45.603394) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 1020) (length 40.682945) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1020) (second 1021) (length 17.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1021) (second 416) (length 30.511271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 1022) (length 17.676344) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1022) (second 315) (length 42.359596) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 418) (second 346) (length 28.661613) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 1022) (length 51.851612) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1022) (second 1021) (length 33.121155) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1021) (second 418) (length 43.617241) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 416) (second 346) (length 40.041691) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 1020) (length 33.987755) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1020) (second 315) (length 50.399437) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1021) (second 346) (length 28.451963) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 283) (length 121.220001) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 85) (second 88) (length 39.113232) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 73) (length 68.665039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 1026) (length 28.254084) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1026) (second 85) (length 28.593658) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1026) (second 87) (length 80.511078) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1026) (second 73) (length 150.961075) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1026) (second 83) (length 148.520004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 87) (length 328.687317) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 82) (length 325.431946) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 1197.268799 297.937897) (pos2 1970.671753 596.860535)) + )) + +;; EOF ;; diff --git a/examples/bridge3.construo b/examples/bridge3.construo new file mode 100644 index 0000000..32cb39c --- /dev/null +++ b/examples/bridge3.construo @@ -0,0 +1,556 @@ +;; Written by construo 0.2.1 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 430.000000 210.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos 430.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 500.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 500.000000 210.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 410.000000 230.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 520.000000 230.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 450.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 480.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 450.000000 190.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 480.000000 190.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 480.000000 220.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 500.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 530.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 530.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 430.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 400.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 400.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 560.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 560.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 590.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 590.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 620.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 620.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 650.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 650.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 410.000000 270.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 450.000000 270.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 480.000000 270.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 520.000000 270.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos 410.000000 320.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 32) (pos 520.000000 320.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 33) (pos 450.000000 220.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 450.000000 90.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 480.000000 90.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 480.000000 60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 450.000000 60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 450.000000 30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 480.000000 30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 41) (pos 460.000000 -20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 470.000000 -20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 470.000000 -70.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 460.000000 -60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 560.000000 70.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos 530.000000 10.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 500.000000 -60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 680.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 680.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 710.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 710.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 58) (pos 740.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 740.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 60) (pos 770.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 61) (pos 770.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 800.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 800.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 830.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 830.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 860.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 860.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 890.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 890.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 70) (pos 920.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 71) (pos 920.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 950.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 950.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 74) (pos 560.000000 190.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 75) (pos 710.000000 60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 76) (pos 890.000000 60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 78) (pos 800.000000 60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 79) (pos 650.000000 60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 80) (pos 590.000000 60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 81) (pos 1500.145752 210.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 82) (pos 1500.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 83) (pos 1430.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 84) (pos 1430.145752 210.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 85) (pos 1520.145752 230.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 86) (pos 1410.145752 230.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 87) (pos 1480.145752 170.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 88) (pos 1450.145752 170.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 89) (pos 1480.145752 190.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 90) (pos 1450.145752 190.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 91) (pos 1450.145752 220.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 92) (pos 1430.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 93) (pos 1400.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 94) (pos 1400.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 95) (pos 1500.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 96) (pos 1530.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 97) (pos 1530.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 98) (pos 1370.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 99) (pos 1370.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 100) (pos 1340.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 101) (pos 1340.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 102) (pos 1310.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 103) (pos 1310.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 104) (pos 1280.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 105) (pos 1280.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 106) (pos 1520.145752 270.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 107) (pos 1480.145752 270.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 108) (pos 1450.145752 270.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 109) (pos 1410.145752 270.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 110) (pos 1520.145752 320.193817) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 111) (pos 1410.145752 320.193817) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 112) (pos 1480.145752 220.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 113) (pos 1480.145752 90.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 114) (pos 1450.145752 90.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 115) (pos 1450.145752 60.193806) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 116) (pos 1480.145752 60.193806) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 117) (pos 1480.145752 30.193806) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 118) (pos 1450.145752 30.193806) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 119) (pos 1470.145752 -19.806194) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 120) (pos 1460.145752 -19.806194) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 121) (pos 1460.145752 -69.806190) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 122) (pos 1470.145752 -59.806194) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 123) (pos 1370.145752 70.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 124) (pos 1400.145752 10.193807) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 125) (pos 1430.145752 -59.806194) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 126) (pos 1250.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 127) (pos 1250.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 128) (pos 1220.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 129) (pos 1220.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 130) (pos 1190.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 131) (pos 1190.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 132) (pos 1160.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 133) (pos 1160.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 134) (pos 1130.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 135) (pos 1130.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 136) (pos 1100.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 137) (pos 1100.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 138) (pos 1070.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 139) (pos 1070.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 140) (pos 1040.145752 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 141) (pos 1040.145752 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 142) (pos 1010.145264 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 143) (pos 1010.145264 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 144) (pos 980.145264 120.193810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 145) (pos 980.145264 150.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 146) (pos 1370.145752 190.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 147) (pos 1220.145752 60.193806) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 148) (pos 1040.145752 60.193806) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 149) (pos 1130.145752 60.193806) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 150) (pos 1280.145752 60.193806) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 151) (pos 1340.145752 60.193806) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 152) (pos 950.000000 60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 153) (pos 980.000000 60.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 154) (pos 1280.000000 20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 155) (pos 1040.000000 40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 156) (pos 890.000000 40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 157) (pos 710.000000 20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 3) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 4) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 5) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 6) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 7) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 6) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 8) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 9) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 3) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 0) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 3) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 5) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 5) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 4) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 13) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 13) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 9) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 15) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 2) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 12) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 1) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 13) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 2) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 1) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 18) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 1) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 19) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 22) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 22) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 20) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 19) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 23) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 23) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 21) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 26) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 24) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 27) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 28) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 30) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 5) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 29) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 28) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 29) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 31) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 28) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 32) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 30) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 33) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 33) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 28) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 29) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 28) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 4) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 33) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 34) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 13) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 16) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 13) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 37) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 38) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 34) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 38) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 34) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 40) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 37) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 38) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 37) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 41) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 41) (length 10.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 40) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 39) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 40) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 20) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 22) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 26) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 47) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 48) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 48) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 48) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 20) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 50) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 14) (length 110.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 52) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 13) (length 180.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 42) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 52) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 48) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 17) (length 189.736664) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 56) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 57) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 56) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 60) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 60) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 61) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 58) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 61) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 61) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 57) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 59) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 60) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 66) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 67) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 66) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 70) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 70) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 68) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 72) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 71) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 67) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 69) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 70) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 73) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 65) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 25) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 26) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 5) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 19) (length 89.442719) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 74) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 24) (length 72.111023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 74) (length 98.488579) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 5) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 19) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 3) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 9) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 74) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 25) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 57) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 68) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 72) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 64) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 75) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 60) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 64) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 76) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 75) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 79) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 25) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 57) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 80) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 21) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 25) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 21) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 49) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 21) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 81) (second 82) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 83) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 84) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 81) (second 85) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 86) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 87) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 88) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 87) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 89) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 89) (second 90) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 90) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 84) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 89) (second 81) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 84) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 86) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 91) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 86) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 85) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 92) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 92) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 94) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 94) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 90) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 89) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 94) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 83) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 89) (second 91) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 82) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 92) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 83) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 96) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 97) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 97) (second 82) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 97) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 82) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 98) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 98) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 98) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 101) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 99) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 98) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 102) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 102) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 103) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 100) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 105) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 103) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 103) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 85) (second 106) (length 40.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 107) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 108) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 109) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 109) (second 86) (length 40.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 108) (length 56.568554) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 85) (second 107) (length 56.568554) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 108) (length 50.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 110) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 107) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 111) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 109) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 89) (second 112) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 91) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 112) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 107) (length 50.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 108) (length 58.309532) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 107) (length 58.309532) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 85) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 81) (second 112) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 113) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 113) (second 114) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 92) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 95) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 113) (second 92) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 115) (length 30.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 116) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 116) (second 113) (length 30.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 116) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 113) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 116) (second 117) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 117) (second 118) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 115) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 116) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 117) (second 115) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 117) (second 119) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 119) (length 10.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 118) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 117) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 118) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 99) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 101) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 102) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 105) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 121) (length 49.999996) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 122) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 121) (second 122) (length 14.142133) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 122) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 99) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 124) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 93) (length 110.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 125) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 125) (second 92) (length 180.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 125) (second 120) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 121) (second 125) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 125) (second 122) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 122) (second 96) (length 189.736664) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 127) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 128) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 128) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 128) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 126) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 131) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 131) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 129) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 128) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 132) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 132) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 130) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 134) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 133) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 129) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 131) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 132) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 135) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 137) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 138) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 138) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 138) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 136) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 141) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 141) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 139) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 138) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 142) (length 30.000488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 142) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 143) (length 30.000488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 140) (length 42.426746) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 145) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 143) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 143) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 139) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 141) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 142) (length 42.426746) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 145) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 137) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 135) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 137) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 134) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 127) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 104) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 105) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 86) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 98) (length 89.442719) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 146) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 103) (length 72.111023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 146) (length 98.488579) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 86) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 98) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 84) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 90) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 146) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 104) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 129) (length 60.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 140) (length 60.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 144) (length 84.853165) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 136) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 147) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 132) (length 67.082047) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 136) (length 67.082047) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 148) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 147) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 150) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 104) (length 60.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 129) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 151) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 100) (length 60.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 104) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 100) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 123) (length 31.622778) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 100) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 144) (length 30.145887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 73) (length 30.145887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 145) (length 42.666176) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 73) (length 42.392757) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 152) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 153) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 144) (length 60.193985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 148) (length 60.146065) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 76) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 72) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 144) (length 67.320366) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 125) (second 154) (length 170.037567) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 155) (length 240.831894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 157) (length 181.107697) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 157) (length 224.722046) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 155) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 76) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 148) (length 20.194332) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 75) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 150) (length 40.194069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + )) + +;; EOF ;; diff --git a/examples/bridge4.construo b/examples/bridge4.construo new file mode 100644 index 0000000..f0901f4 --- /dev/null +++ b/examples/bridge4.construo @@ -0,0 +1,986 @@ +;; Written by construo 0.2.1rc2 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 440.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos 440.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 510.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 510.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 420.000000 510.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 530.000000 510.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 460.000000 450.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 490.000000 450.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 460.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 490.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 490.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 510.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 540.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 540.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 440.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 410.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 410.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 570.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 570.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 600.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 600.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 630.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 630.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 660.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 660.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 420.000000 550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 460.000000 550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 490.000000 550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 530.000000 550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos 420.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 32) (pos 530.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 33) (pos 460.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 460.000000 370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 490.000000 370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 490.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 460.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 460.000000 310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 490.000000 310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 41) (pos 470.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 480.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 480.000000 210.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 470.000000 220.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 570.000000 350.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos 540.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 510.000000 220.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 690.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 690.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 720.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 720.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 58) (pos 750.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 750.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 60) (pos 780.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 61) (pos 780.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 810.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 810.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 840.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 840.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 870.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 870.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 900.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 900.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 70) (pos 930.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 71) (pos 930.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 960.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 960.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 74) (pos 570.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 75) (pos 720.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 76) (pos 900.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 78) (pos 810.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 79) (pos 660.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 80) (pos 600.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 82) (pos 1500.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 83) (pos 1440.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 92) (pos 1440.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 93) (pos 1410.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 94) (pos 1410.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 95) (pos 1500.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 98) (pos 1380.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 99) (pos 1380.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 100) (pos 1350.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 101) (pos 1350.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 102) (pos 1320.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 103) (pos 1320.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 104) (pos 1290.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 105) (pos 1290.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 126) (pos 1260.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 127) (pos 1260.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 128) (pos 1230.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 129) (pos 1230.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 130) (pos 1200.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 131) (pos 1200.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 132) (pos 1170.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 133) (pos 1170.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 134) (pos 1140.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 135) (pos 1140.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 136) (pos 1110.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 137) (pos 1110.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 138) (pos 1080.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 139) (pos 1080.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 140) (pos 1050.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 141) (pos 1050.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 142) (pos 1020.145264 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 143) (pos 1020.145264 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 144) (pos 990.145264 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 145) (pos 990.145264 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 147) (pos 1230.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 148) (pos 1050.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 149) (pos 1140.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 150) (pos 1290.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 151) (pos 1350.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 152) (pos 960.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 153) (pos 990.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 154) (pos 1290.000000 300.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 155) (pos 1050.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 156) (pos 900.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 157) (pos 720.000000 300.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 177) (pos 1530.072876 400.096924) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 178) (pos 1530.072876 430.096893) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 179) (pos 1560.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 180) (pos 1560.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 181) (pos 1590.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 182) (pos 1590.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 203) (pos 1620.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 204) (pos 1620.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 205) (pos 1650.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 206) (pos 1650.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 207) (pos 1680.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 208) (pos 1680.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 209) (pos 1710.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 210) (pos 1710.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 211) (pos 1740.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 212) (pos 1740.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 213) (pos 1770.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 214) (pos 1770.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 215) (pos 1800.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 216) (pos 1800.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 217) (pos 1830.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 218) (pos 1830.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 219) (pos 1860.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 220) (pos 1860.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 221) (pos 1890.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 222) (pos 1890.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 224) (pos 1650.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 225) (pos 1830.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 226) (pos 1740.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 227) (pos 1590.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 228) (pos 1530.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 229) (pos 2440.145752 490.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 230) (pos 2440.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 231) (pos 2370.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 232) (pos 2370.145752 490.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 233) (pos 2460.145752 510.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 234) (pos 2350.145752 510.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 235) (pos 2420.145752 450.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 236) (pos 2390.145752 450.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 237) (pos 2420.145752 470.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 238) (pos 2390.145752 470.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 239) (pos 2390.145752 500.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 240) (pos 2370.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 241) (pos 2340.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 242) (pos 2340.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 243) (pos 2440.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 244) (pos 2470.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 245) (pos 2470.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 246) (pos 2310.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 247) (pos 2310.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 248) (pos 2280.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 249) (pos 2280.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 250) (pos 2250.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 251) (pos 2250.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 252) (pos 2220.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 253) (pos 2220.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 254) (pos 2460.145752 550.193848) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 255) (pos 2420.145752 550.193848) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 256) (pos 2390.145752 550.193848) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 257) (pos 2350.145752 550.193848) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 258) (pos 2460.145752 600.193848) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 259) (pos 2350.145752 600.193848) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 260) (pos 2420.145752 500.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 261) (pos 2420.145752 370.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 262) (pos 2390.145752 370.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 263) (pos 2390.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 264) (pos 2420.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 265) (pos 2420.145752 310.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 266) (pos 2390.145752 310.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 267) (pos 2410.145752 260.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 268) (pos 2400.145752 260.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 269) (pos 2400.145752 210.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 270) (pos 2410.145752 220.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 271) (pos 2310.145752 350.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 272) (pos 2340.145752 290.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 273) (pos 2370.145752 220.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 274) (pos 2190.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 275) (pos 2190.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 276) (pos 2160.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 277) (pos 2160.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 278) (pos 2130.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 279) (pos 2130.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 280) (pos 2100.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 281) (pos 2100.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 282) (pos 2070.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 283) (pos 2070.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 284) (pos 2040.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 285) (pos 2040.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 286) (pos 2010.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 287) (pos 2010.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 288) (pos 1980.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 289) (pos 1980.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 290) (pos 1950.145264 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 291) (pos 1950.145264 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 292) (pos 1920.145264 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 293) (pos 1920.145264 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 294) (pos 2310.145752 470.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 295) (pos 2160.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 296) (pos 1980.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 297) (pos 2070.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 298) (pos 2220.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 299) (pos 2280.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 300) (pos 1890.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 301) (pos 1920.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 302) (pos 2220.000000 300.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 303) (pos 1980.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 304) (pos 1830.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 312) (pos 1470.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 313) (pos 1470.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 314) (pos 1440.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 315) (pos 1440.000000 210.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 316) (pos 1590.000000 300.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 319) (pos 1440.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 320) (pos 1400.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 322) (pos 1400.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 323) (pos 1440.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 324) (pos 1480.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 325) (pos 1480.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 327) (pos 1400.000000 520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 328) (pos 1440.000000 520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 329) (pos 1480.000000 520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 330) (pos 1400.000000 480.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 331) (pos 1440.000000 480.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 332) (pos 1480.000000 480.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 333) (pos 1420.000000 310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 334) (pos 1420.000000 280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 335) (pos 1460.000000 280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 336) (pos 1460.000000 310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 337) (pos 1420.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 338) (pos 1460.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 339) (pos 1410.000000 360.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 341) (pos 1470.000000 360.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 344) (pos 1480.000000 420.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 345) (pos 1460.000000 420.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 346) (pos 1420.000000 420.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 347) (pos 1400.000000 420.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 348) (pos 340.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 349) (pos 340.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 350) (pos 260.000000 430.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 351) (pos 260.000000 400.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 352) (pos 2540.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 353) (pos 2540.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 354) (pos 2610.000000 400.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 355) (pos 2610.000000 430.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 359) (pos 1440.000000 360.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 360) (pos 1510.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 361) (pos 1370.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 362) (pos 1370.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 363) (pos 1510.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 3) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 4) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 5) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 6) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 7) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 6) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 8) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 9) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 3) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 0) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 3) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 5) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 5) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 4) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 13) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 13) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 9) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 15) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 2) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 12) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 1) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 13) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 2) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 1) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 18) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 1) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 19) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 22) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 22) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 20) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 19) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 23) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 23) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 21) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 26) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 24) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 27) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 28) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 30) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 5) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 29) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 28) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 29) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 31) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 28) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 32) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 30) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 33) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 33) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 28) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 29) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 28) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 4) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 33) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 34) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 13) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 16) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 13) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 37) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 38) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 34) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 38) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 34) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 40) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 37) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 38) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 37) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 41) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 41) (length 10.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 40) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 39) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 40) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 20) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 22) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 26) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 47) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 48) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 48) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 48) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 20) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 50) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 14) (length 110.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 52) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 13) (length 180.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 42) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 52) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 48) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 17) (length 189.736664) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 56) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 57) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 56) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 60) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 60) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 61) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 58) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 61) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 61) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 57) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 59) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 60) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 66) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 67) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 66) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 70) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 70) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 68) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 72) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 71) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 67) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 69) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 70) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 73) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 65) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 25) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 26) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 5) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 19) (length 89.442719) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 74) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 24) (length 72.111023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 74) (length 98.488579) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 5) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 19) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 3) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 9) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 74) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 25) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 57) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 68) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 72) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 64) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 75) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 60) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 64) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 76) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 75) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 79) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 25) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 57) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 80) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 21) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 25) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 21) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 49) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 21) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 92) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 94) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 94) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 94) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 83) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 82) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 177) (length 29.927280) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 178) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 82) (length 29.927280) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 178) (length 42.306343) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 82) (length 42.443539) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 98) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 98) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 98) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 101) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 99) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 98) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 102) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 102) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 103) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 100) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 105) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 103) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 103) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 99) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 101) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 102) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 105) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 127) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 128) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 128) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 128) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 126) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 131) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 131) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 129) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 128) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 132) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 132) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 130) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 134) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 133) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 129) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 131) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 132) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 135) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 137) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 138) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 138) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 138) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 136) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 141) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 141) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 139) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 138) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 142) (length 30.000488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 142) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 143) (length 30.000488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 140) (length 42.426731) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 145) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 143) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 143) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 139) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 141) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 142) (length 42.426731) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 145) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 137) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 135) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 137) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 134) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 127) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 104) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 105) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 104) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 129) (length 60.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 140) (length 60.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 144) (length 84.853180) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 136) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 147) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 132) (length 67.082069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 136) (length 67.082069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 148) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 147) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 150) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 104) (length 60.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 129) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 151) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 100) (length 60.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 104) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 100) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 144) (length 30.145887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 73) (length 30.145887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 145) (length 42.666164) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 73) (length 42.392754) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 152) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 153) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 144) (length 60.193993) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 148) (length 60.146065) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 76) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 72) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 144) (length 67.320374) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 155) (length 240.831894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 157) (length 181.107697) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 157) (length 224.722046) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 155) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 76) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 148) (length 20.194313) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 75) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 150) (length 40.194050) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 178) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 179) (length 29.927280) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 179) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 180) (length 29.927280) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 177) (length 42.306343) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 181) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 182) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 180) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 180) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 179) (length 42.443558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 182) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 204) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 205) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 205) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 205) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 203) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 208) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 208) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 206) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 205) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 209) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 209) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 208) (second 210) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 207) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 211) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 212) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 210) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 210) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 206) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 208) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 208) (second 209) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 212) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 214) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 215) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 215) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 215) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 213) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 216) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 215) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 219) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 219) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 218) (second 220) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 217) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 221) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 222) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 220) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 220) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 216) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 218) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 218) (second 219) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 222) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 214) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 212) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 214) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 211) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 181) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 204) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 181) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 182) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 181) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 206) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 217) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 221) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 213) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 224) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 209) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 213) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 225) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 224) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 227) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 181) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 206) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 228) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 228) (second 177) (length 60.096970) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 228) (second 181) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 177) (length 84.869904) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 230) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 231) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 232) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 233) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 232) (second 234) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 235) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 236) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 235) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 237) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 238) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 238) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 238) (second 232) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 229) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 232) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 234) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 238) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 234) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 233) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 240) (length 76.157722) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 240) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 241) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 242) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 242) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 238) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 237) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 242) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 231) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 239) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 230) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 240) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 231) (length 76.157722) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 244) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 245) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 245) (second 230) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 245) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 230) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 246) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 246) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 246) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 241) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 249) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 246) (second 249) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 247) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 246) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 250) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 250) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 251) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 248) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 252) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 253) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 251) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 251) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 233) (second 254) (length 40.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 255) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 256) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 257) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 234) (length 40.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 256) (length 56.568584) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 233) (second 255) (length 56.568584) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 256) (length 50.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 258) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 255) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 259) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 259) (second 257) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 260) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 238) (second 260) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 255) (length 50.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 256) (length 58.309570) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 255) (length 58.309570) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 233) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 260) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 261) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 262) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 240) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 243) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 240) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 263) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 264) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 261) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 264) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 261) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 265) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 266) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 263) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 264) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 263) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 267) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 267) (length 10.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 266) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 265) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 266) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 247) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 249) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 250) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 253) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 269) (length 49.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 270) (length 39.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 270) (length 14.142125) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 270) (length 41.231041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 247) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 272) (length 67.082069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 241) (length 110.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 273) (length 76.157715) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 240) (length 180.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 268) (length 49.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 273) (length 31.622772) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 270) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 270) (second 244) (length 189.736679) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 275) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 276) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 276) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 276) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 274) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 279) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 276) (second 279) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 277) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 276) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 280) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 280) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 281) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 278) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 282) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 283) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 281) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 281) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 277) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 279) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 280) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 283) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 285) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 286) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 286) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 285) (second 286) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 284) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 289) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 289) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 287) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 286) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 290) (length 30.000488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 290) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 291) (length 30.000488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 288) (length 42.426731) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 292) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 293) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 291) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 291) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 285) (second 287) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 289) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 290) (length 42.426731) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 293) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 285) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 283) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 285) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 282) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 252) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 275) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 252) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 253) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 234) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 246) (length 89.442719) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 294) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 251) (length 72.111023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 294) (length 98.488579) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 234) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 246) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 232) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 238) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 294) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 295) (second 252) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 295) (second 277) (length 60.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 288) (length 60.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 292) (length 84.853180) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 284) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 295) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 280) (length 67.082069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 284) (length 67.082069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 296) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 295) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 295) (second 298) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 252) (length 60.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 277) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 299) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 299) (second 248) (length 60.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 299) (second 252) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 248) (length 84.852837) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 299) (second 271) (length 31.622786) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 248) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 292) (length 30.145887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 222) (length 30.145887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 293) (length 42.666164) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 222) (length 42.392754) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 300) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 301) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 292) (length 60.193993) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 296) (length 60.146065) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 225) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 221) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 292) (length 67.320374) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 302) (length 170.037567) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 303) (length 240.831894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 303) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 225) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 303) (second 296) (length 20.194313) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 298) (length 40.194050) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 312) (length 29.854877) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 313) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 83) (length 29.854877) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 95) (length 30.146376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 313) (length 30.146376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 82) (length 42.666512) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 313) (length 42.393101) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 92) (length 42.186310) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 83) (length 42.461052) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 314) (length 60.193993) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 314) (second 228) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 314) (second 151) (length 89.854454) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 92) (length 108.166557) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 228) (second 92) (length 108.153046) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 315) (length 174.928558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 316) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 304) (length 240.831894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 315) (length 174.928558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 314) (length 130.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 320) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 320) (second 322) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 323) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 319) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 324) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 324) (second 325) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 325) (second 319) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 319) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 324) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 322) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 328) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 323) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 329) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 324) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 323) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 327) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 330) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 331) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 328) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 332) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 329) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 328) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 330) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 334) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 335) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 336) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 333) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 336) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 333) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 334) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 338) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 335) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 335) (length 44.721359) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 334) (length 44.721359) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 315) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 338) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 339) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 341) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 344) (second 345) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 346) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 347) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 331) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 344) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 330) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 346) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 348) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 349) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 17) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 348) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 18) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 350) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 350) (second 351) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 349) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 348) (length 85.440041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 350) (length 85.440041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 352) (length 69.854515) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 353) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 245) (length 69.854515) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 353) (length 75.947510) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 245) (length 76.100464) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 354) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 354) (second 355) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 355) (second 353) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 355) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 354) (second 353) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 332) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 330) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 329) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 324) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 325) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 320) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 322) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 327) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 339) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 341) (second 344) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 339) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 346) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 345) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 341) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 341) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 339) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 359) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 333) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 360) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 360) (second 324) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 361) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 322) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 362) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 362) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 320) (second 361) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 360) (second 363) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 363) (second 325) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 360) (second 325) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 55.976479 535.778259) (pos2 342.630981 616.399841)) + (rect (pos1 -206.219421 476.290192) (pos2 107.308968 616.631470)) + (rect (pos1 19.813515 384.710663) (pos2 258.692291 539.981873)) + (rect (pos1 -601.513306 375.966736) (pos2 22.557476 779.074646)) + (rect (pos1 2612.985840 396.972504) (pos2 2816.032715 561.201538)) + (rect (pos1 2690.482666 429.539459) (pos2 3063.730713 605.712524)) + (rect (pos1 2588.756592 491.897797) (pos2 2887.355225 620.295166)) + (rect (pos1 2814.922119 397.667145) (pos2 3295.665527 639.531921)) + )) + +;; EOF ;; diff --git a/examples/bridge5.construo b/examples/bridge5.construo new file mode 100644 index 0000000..e095ff6 --- /dev/null +++ b/examples/bridge5.construo @@ -0,0 +1,214 @@ +;; Written by construo 0.2.1 +(construo-scene + (version 3) + (author "Michael Edwards,OneArmedMan LLC,201 533 0343,201 533 0343" "") + (particles + (particle (id 0) (pos -969.634338 490.842438) (velocity 0.224355 -0.011392) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos -640.400452 490.851959) (velocity 0.354994 -0.018307) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos -939.726685 460.946075) (velocity 0.374167 0.111605) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos -909.822083 461.082520) (velocity 0.390648 0.195561) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos -879.908997 461.217987) (velocity 0.410344 0.263716) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos -849.969299 461.322968) (velocity 0.429356 0.309110) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos -819.999329 461.365173) (velocity 0.439510 0.331568) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos -790.047302 461.345551) (velocity 0.441853 0.314227) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos -760.068176 461.296539) (velocity 0.411470 0.239634) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos -730.124084 461.196533) (velocity 0.388734 0.154949) (fixed #f) (mass 0.100000)) + (particle (id 10) (pos -700.208130 461.071625) (velocity 0.370066 0.081049) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos -670.301758 460.946136) (velocity 0.350796 0.022541) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos -939.793945 491.021057) (velocity 0.272598 0.098646) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos -909.908447 491.142334) (velocity 0.311966 0.181184) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos -879.977051 491.261719) (velocity 0.354927 0.248416) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos -850.006287 491.344452) (velocity 0.385879 0.297199) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos -820.013367 491.383728) (velocity 0.424864 0.314983) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos -790.014038 491.369965) (velocity 0.454641 0.303954) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos -760.028992 491.317535) (velocity 0.468900 0.248025) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos -730.062012 491.239899) (velocity 0.454826 0.170179) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos -700.131104 491.130402) (velocity 0.435893 0.093699) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos -670.244019 491.020050) (velocity 0.401622 0.028361) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos -1009.481384 490.798401) (velocity 0.181276 -0.148719) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos -989.921204 391.063599) (velocity 0.642093 -0.098379) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos -600.552551 490.807831) (velocity 0.352843 0.053866) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos -620.091980 391.074646) (velocity 0.321103 0.025819) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos -1009.654419 450.957153) (velocity 0.365798 -0.165207) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos -969.558899 450.866730) (velocity 0.353897 -0.000541) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos -600.372803 450.970306) (velocity 0.353818 0.024898) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos -640.469727 450.873627) (velocity 0.368332 0.012232) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos -1240.136230 392.765930) (velocity 0.682797 -1.406351) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos -1239.931763 412.754883) (velocity 0.566230 -1.401046) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos -379.875305 392.747070) (velocity 0.325759 -0.033784) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos -380.086182 412.738953) (velocity 0.332921 -0.033606) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos -1250.036133 402.953125) (velocity 0.627964 -1.477919) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos -1260.164307 393.145844) (velocity 0.687718 -1.558505) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos -1259.899658 413.145294) (velocity 0.552682 -1.554549) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos -369.988586 402.943146) (velocity 0.334504 -0.040485) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos -359.841187 393.117706) (velocity 0.326731 -0.044334) (fixed #f) (mass 0.100000)) + (particle (id 41) (pos -360.115753 413.121063) (velocity 0.336141 -0.044978) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos -969.655457 530.700317) (velocity 0.067859 -0.011678) (fixed #f) (mass 0.100000)) + (particle (id 43) (pos -1009.986023 570.301086) (velocity 0.005898 -0.059119) (fixed #f) (mass 0.100000)) + (particle (id 44) (pos -1009.825684 530.536316) (velocity 0.092661 -0.111487) (fixed #f) (mass 0.100000)) + (particle (id 45) (pos -969.938232 570.424072) (velocity -0.000369 -0.010617) (fixed #f) (mass 0.100000)) + (particle (id 46) (pos -1030.000000 590.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 47) (pos -990.000000 590.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 48) (pos -950.000000 590.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 49) (pos -600.195068 530.536926) (velocity 0.200954 0.081819) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos -640.065552 570.432861) (velocity 0.021632 -0.039034) (fixed #f) (mass 0.100000)) + (particle (id 51) (pos -600.017212 570.299805) (velocity 0.025942 0.056854) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos -640.367065 530.713013) (velocity 0.195729 -0.056647) (fixed #f) (mass 0.100000)) + (particle (id 53) (pos -580.000000 590.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 54) (pos -620.000000 590.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 55) (pos -660.000000 590.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + ) + (springs + (spring (first 2) (second 0) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 4) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 6) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 10) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 1) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 13) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 21) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 13) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 3) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 15) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 5) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 17) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 7) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 18) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 8) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 19) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 10) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 21) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 11) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 20) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 9) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 18) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 14) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 4) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 13) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 13) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 2) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 3) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 5) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 16) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 6) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 15) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 16) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 17) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 8) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 20) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 10) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 11) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 1) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 6) (length 183.847763) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 7) (length 183.847763) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 4) (length 130.384048) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 9) (length 130.384048) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 2) (length 86.023254) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 11) (length 86.023254) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 27) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 0) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 22) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 27) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 0) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 23) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 23) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 28) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 1) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 28) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 25) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 29) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 24) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 31) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 26) (length 233.452347) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 30) (length 237.697281) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 23) (length 250.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 31) (length 250.798721) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 22) (length 243.515915) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 33) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 24) (length 234.093994) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 32) (length 241.660919) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 28) (length 228.035080) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 33) (length 223.606796) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 25) (length 240.831894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 32) (length 240.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 30) (length 250.798721) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 5) (length 156.524765) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 3) (length 106.301460) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 8) (length 156.524765) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 10) (length 106.301460) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 30) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 34) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 30) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 34) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 36) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 31) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 40) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 39) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 39) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 41) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 33) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 39) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 33) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 39) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 40) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 42) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 43) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 44) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 42) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 45) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 45) (second 44) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 0) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 22) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 44) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 0) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 43) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 47) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 45) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 45) (second 48) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 47) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 46) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 45) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 49) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 50) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 51) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 52) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 24) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 1) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 52) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 49) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 51) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 53) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 54) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 55) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 50) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 54) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 51) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 52) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 24) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 6) (length 211.846039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 7) (length 211.788483) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 -385.019958 420.243500) (pos2 -235.503220 599.663635)) + (rect (pos1 -1420.135864 420.243500) (pos2 -1233.815063 599.663635)) + (rect (pos1 -1231.514771 466.248718) (pos2 -1132.603638 599.663696)) + (rect (pos1 -1130.303467 496.152008) (pos2 -1077.397583 601.963867)) + (rect (pos1 -1077.397583 542.157166) (pos2 -1040.593384 601.963867)) + (rect (pos1 -481.630798 473.149445) (pos2 -389.620483 601.963867)) + (rect (pos1 -534.536743 503.052795) (pos2 -486.231293 613.465149)) + (rect (pos1 -575.941345 537.556641) (pos2 -534.536743 608.864624)) + )) + +;; EOF ;; diff --git a/examples/bridge6-1.construo b/examples/bridge6-1.construo new file mode 100644 index 0000000..84386cc --- /dev/null +++ b/examples/bridge6-1.construo @@ -0,0 +1,876 @@ +;; Written by construo 0.2.1rc2 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 440.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos 440.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 510.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 510.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 420.000000 510.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 530.000000 510.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 460.000000 450.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 490.000000 450.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 460.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 490.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 490.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 510.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 540.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 540.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 440.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 410.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 410.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 570.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 570.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 600.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 600.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 630.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 630.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 660.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 660.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 420.000000 550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 460.000000 550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 490.000000 550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 530.000000 550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos 420.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 32) (pos 530.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 33) (pos 460.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 460.000000 370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 490.000000 370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 490.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 460.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 460.000000 310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 490.000000 310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 690.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 690.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 720.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 720.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 58) (pos 750.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 750.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 60) (pos 780.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 61) (pos 780.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 810.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 810.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 840.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 840.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 870.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 870.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 900.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 900.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 70) (pos 930.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 71) (pos 930.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 960.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 960.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 74) (pos 570.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 82) (pos 1500.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 83) (pos 1440.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 92) (pos 1440.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 93) (pos 1410.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 94) (pos 1410.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 95) (pos 1500.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 98) (pos 1380.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 99) (pos 1380.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 100) (pos 1350.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 101) (pos 1350.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 102) (pos 1320.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 103) (pos 1320.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 104) (pos 1290.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 105) (pos 1290.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 126) (pos 1260.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 127) (pos 1260.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 128) (pos 1230.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 129) (pos 1230.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 130) (pos 1200.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 131) (pos 1200.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 132) (pos 1170.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 133) (pos 1170.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 134) (pos 1140.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 135) (pos 1140.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 136) (pos 1110.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 137) (pos 1110.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 138) (pos 1080.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 139) (pos 1080.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 140) (pos 1050.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 141) (pos 1050.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 142) (pos 1020.145264 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 143) (pos 1020.145264 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 144) (pos 990.145264 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 145) (pos 990.145264 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 154) (pos 1290.000000 300.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 155) (pos 1050.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 156) (pos 900.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 157) (pos 720.000000 300.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 177) (pos 1530.072876 400.096924) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 178) (pos 1530.072876 430.096893) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 179) (pos 1560.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 180) (pos 1560.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 181) (pos 1590.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 182) (pos 1590.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 203) (pos 1620.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 204) (pos 1620.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 205) (pos 1650.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 206) (pos 1650.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 207) (pos 1680.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 208) (pos 1680.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 209) (pos 1710.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 210) (pos 1710.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 211) (pos 1740.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 212) (pos 1740.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 213) (pos 1770.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 214) (pos 1770.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 215) (pos 1800.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 216) (pos 1800.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 217) (pos 1830.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 218) (pos 1830.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 219) (pos 1860.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 220) (pos 1860.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 221) (pos 1890.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 222) (pos 1890.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 229) (pos 2440.145752 490.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 230) (pos 2440.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 231) (pos 2370.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 232) (pos 2370.145752 490.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 233) (pos 2460.145752 510.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 234) (pos 2350.145752 510.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 235) (pos 2420.145752 450.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 236) (pos 2390.145752 450.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 237) (pos 2420.145752 470.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 238) (pos 2390.145752 470.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 239) (pos 2390.145752 500.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 240) (pos 2370.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 241) (pos 2340.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 242) (pos 2340.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 243) (pos 2440.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 244) (pos 2470.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 245) (pos 2470.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 246) (pos 2310.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 247) (pos 2310.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 248) (pos 2280.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 249) (pos 2280.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 250) (pos 2250.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 251) (pos 2250.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 252) (pos 2220.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 253) (pos 2220.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 254) (pos 2460.145752 550.193848) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 255) (pos 2420.145752 550.193848) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 256) (pos 2390.145752 550.193848) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 257) (pos 2350.145752 550.193848) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 258) (pos 2460.145752 600.193848) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 259) (pos 2350.145752 600.193848) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 260) (pos 2420.145752 500.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 261) (pos 2420.145752 370.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 262) (pos 2390.145752 370.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 263) (pos 2390.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 264) (pos 2420.145752 340.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 265) (pos 2420.145752 310.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 266) (pos 2390.145752 310.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 267) (pos 2410.145752 260.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 268) (pos 2400.145752 260.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 269) (pos 2400.145752 210.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 270) (pos 2410.145752 220.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 271) (pos 2310.145752 350.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 272) (pos 2340.145752 290.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 273) (pos 2370.145752 220.193802) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 274) (pos 2190.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 275) (pos 2190.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 276) (pos 2160.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 277) (pos 2160.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 278) (pos 2130.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 279) (pos 2130.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 280) (pos 2100.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 281) (pos 2100.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 282) (pos 2070.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 283) (pos 2070.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 284) (pos 2040.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 285) (pos 2040.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 286) (pos 2010.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 287) (pos 2010.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 288) (pos 1980.145752 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 289) (pos 1980.145752 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 290) (pos 1950.145264 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 291) (pos 1950.145264 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 292) (pos 1920.145264 400.193817) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 293) (pos 1920.145264 430.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 294) (pos 2310.145752 470.193787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 302) (pos 2220.000000 300.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 303) (pos 1980.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 304) (pos 1830.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 312) (pos 1470.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 313) (pos 1470.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 315) (pos 1440.000000 210.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 316) (pos 1590.000000 300.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 319) (pos 1440.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 320) (pos 1400.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 322) (pos 1400.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 323) (pos 1440.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 324) (pos 1480.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 325) (pos 1480.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 327) (pos 1400.000000 520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 328) (pos 1440.000000 520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 329) (pos 1480.000000 520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 330) (pos 1400.000000 480.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 331) (pos 1440.000000 480.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 332) (pos 1480.000000 480.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 333) (pos 1420.000000 310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 334) (pos 1420.000000 280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 335) (pos 1460.000000 280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 336) (pos 1460.000000 310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 337) (pos 1420.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 338) (pos 1460.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 339) (pos 1410.000000 360.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 341) (pos 1470.000000 360.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 344) (pos 1480.000000 420.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 345) (pos 1460.000000 420.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 346) (pos 1420.000000 420.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 347) (pos 1400.000000 420.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 348) (pos 340.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 349) (pos 340.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 350) (pos 260.000000 430.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 351) (pos 260.000000 400.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 352) (pos 2540.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 353) (pos 2540.000000 430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 354) (pos 2610.000000 400.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 355) (pos 2610.000000 430.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 359) (pos 1440.000000 360.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 360) (pos 1510.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 361) (pos 1370.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 362) (pos 1370.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 363) (pos 1510.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 364) (pos 460.000000 280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 366) (pos 490.000000 280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 368) (pos 490.000000 250.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 369) (pos 460.000000 250.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 370) (pos 470.000000 210.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 371) (pos 460.000000 600.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 372) (pos 490.000000 600.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 3) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 4) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 5) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 6) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 7) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 6) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 8) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 9) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 3) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 0) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 3) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 5) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 5) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 4) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 13) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 13) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 9) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 15) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 2) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 12) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 1) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 13) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 2) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 1) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 18) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 1) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 19) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 22) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 22) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 20) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 19) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 23) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 23) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 21) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 26) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 24) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 27) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 28) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 30) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 5) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 29) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 28) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 29) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 31) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 28) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 32) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 30) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 33) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 33) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 28) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 29) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 28) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 4) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 33) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 34) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 13) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 16) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 13) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 37) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 38) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 34) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 38) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 34) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 40) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 37) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 38) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 37) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 20) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 22) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 26) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 56) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 57) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 56) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 60) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 60) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 61) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 58) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 61) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 61) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 57) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 59) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 60) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 66) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 67) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 66) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 70) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 70) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 68) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 72) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 71) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 67) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 69) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 70) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 73) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 65) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 25) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 26) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 5) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 19) (length 89.442719) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 74) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 24) (length 72.111023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 74) (length 98.488579) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 5) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 19) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 3) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 9) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 74) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 92) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 94) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 94) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 94) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 83) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 82) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 177) (length 29.927280) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 178) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 82) (length 29.927280) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 178) (length 42.306343) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 82) (length 42.443539) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 98) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 98) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 98) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 101) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 99) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 98) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 102) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 102) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 103) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 100) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 105) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 103) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 103) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 99) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 101) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 102) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 105) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 127) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 128) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 128) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 128) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 126) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 131) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 131) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 129) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 128) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 132) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 132) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 130) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 134) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 133) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 129) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 131) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 132) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 135) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 137) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 138) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 138) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 138) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 136) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 141) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 141) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 139) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 138) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 142) (length 30.000488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 142) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 143) (length 30.000488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 140) (length 42.426731) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 145) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 143) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 143) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 139) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 141) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 142) (length 42.426731) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 145) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 137) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 135) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 137) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 134) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 127) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 104) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 105) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 144) (length 30.145887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 73) (length 30.145887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 145) (length 42.666164) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 73) (length 42.392754) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 155) (length 240.831894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 157) (length 181.107697) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 155) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 178) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 179) (length 29.927280) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 179) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 180) (length 29.927280) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 177) (length 42.306343) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 181) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 182) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 180) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 180) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 179) (length 42.443558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 182) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 204) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 205) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 205) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 205) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 203) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 208) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 208) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 206) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 205) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 209) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 209) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 208) (second 210) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 207) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 211) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 212) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 210) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 210) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 206) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 208) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 208) (second 209) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 212) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 214) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 215) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 215) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 215) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 213) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 216) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 215) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 219) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 219) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 218) (second 220) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 217) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 221) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 222) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 220) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 220) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 216) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 218) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 218) (second 219) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 222) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 214) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 212) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 214) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 211) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 181) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 204) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 181) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 182) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 230) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 231) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 232) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 233) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 232) (second 234) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 235) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 236) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 235) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 237) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 238) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 238) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 238) (second 232) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 229) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 232) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 234) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 238) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 234) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 233) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 240) (length 76.157722) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 240) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 241) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 242) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 242) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 238) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 237) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 242) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 231) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 239) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 230) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 240) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 231) (length 76.157722) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 244) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 245) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 245) (second 230) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 245) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 230) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 246) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 246) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 246) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 241) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 249) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 246) (second 249) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 247) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 246) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 250) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 250) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 251) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 248) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 252) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 253) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 251) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 251) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 233) (second 254) (length 40.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 255) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 256) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 257) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 234) (length 40.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 256) (length 56.568584) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 233) (second 255) (length 56.568584) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 256) (length 50.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 258) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 255) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 259) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 259) (second 257) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 260) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 238) (second 260) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 255) (length 50.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 256) (length 58.309570) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 255) (length 58.309570) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 233) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 260) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 261) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 262) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 240) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 243) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 240) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 263) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 264) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 261) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 264) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 261) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 265) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 266) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 263) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 264) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 263) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 267) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 267) (length 10.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 266) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 265) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 266) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 247) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 249) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 250) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 253) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 269) (length 49.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 270) (length 39.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 270) (length 14.142125) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 270) (length 41.231041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 247) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 272) (length 67.082069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 241) (length 110.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 273) (length 76.157715) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 240) (length 180.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 268) (length 49.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 273) (length 31.622772) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 270) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 270) (second 244) (length 189.736679) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 275) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 276) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 276) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 276) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 274) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 279) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 276) (second 279) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 277) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 276) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 280) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 280) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 281) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 278) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 282) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 283) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 281) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 281) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 277) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 279) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 280) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 283) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 285) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 286) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 286) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 285) (second 286) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 284) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 289) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 289) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 287) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 286) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 290) (length 30.000488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 290) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 291) (length 30.000488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 288) (length 42.426731) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 292) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 293) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 291) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 291) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 285) (second 287) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 289) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 290) (length 42.426731) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 293) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 285) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 283) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 285) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 282) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 252) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 275) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 252) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 253) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 234) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 246) (length 89.442719) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 294) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 251) (length 72.111023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 294) (length 98.488579) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 234) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 246) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 232) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 238) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 294) (length 82.462112) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 248) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 292) (length 30.145887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 222) (length 30.145887) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 293) (length 42.666164) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 222) (length 42.392754) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 302) (length 170.037567) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 303) (length 240.831894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 303) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 312) (length 29.854877) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 313) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 83) (length 29.854877) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 95) (length 30.146376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 313) (length 30.146376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 82) (length 42.666512) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 313) (length 42.393101) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 92) (length 42.186310) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 83) (length 42.461052) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 315) (length 174.928558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 304) (length 240.831894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 315) (length 174.928558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 320) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 320) (second 322) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 323) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 319) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 324) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 324) (second 325) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 325) (second 319) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 319) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 324) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 322) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 328) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 323) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 329) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 324) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 323) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 327) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 330) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 331) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 328) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 332) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 329) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 328) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 330) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 334) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 335) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 336) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 333) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 336) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 333) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 334) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 338) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 335) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 335) (length 44.721359) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 334) (length 44.721359) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 315) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 338) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 339) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 341) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 344) (second 345) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 346) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 347) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 331) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 344) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 330) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 346) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 348) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 349) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 17) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 348) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 18) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 350) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 350) (second 351) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 349) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 348) (length 85.440041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 350) (length 85.440041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 352) (length 69.854515) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 353) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 245) (length 69.854515) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 353) (length 75.947510) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 245) (length 76.100464) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 354) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 354) (second 355) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 355) (second 353) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 355) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 354) (second 353) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 332) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 330) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 329) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 324) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 325) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 320) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 322) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 327) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 339) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 341) (second 344) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 339) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 346) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 345) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 341) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 341) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 339) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 359) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 333) (length 53.851646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 360) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 360) (second 324) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 361) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 322) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 362) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 362) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 320) (second 361) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 360) (second 363) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 363) (second 325) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 360) (second 325) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 364) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 366) (second 40) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 366) (second 364) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 364) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 366) (second 39) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 366) (second 368) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 368) (second 364) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 364) (second 369) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 369) (second 368) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 369) (second 366) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 368) (second 370) (length 44.721359) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 370) (second 369) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 370) (length 265.706604) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 370) (second 351) (length 283.196045) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 339) (second 337) (length 100.498756) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 341) (length 100.498756) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 57) (length 100.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 68) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 104) (length 100.193924) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 140) (length 80.193947) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 181) (length 100.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 304) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 303) (second 288) (length 80.193947) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 252) (length 100.193924) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 354) (length 282.957947) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 352) (length 149.767136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 92) (length 190.193878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 371) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 371) (second 31) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 372) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 372) (second 371) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 371) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 372) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 55.976479 535.778259) (pos2 342.630981 616.399841)) + (rect (pos1 -206.219421 476.290192) (pos2 107.308968 616.631470)) + (rect (pos1 19.813515 384.710663) (pos2 258.692291 539.981873)) + (rect (pos1 -601.513306 375.966736) (pos2 22.557476 779.074646)) + (rect (pos1 2612.985840 396.972504) (pos2 2816.032715 561.201538)) + (rect (pos1 2690.482666 429.539459) (pos2 3063.730713 605.712524)) + (rect (pos1 2588.756592 491.897797) (pos2 2887.355225 620.295166)) + (rect (pos1 2814.922119 397.667145) (pos2 3295.665527 639.531921)) + )) + +;; EOF ;; diff --git a/examples/bridge6.construo b/examples/bridge6.construo new file mode 100644 index 0000000..c09569d --- /dev/null +++ b/examples/bridge6.construo @@ -0,0 +1,1064 @@ +;; Written by construo 0.2.1rc2 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 1) (pos 970.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 2) (pos 970.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 3) (pos 1000.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 1000.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 7) (pos 1030.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 1030.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 9) (pos 1060.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 12) (pos 1060.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 13) (pos 1090.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 1090.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 1120.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 1120.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 1150.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 1150.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 1180.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 1180.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 1210.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 1210.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 1240.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 1240.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 1270.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 1270.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 1300.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 1300.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos 1330.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 1330.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 1360.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 1360.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 1390.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 1390.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 1420.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 1420.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 43) (pos 1450.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 44) (pos 1450.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 45) (pos 1480.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 46) (pos 1480.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 1510.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 1510.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 1540.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 1540.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 53) (pos 1570.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 1570.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 1600.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 1600.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 1630.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 58) (pos 1630.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 1660.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 1660.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 1690.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 1690.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 1720.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 1720.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 1750.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 1750.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 1780.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 1780.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 1810.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 74) (pos 1810.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 75) (pos 1840.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 76) (pos 1840.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 77) (pos 1870.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 78) (pos 1870.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 79) (pos 1900.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 82) (pos 1900.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 83) (pos 1930.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 84) (pos 1930.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 85) (pos 1960.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 86) (pos 1960.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 87) (pos 1990.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 88) (pos 1990.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 89) (pos 2020.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 90) (pos 2020.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 91) (pos 2050.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 92) (pos 2050.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 93) (pos 2080.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 94) (pos 2080.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 95) (pos 2110.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 96) (pos 2110.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 97) (pos 2140.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 98) (pos 2140.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 99) (pos 2170.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 100) (pos 2170.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 101) (pos 2200.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 102) (pos 2200.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 103) (pos 2230.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 104) (pos 2230.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 105) (pos 2260.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 106) (pos 2260.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 107) (pos 2290.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 108) (pos 2290.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 109) (pos 2320.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 110) (pos 2320.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 111) (pos 2350.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 112) (pos 2350.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 113) (pos 2380.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 114) (pos 2380.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 115) (pos 2410.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 116) (pos 2410.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 117) (pos 2440.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 118) (pos 2440.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 119) (pos 2470.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 120) (pos 2470.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 121) (pos 2500.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 122) (pos 2500.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 123) (pos 2530.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 124) (pos 2530.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 125) (pos 2560.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 126) (pos 2560.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 127) (pos 2590.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 128) (pos 2590.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 129) (pos 2620.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 130) (pos 2620.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 131) (pos 2650.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 132) (pos 2650.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 133) (pos 2680.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 134) (pos 2680.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 135) (pos 2710.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 136) (pos 2710.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 137) (pos 2740.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 138) (pos 2740.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 140) (pos 2770.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 142) (pos 2800.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 144) (pos 2830.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 146) (pos 2860.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 149) (pos 970.000000 -430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 150) (pos 1000.000000 -430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 151) (pos 970.000000 -460.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 152) (pos 1000.000000 -460.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 153) (pos 970.000000 -490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 154) (pos 1000.000000 -490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 155) (pos 970.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 156) (pos 1000.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 157) (pos 970.000000 -550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 158) (pos 1000.000000 -550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 159) (pos 970.000000 -580.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 160) (pos 1000.000000 -580.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 161) (pos 970.000000 -610.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 162) (pos 1000.000000 -610.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 163) (pos 1030.000000 -430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 164) (pos 1060.000000 -430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 165) (pos 1030.000000 -460.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 166) (pos 1060.000000 -460.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 167) (pos 1030.000000 -490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 168) (pos 1060.000000 -490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 169) (pos 1030.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 170) (pos 1060.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 171) (pos 1030.000000 -550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 172) (pos 1060.000000 -550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 173) (pos 1030.000000 -580.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 174) (pos 1060.000000 -580.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 175) (pos 1030.000000 -610.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 176) (pos 1060.000000 -610.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 178) (pos 970.000000 -640.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 179) (pos 1000.000000 -640.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 180) (pos 970.000000 -670.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 181) (pos 1000.000000 -670.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 182) (pos 970.000000 -700.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 183) (pos 1000.000000 -700.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 184) (pos 970.000000 -730.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 185) (pos 1000.000000 -730.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 186) (pos 970.000000 -760.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 187) (pos 1000.000000 -760.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 188) (pos 970.000000 -790.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 189) (pos 1000.000000 -790.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 190) (pos 970.000000 -820.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 191) (pos 1000.000000 -820.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 192) (pos 1030.000000 -640.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 193) (pos 1060.000000 -640.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 194) (pos 1030.000000 -670.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 195) (pos 1060.000000 -670.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 196) (pos 1030.000000 -700.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 197) (pos 1060.000000 -700.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 198) (pos 1030.000000 -730.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 199) (pos 1060.000000 -730.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 200) (pos 1030.000000 -760.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 201) (pos 1060.000000 -760.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 202) (pos 1030.000000 -790.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 203) (pos 1060.000000 -790.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 204) (pos 1030.000000 -820.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 205) (pos 1060.000000 -820.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 206) (pos 2770.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 207) (pos 2800.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 208) (pos 2770.000000 -430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 209) (pos 2800.000000 -430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 210) (pos 2770.000000 -460.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 211) (pos 2800.000000 -460.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 212) (pos 2770.000000 -490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 213) (pos 2800.000000 -490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 214) (pos 2770.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 215) (pos 2800.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 216) (pos 2770.000000 -550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 217) (pos 2800.000000 -550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 218) (pos 2770.000000 -580.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 219) (pos 2800.000000 -580.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 220) (pos 2830.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 221) (pos 2860.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 222) (pos 2830.000000 -430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 223) (pos 2860.000000 -430.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 224) (pos 2830.000000 -460.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 225) (pos 2860.000000 -460.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 226) (pos 2830.000000 -490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 227) (pos 2860.000000 -490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 228) (pos 2830.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 229) (pos 2860.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 230) (pos 2830.000000 -550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 231) (pos 2860.000000 -550.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 232) (pos 2830.000000 -580.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 233) (pos 2860.000000 -580.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 234) (pos 2770.000000 -610.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 235) (pos 2800.000000 -610.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 236) (pos 2770.000000 -640.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 237) (pos 2800.000000 -640.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 238) (pos 2770.000000 -670.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 239) (pos 2800.000000 -670.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 240) (pos 2770.000000 -700.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 241) (pos 2800.000000 -700.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 242) (pos 2770.000000 -730.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 243) (pos 2800.000000 -730.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 244) (pos 2770.000000 -760.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 245) (pos 2800.000000 -760.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 246) (pos 2770.000000 -790.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 247) (pos 2800.000000 -790.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 248) (pos 2830.000000 -610.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 249) (pos 2860.000000 -610.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 250) (pos 2830.000000 -640.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 251) (pos 2860.000000 -640.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 252) (pos 2830.000000 -670.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 253) (pos 2860.000000 -670.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 254) (pos 2830.000000 -700.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 255) (pos 2860.000000 -700.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 256) (pos 2830.000000 -730.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 257) (pos 2860.000000 -730.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 258) (pos 2830.000000 -760.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 259) (pos 2860.000000 -760.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 260) (pos 2830.000000 -790.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 261) (pos 2860.000000 -790.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 262) (pos 2770.000000 -820.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 263) (pos 2800.000000 -820.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 264) (pos 2830.000000 -820.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 265) (pos 2860.000000 -820.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 266) (pos 3180.000000 -450.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 267) (pos 610.000000 -440.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 271) (pos 1180.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 272) (pos 1330.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 273) (pos 1480.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 274) (pos 1630.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 275) (pos 1780.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 278) (pos 1930.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 279) (pos 2080.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 280) (pos 2230.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 281) (pos 2380.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 283) (pos 2530.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 284) (pos 2680.000000 -520.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 286) (pos 690.000000 -430.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 287) (pos 3100.000000 -450.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 288) (pos 1883.587769 -315.513550) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 289) (pos 1913.587769 -315.513550) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 290) (pos 1883.587769 -345.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 291) (pos 1913.587769 -345.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 292) (pos 1883.587769 -375.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 293) (pos 1913.587769 -375.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 294) (pos 1883.587769 -405.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 295) (pos 1913.587769 -405.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 296) (pos 1883.587769 -435.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 297) (pos 1913.587769 -435.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 298) (pos 1883.587769 -465.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 299) (pos 1913.587769 -465.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 300) (pos 1883.587769 -495.513519) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 301) (pos 1913.587769 -495.513519) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 302) (pos 1943.587769 -315.513550) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 303) (pos 1973.587769 -315.513550) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 304) (pos 1943.587769 -345.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 305) (pos 1973.587769 -345.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 306) (pos 1943.587769 -375.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 307) (pos 1973.587769 -375.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 308) (pos 1943.587769 -405.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 309) (pos 1973.587769 -405.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 310) (pos 1943.587769 -435.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 311) (pos 1973.587769 -435.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 312) (pos 1943.587769 -465.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 313) (pos 1973.587769 -465.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 314) (pos 1943.587769 -495.513519) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 315) (pos 1973.587769 -495.513519) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 316) (pos 1883.587769 -525.513489) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 317) (pos 1913.587769 -525.513489) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 318) (pos 1883.587769 -555.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 319) (pos 1913.587769 -555.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 320) (pos 1883.587769 -585.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 321) (pos 1913.587769 -585.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 322) (pos 1883.587769 -615.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 323) (pos 1913.587769 -615.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 324) (pos 1883.587769 -645.513489) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 325) (pos 1913.587769 -645.513489) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 326) (pos 1883.587769 -675.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 327) (pos 1913.587769 -675.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 328) (pos 1883.587769 -705.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 329) (pos 1913.587769 -705.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 330) (pos 1943.587769 -525.513489) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 331) (pos 1973.587769 -525.513489) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 332) (pos 1943.587769 -555.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 333) (pos 1973.587769 -555.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 334) (pos 1943.587769 -585.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 335) (pos 1973.587769 -585.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 336) (pos 1943.587769 -615.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 337) (pos 1973.587769 -615.513428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 338) (pos 1943.587769 -645.513489) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 339) (pos 1973.587769 -645.513489) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 340) (pos 1943.587769 -675.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 341) (pos 1973.587769 -675.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 342) (pos 1943.587769 -705.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 343) (pos 1973.587769 -705.513550) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 1) (second 2) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 3) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 3) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 6) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 3) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 3) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 8) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 13) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 13) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 16) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 19) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 22) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 25) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 26) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 27) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 25) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 27) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 28) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 28) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 32) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 33) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 33) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 34) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 34) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 36) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 37) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 37) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 38) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 38) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 39) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 42) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 43) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 43) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 44) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 44) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 45) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 45) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 46) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 47) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 45) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 45) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 47) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 48) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 48) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 49) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 49) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 52) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 53) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 49) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 49) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 53) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 55) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 57) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 57) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 58) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 58) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 59) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 65) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 67) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 67) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 68) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 68) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 69) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 72) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 74) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 74) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 75) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 75) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 76) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 77) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 75) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 75) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 77) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 78) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 78) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 79) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 79) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 82) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 83) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 79) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 79) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 83) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 84) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 84) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 85) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 85) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 86) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 87) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 85) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 85) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 87) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 88) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 88) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 89) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 90) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 91) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 91) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 92) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 92) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 93) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 94) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 95) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 95) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 96) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 96) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 97) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 98) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 99) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 99) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 100) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 100) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 101) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 102) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 103) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 103) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 105) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 105) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 106) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 107) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 105) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 105) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 107) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 108) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 108) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 109) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 109) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 110) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 111) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 109) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 109) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 111) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 112) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 112) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 113) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 113) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 114) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 115) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 113) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 113) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 115) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 116) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 116) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 117) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 116) (second 117) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 116) (second 118) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 119) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 117) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 117) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 119) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 120) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 120) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 121) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 121) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 122) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 122) (second 123) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 121) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 122) (second 121) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 122) (second 123) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 124) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 122) (second 124) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 125) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 125) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 126) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 127) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 125) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 125) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 127) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 128) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 128) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 129) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 129) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 130) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 131) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 129) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 129) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 131) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 132) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 132) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 133) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 134) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 136) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 136) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 137) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 137) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 138) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 206) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 137) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 137) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 206) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 140) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 140) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 207) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 207) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 142) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 220) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 207) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 207) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 220) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 221) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 221) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 146) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 221) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 149) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 150) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 3) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 1) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 151) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 152) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 152) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 149) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 153) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 154) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 152) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 151) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 156) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 157) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 158) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 156) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 155) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 159) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 159) (second 160) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 160) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 160) (second 157) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 159) (second 161) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 161) (second 162) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 160) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 159) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 153) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 153) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 154) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 164) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 165) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 166) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 164) (second 166) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 163) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 167) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 168) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 168) (second 166) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 168) (second 165) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 170) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 171) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 171) (second 172) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 170) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 169) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 171) (second 173) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 174) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 174) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 174) (second 171) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 175) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 175) (second 176) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 176) (second 174) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 176) (second 173) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 170) (second 167) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 167) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 170) (second 168) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 175) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 160) (second 173) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 171) (second 158) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 169) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 154) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 165) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 150) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 7) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 3) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 164) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 164) (second 7) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 150) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 152) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 154) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 171) (second 156) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 158) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 175) (second 160) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 179) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 180) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 181) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 181) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 178) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 182) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 183) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 183) (second 181) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 183) (second 180) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 185) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 186) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 186) (second 187) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 185) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 184) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 186) (second 188) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 189) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 189) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 189) (second 186) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 190) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 190) (second 191) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 189) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 188) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 185) (second 182) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 182) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 185) (second 183) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 193) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 194) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 194) (second 195) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 193) (second 195) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 195) (second 192) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 194) (second 196) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 197) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 195) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 194) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 199) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 200) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 201) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 199) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 198) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 202) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 203) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 203) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 200) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 204) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 205) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 203) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 202) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 199) (second 196) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 196) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 199) (second 197) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 204) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 189) (second 202) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 187) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 185) (second 198) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 183) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 194) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 179) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 194) (second 179) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 181) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 183) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 185) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 187) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 189) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 161) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 162) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 175) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 193) (second 176) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 193) (second 175) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 162) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 161) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 207) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 208) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 208) (second 209) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 209) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 206) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 208) (second 210) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 211) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 209) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 208) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 213) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 214) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 215) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 213) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 212) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 216) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 217) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 217) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 214) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 218) (second 219) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 217) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 216) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 210) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 210) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 211) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 221) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 222) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 223) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 223) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 223) (second 220) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 224) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 225) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 223) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 222) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 227) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 228) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 228) (second 229) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 227) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 226) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 228) (second 230) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 231) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 231) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 228) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 232) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 232) (second 233) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 233) (second 231) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 233) (second 230) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 224) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 224) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 225) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 232) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 230) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 228) (second 215) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 226) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 211) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 222) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 207) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 207) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 209) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 211) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 228) (second 213) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 215) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 232) (second 217) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 235) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 236) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 237) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 237) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 234) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 238) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 238) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 237) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 236) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 241) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 242) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 243) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 241) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 240) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 244) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 245) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 245) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 245) (second 242) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 246) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 246) (second 247) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 245) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 244) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 238) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 238) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 249) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 250) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 251) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 251) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 248) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 252) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 253) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 251) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 250) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 255) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 256) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 257) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 255) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 254) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 258) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 259) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 259) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 259) (second 256) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 260) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 261) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 259) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 258) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 252) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 252) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 253) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 260) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 245) (second 258) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 243) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 254) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 250) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 235) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 235) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 237) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 239) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 241) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 243) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 245) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 219) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 232) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 233) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 232) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 219) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 218) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 246) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 263) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 263) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 246) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 264) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 260) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 247) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 265) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 261) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 260) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 265) (length 489.182983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 190) (second 267) (length 523.450073) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 9) (length 169.705627) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 19) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 272) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 33) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 193) (length 169.705627) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 273) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 45) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 274) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 274) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 275) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 275) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 275) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 83) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 279) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 279) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 280) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 103) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 281) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 113) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 281) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 123) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 284) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 133) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 206) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 236) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 205) (length 644.127319) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 262) (length 617.737793) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 184) (length 410.365692) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 287) (length 368.781769) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 205) (length 403.608734) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 273) (length 516.139526) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 262) (length 492.036591) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 283) (length 384.187469) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 279) (length 752.396179) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 205) (length 780.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 289) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 290) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 291) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 291) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 288) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 292) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 293) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 291) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 290) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 295) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 296) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 297) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 295) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 294) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 298) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 299) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 299) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 299) (second 296) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 300) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 301) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 299) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 298) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 295) (second 292) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 292) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 295) (second 293) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 303) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 304) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 305) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 303) (second 305) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 305) (second 302) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 306) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 306) (second 307) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 305) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 304) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 309) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 310) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 310) (second 311) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 311) (second 309) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 311) (second 308) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 310) (second 312) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 313) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 311) (second 313) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 310) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 314) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 314) (second 315) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 313) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 312) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 309) (second 306) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 306) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 309) (second 307) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 314) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 299) (second 312) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 310) (second 297) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 295) (second 308) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 306) (second 293) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 304) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 289) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 289) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 306) (second 291) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 293) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 310) (second 295) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 297) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 314) (second 299) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 317) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 318) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 318) (second 319) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 317) (second 319) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 316) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 318) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 320) (second 321) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 321) (second 319) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 321) (second 318) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 323) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 324) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 324) (second 325) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 325) (second 323) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 325) (second 322) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 324) (second 326) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 326) (second 327) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 325) (second 327) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 324) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 326) (second 328) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 329) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 327) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 326) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 320) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 321) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 331) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 332) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 333) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 333) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 330) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 334) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 335) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 333) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 332) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 337) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 338) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 339) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 339) (second 337) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 339) (second 336) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 340) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 340) (second 341) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 339) (second 341) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 341) (second 338) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 340) (second 342) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 342) (second 343) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 343) (second 341) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 343) (second 340) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 334) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 334) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 335) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 342) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 340) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 325) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 336) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 321) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 332) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 317) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 317) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 319) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 321) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 323) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 340) (second 325) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 342) (second 327) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 300) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 317) (second 301) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 314) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 315) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 314) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 301) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 317) (second 300) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 278) (length 191.231201) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 343) (length 190.565399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 2872.375244 -415.965271) (pos2 3270.108398 46.265171)) + (rect (pos1 367.731110 -405.215698) (pos2 962.539246 100.012894)) + )) + +;; EOF ;; diff --git a/examples/bridgio.construo b/examples/bridgio.construo new file mode 100644 index 0000000..4c8b988 --- /dev/null +++ b/examples/bridgio.construo @@ -0,0 +1,416 @@ +;; Written by construo 0.1.0pre2 +(construo-scene + (particles + (particle (id 1) (pos 86.000000 327.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #t) (mass 10.000000)) + (particle (id 2) (pos 118.000000 368.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 168.000000 403.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 245.000000 427.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 338.000000 436.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 445.000000 434.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 550.000000 420.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 651.000000 392.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 714.000000 343.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #t) (mass 10.000000)) + (particle (id 17) (pos 355.000000 380.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 419.000000 378.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos 363.000000 321.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos 412.000000 318.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 369.000000 261.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 414.000000 263.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos 393.000000 192.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 391.000000 68.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27) (pos 343.000000 295.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos 427.000000 298.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 323.000000 347.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos 439.000000 349.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 91) (pos 388.000000 451.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 98) (pos 205.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 99) (pos 295.000000 432.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 100) (pos 503.000000 425.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 101) (pos 390.000000 433.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 306) (pos 134.000000 360.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 307) (pos 215.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 308) (pos 287.000000 412.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 309) (pos 498.000000 408.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 310) (pos 599.000000 391.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 311) (pos 660.000000 362.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 361) (pos 337.000000 124.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 362) (pos 279.000000 178.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 363) (pos 217.000000 233.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 364) (pos 146.000000 288.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 365) (pos 651.000000 288.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 366) (pos 591.000000 241.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 367) (pos 529.000000 186.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 368) (pos 464.000000 120.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 369) (pos 86.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 370) (pos 719.000000 293.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 371) (pos 59.000000 298.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 372) (pos 757.000000 320.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 373) (pos 60.000000 389.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 374) (pos 42.000000 409.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 375) (pos 65.000000 426.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 376) (pos 83.000000 417.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 377) (pos 78.000000 442.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 378) (pos 40.000000 433.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 379) (pos 34.000000 384.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 380) (pos 82.000000 392.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 411) (pos 757.000000 382.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 412) (pos 732.000000 379.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 413) (pos 743.000000 405.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 414) (pos 726.000000 427.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 415) (pos 757.000000 417.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 416) (pos 774.000000 443.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 417) (pos 775.000000 409.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 535) (pos 501.000000 441.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 536) (pos 616.000000 417.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 537) (pos 700.000000 373.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 538) (pos 284.000000 446.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 539) (pos 195.000000 428.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 660) (pos 178.000000 374.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 667) (pos 55.000000 444.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 668) (pos 72.000000 459.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 669) (pos 39.000000 452.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 670) (pos 53.000000 460.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 671) (pos 95.000000 431.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 672) (pos 746.000000 439.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 673) (pos 759.000000 454.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 674) (pos 721.000000 403.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 675) (pos 711.000000 419.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 676) (pos 713.000000 439.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 677) (pos 727.000000 450.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 678) (pos 709.000000 461.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 679) (pos 694.000000 437.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 680) (pos 692.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 709) (pos 375.000000 156.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 710) (pos 407.000000 152.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 711) (pos 391.000000 110.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 762) (pos 718.000000 270.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 763) (pos 86.000000 261.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1118) (pos 416.000000 114.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1119) (pos 365.000000 113.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1120) (pos 426.000000 200.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1121) (pos 353.000000 194.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1190) (pos 322.000000 468.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1191) (pos 447.000000 465.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1278) (pos 249.000000 460.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1279) (pos 535.000000 450.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1280) (pos 640.000000 426.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1281) (pos 155.000000 416.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1485) (pos 22.000000 405.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1486) (pos 23.000000 359.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1487) (pos 41.000000 357.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1488) (pos 53.000000 368.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1489) (pos 77.000000 368.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1490) (pos 101.000000 378.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1491) (pos 102.000000 401.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1492) (pos 739.000000 358.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1493) (pos 765.000000 357.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1494) (pos 775.000000 374.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1495) (pos 781.000000 389.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1496) (pos 706.000000 393.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1735) (pos 183.000000 248.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1736) (pos 631.000000 256.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1741) (pos 355.000000 91.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1742) (pos 290.000000 142.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1743) (pos 241.000000 205.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1744) (pos 433.000000 87.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1745) (pos 509.000000 146.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1746) (pos 578.000000 204.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1751) (pos 624.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1752) (pos 551.000000 211.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1753) (pos 486.000000 152.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1754) (pos 430.000000 105.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1755) (pos 312.000000 158.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1756) (pos 255.000000 214.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1757) (pos 190.000000 274.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1758) (pos 119.000000 423.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1759) (pos 111.000000 443.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1760) (pos 94.000000 451.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1761) (pos 129.000000 439.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1762) (pos 118.000000 457.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1763) (pos 87.000000 467.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1764) (pos 689.000000 457.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1765) (pos 741.000000 461.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1766) (pos 757.000000 474.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1767) (pos 732.000000 480.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 1) (second 2) (length 52.009613)) + (spring (first 2) (second 3) (length 61.032780)) + (spring (first 3) (second 4) (length 80.653580)) + (spring (first 4) (second 5) (length 93.434471)) + (spring (first 5) (second 6) (length 107.018692)) + (spring (first 6) (second 7) (length 105.929222)) + (spring (first 7) (second 8) (length 104.809349)) + (spring (first 8) (second 9) (length 79.812279)) + (spring (first 5) (second 17) (length 58.523499)) + (spring (first 17) (second 18) (length 64.031242)) + (spring (first 18) (second 6) (length 61.741398)) + (spring (first 18) (second 5) (length 99.624290)) + (spring (first 17) (second 6) (length 104.957130)) + (spring (first 17) (second 19) (length 59.539902)) + (spring (first 19) (second 20) (length 49.091751)) + (spring (first 20) (second 18) (length 60.406952)) + (spring (first 20) (second 17) (length 84.219948)) + (spring (first 19) (second 18) (length 79.906197)) + (spring (first 19) (second 21) (length 60.299255)) + (spring (first 21) (second 22) (length 45.044422)) + (spring (first 22) (second 20) (length 55.036350)) + (spring (first 22) (second 19) (length 77.233414)) + (spring (first 21) (second 20) (length 71.400284)) + (spring (first 21) (second 23) (length 73.054771)) + (spring (first 23) (second 22) (length 74.040527)) + (spring (first 21) (second 27) (length 42.801868)) + (spring (first 27) (second 19) (length 32.802441)) + (spring (first 22) (second 28) (length 37.336308)) + (spring (first 28) (second 20) (length 25.000000)) + (spring (first 17) (second 29) (length 45.967381)) + (spring (first 29) (second 19) (length 47.707443)) + (spring (first 20) (second 30) (length 41.109608)) + (spring (first 30) (second 18) (length 35.227829)) + (spring (first 1) (second 3) (length 111.803398)) + (spring (first 7) (second 9) (length 181.176712)) + (spring (first 5) (second 91) (length 52.201534)) + (spring (first 91) (second 6) (length 59.481091)) + (spring (first 3) (second 98) (length 38.600517)) + (spring (first 98) (second 4) (length 42.059483)) + (spring (first 4) (second 99) (length 50.249378)) + (spring (first 99) (second 5) (length 43.185646)) + (spring (first 6) (second 100) (length 58.694122)) + (spring (first 100) (second 7) (length 47.265209)) + (spring (first 6) (second 101) (length 55.009090)) + (spring (first 101) (second 5) (length 52.086468)) + (spring (first 1) (second 306) (length 58.249462)) + (spring (first 306) (second 3) (length 54.817879)) + (spring (first 3) (second 307) (length 47.010635)) + (spring (first 307) (second 4) (length 39.051247)) + (spring (first 4) (second 308) (length 44.598206)) + (spring (first 308) (second 5) (length 56.364883)) + (spring (first 6) (second 100) (length 58.694122)) + (spring (first 6) (second 309) (length 59.033890)) + (spring (first 309) (second 7) (length 53.366657)) + (spring (first 7) (second 310) (length 56.938564)) + (spring (first 310) (second 8) (length 52.009613)) + (spring (first 8) (second 311) (length 31.320919)) + (spring (first 311) (second 9) (length 57.245087)) + (spring (first 26) (second 361) (length 77.794601)) + (spring (first 361) (second 362) (length 79.246452)) + (spring (first 362) (second 363) (length 82.879433)) + (spring (first 1) (second 364) (length 71.561165)) + (spring (first 363) (second 364) (length 89.810913)) + (spring (first 9) (second 365) (length 83.630135)) + (spring (first 365) (second 366) (length 76.216797)) + (spring (first 366) (second 367) (length 82.879433)) + (spring (first 367) (second 368) (length 92.633690)) + (spring (first 368) (second 26) (length 89.627007)) + (spring (first 1) (second 369) (length 47.000000)) + (spring (first 364) (second 369) (length 60.530983)) + (spring (first 365) (second 370) (length 68.183578)) + (spring (first 370) (second 9) (length 50.249378)) + (spring (first 1) (second 371) (length 39.623226)) + (spring (first 371) (second 369) (length 32.449963)) + (spring (first 370) (second 372) (length 46.615448)) + (spring (first 372) (second 9) (length 48.764740)) + (spring (first 371) (second 373) (length 91.005493)) + (spring (first 373) (second 374) (length 26.907248)) + (spring (first 374) (second 375) (length 28.600698)) + (spring (first 375) (second 376) (length 20.124611)) + (spring (first 376) (second 373) (length 36.235340)) + (spring (first 373) (second 375) (length 37.336308)) + (spring (first 374) (second 376) (length 41.773197)) + (spring (first 376) (second 377) (length 25.495098)) + (spring (first 377) (second 375) (length 20.615528)) + (spring (first 375) (second 378) (length 25.961510)) + (spring (first 378) (second 374) (length 24.083189)) + (spring (first 374) (second 379) (length 26.248810)) + (spring (first 379) (second 373) (length 26.476404)) + (spring (first 373) (second 380) (length 22.203604)) + (spring (first 380) (second 376) (length 25.019993)) + (spring (first 372) (second 411) (length 62.000000)) + (spring (first 411) (second 412) (length 25.179358)) + (spring (first 412) (second 413) (length 28.231188)) + (spring (first 413) (second 414) (length 27.802877)) + (spring (first 414) (second 415) (length 32.572994)) + (spring (first 415) (second 416) (length 31.064449)) + (spring (first 416) (second 417) (length 34.014702)) + (spring (first 411) (second 417) (length 32.449963)) + (spring (first 415) (second 413) (length 18.439089)) + (spring (first 411) (second 413) (length 26.925823)) + (spring (first 415) (second 417) (length 19.697716)) + (spring (first 413) (second 417) (length 32.249031)) + (spring (first 411) (second 415) (length 35.000000)) + (spring (first 6) (second 535) (length 56.435802)) + (spring (first 535) (second 7) (length 53.310413)) + (spring (first 7) (second 536) (length 66.068146)) + (spring (first 536) (second 8) (length 43.011627)) + (spring (first 8) (second 537) (length 52.554733)) + (spring (first 537) (second 9) (length 33.105892)) + (spring (first 5) (second 538) (length 54.918121)) + (spring (first 538) (second 4) (length 43.382023)) + (spring (first 4) (second 539) (length 50.009998)) + (spring (first 539) (second 3) (length 36.796738)) + (spring (first 307) (second 308) (length 72.691124)) + (spring (first 539) (second 538) (length 90.801979)) + (spring (first 538) (second 91) (length 104.120125)) + (spring (first 91) (second 535) (length 113.441612)) + (spring (first 535) (second 536) (length 117.477661)) + (spring (first 536) (second 537) (length 94.826157)) + (spring (first 539) (second 2) (length 97.616600)) + (spring (first 311) (second 310) (length 67.542580)) + (spring (first 310) (second 309) (length 102.420700)) + (spring (first 309) (second 101) (length 110.855759)) + (spring (first 101) (second 308) (length 105.118980)) + (spring (first 307) (second 306) (length 91.241440)) + (spring (first 306) (second 2) (length 17.888544)) + (spring (first 307) (second 98) (length 15.620500)) + (spring (first 539) (second 98) (length 17.204651)) + (spring (first 308) (second 99) (length 21.540659)) + (spring (first 99) (second 538) (length 17.804493)) + (spring (first 306) (second 660) (length 46.173584)) + (spring (first 660) (second 307) (length 46.400433)) + (spring (first 660) (second 3) (length 30.675724)) + (spring (first 660) (second 1) (length 103.310211)) + (spring (first 91) (second 101) (length 18.110771)) + (spring (first 667) (second 375) (length 20.591261)) + (spring (first 377) (second 668) (length 18.027756)) + (spring (first 378) (second 669) (length 19.026299)) + (spring (first 378) (second 670) (length 29.966648)) + (spring (first 375) (second 671) (length 30.413813)) + (spring (first 413) (second 672) (length 34.132095)) + (spring (first 415) (second 672) (length 24.596748)) + (spring (first 417) (second 673) (length 47.759815)) + (spring (first 414) (second 672) (length 23.323807)) + (spring (first 412) (second 674) (length 26.400757)) + (spring (first 412) (second 675) (length 45.177429)) + (spring (first 674) (second 413) (length 22.090721)) + (spring (first 674) (second 414) (length 24.515301)) + (spring (first 676) (second 414) (length 17.691807)) + (spring (first 677) (second 414) (length 23.021729)) + (spring (first 678) (second 414) (length 38.013157)) + (spring (first 679) (second 414) (length 33.526108)) + (spring (first 680) (second 675) (length 19.646883)) + (spring (first 372) (second 365) (length 110.724884)) + (spring (first 371) (second 364) (length 87.572830)) + (spring (first 412) (second 372) (length 64.078079)) + (spring (first 379) (second 371) (length 89.560036)) + (spring (first 380) (second 371) (length 96.772926)) + (spring (first 417) (second 372) (length 90.801979)) + (spring (first 413) (second 372) (length 86.145226)) + (spring (first 374) (second 371) (length 112.294258)) + (spring (first 23) (second 709) (length 40.249222)) + (spring (first 709) (second 21) (length 105.171288)) + (spring (first 22) (second 710) (length 111.220505)) + (spring (first 710) (second 23) (length 42.379242)) + (spring (first 709) (second 710) (length 32.249031)) + (spring (first 709) (second 711) (length 48.703182)) + (spring (first 711) (second 710) (length 44.944408)) + (spring (first 709) (second 26) (length 89.442719)) + (spring (first 26) (second 711) (length 42.000000)) + (spring (first 26) (second 710) (length 85.510231)) + (spring (first 372) (second 762) (length 63.411354)) + (spring (first 762) (second 370) (length 23.021729)) + (spring (first 762) (second 365) (length 69.375786)) + (spring (first 364) (second 763) (length 65.795135)) + (spring (first 763) (second 371) (length 45.803928)) + (spring (first 763) (second 369) (length 19.000000)) + (spring (first 763) (second 1) (length 66.000000)) + (spring (first 762) (second 9) (length 73.109505)) + (spring (first 1) (second 4) (length 187.832367)) + (spring (first 4) (second 101) (length 145.124084)) + (spring (first 101) (second 7) (length 160.527252)) + (spring (first 7) (second 9) (length 181.176712)) + (spring (first 308) (second 309) (length 211.037918)) + (spring (first 26) (second 1118) (length 52.354561)) + (spring (first 1118) (second 710) (length 39.051247)) + (spring (first 709) (second 1119) (length 44.147480)) + (spring (first 1119) (second 26) (length 51.971146)) + (spring (first 1119) (second 711) (length 26.172504)) + (spring (first 711) (second 1118) (length 25.317978)) + (spring (first 710) (second 1120) (length 51.623638)) + (spring (first 1120) (second 22) (length 64.132675)) + (spring (first 21) (second 1121) (length 68.883957)) + (spring (first 1121) (second 709) (length 43.908997)) + (spring (first 1121) (second 23) (length 40.049969)) + (spring (first 23) (second 1120) (length 33.955853)) + (spring (first 538) (second 1190) (length 43.908997)) + (spring (first 1190) (second 91) (length 68.154236)) + (spring (first 91) (second 1191) (length 60.638271)) + (spring (first 1191) (second 535) (length 59.093147)) + (spring (first 1190) (second 1191) (length 125.035995)) + (spring (first 539) (second 1278) (length 62.769421)) + (spring (first 1278) (second 1190) (length 73.437050)) + (spring (first 1191) (second 1279) (length 89.269257)) + (spring (first 1279) (second 536) (length 87.464279)) + (spring (first 1279) (second 1280) (length 107.707939)) + (spring (first 1280) (second 537) (length 80.056229)) + (spring (first 1278) (second 1281) (length 103.788246)) + (spring (first 1281) (second 2) (length 60.605282)) + (spring (first 91) (second 9) (length 343.423950)) + (spring (first 91) (second 1) (length 326.465912)) + (spring (first 309) (second 18) (length 84.504440)) + (spring (first 17) (second 308) (length 75.153175)) + (spring (first 1190) (second 17) (length 93.984039)) + (spring (first 1191) (second 18) (length 91.394745)) + (spring (first 379) (second 1485) (length 24.186773)) + (spring (first 379) (second 1486) (length 27.313000)) + (spring (first 379) (second 1487) (length 27.892651)) + (spring (first 379) (second 1488) (length 24.839485)) + (spring (first 380) (second 1489) (length 24.515301)) + (spring (first 380) (second 1489) (length 24.515301)) + (spring (first 380) (second 1490) (length 23.600847)) + (spring (first 380) (second 1491) (length 21.931713)) + (spring (first 412) (second 1492) (length 22.135944)) + (spring (first 411) (second 1493) (length 26.248810)) + (spring (first 411) (second 1494) (length 19.697716)) + (spring (first 411) (second 1495) (length 25.000000)) + (spring (first 412) (second 674) (length 26.400757)) + (spring (first 412) (second 1496) (length 29.529646)) + (spring (first 364) (second 1735) (length 54.488529)) + (spring (first 1735) (second 363) (length 37.161808)) + (spring (first 366) (second 1736) (length 42.720020)) + (spring (first 1736) (second 365) (length 37.735924)) + (spring (first 26) (second 1741) (length 42.720020)) + (spring (first 1741) (second 361) (length 37.589893)) + (spring (first 361) (second 1742) (length 50.328918)) + (spring (first 1742) (second 362) (length 37.643059)) + (spring (first 362) (second 1743) (length 46.615448)) + (spring (first 1743) (second 363) (length 36.878178)) + (spring (first 26) (second 1744) (length 46.097721)) + (spring (first 1744) (second 368) (length 45.276924)) + (spring (first 368) (second 1745) (length 51.971146)) + (spring (first 1745) (second 367) (length 44.721359)) + (spring (first 367) (second 1746) (length 52.201534)) + (spring (first 1746) (second 366) (length 39.217342)) + (spring (first 366) (second 1751) (length 51.088158)) + (spring (first 1751) (second 365) (length 28.160255)) + (spring (first 366) (second 1752) (length 50.000000)) + (spring (first 1752) (second 367) (length 33.301651)) + (spring (first 367) (second 1753) (length 54.817879)) + (spring (first 1753) (second 368) (length 38.832977)) + (spring (first 368) (second 1754) (length 37.161808)) + (spring (first 1754) (second 26) (length 53.758720)) + (spring (first 361) (second 1755) (length 42.201897)) + (spring (first 1755) (second 362) (length 38.587563)) + (spring (first 362) (second 1743) (length 46.615448)) + (spring (first 362) (second 1756) (length 43.266617)) + (spring (first 1756) (second 363) (length 42.485291)) + (spring (first 363) (second 1757) (length 49.091751)) + (spring (first 1757) (second 364) (length 46.173584)) + (spring (first 376) (second 1758) (length 36.496574)) + (spring (first 376) (second 1759) (length 38.209946)) + (spring (first 376) (second 1760) (length 35.735138)) + (spring (first 376) (second 1761) (length 50.990196)) + (spring (first 376) (second 1762) (length 53.150730)) + (spring (first 376) (second 1763) (length 50.159744)) + (spring (first 413) (second 1764) (length 74.966660)) + (spring (first 672) (second 1765) (length 22.561028)) + (spring (first 415) (second 1766) (length 57.000000)) + (spring (first 673) (second 1767) (length 37.483330)) + (spring (first 1765) (second 1766) (length 20.615528)) + ) +(colliders +(rect (pos1 360.0 -530.0) (pos2 600.0 -300.0)) +(rect (pos1 10.0 -500.0) (pos2 100.0 10.0)) +) +) + +;; EOF ;; diff --git a/examples/bug.construo b/examples/bug.construo new file mode 100644 index 0000000..e2ba7bd --- /dev/null +++ b/examples/bug.construo @@ -0,0 +1,89 @@ +;; Written by construo 0.1.0pre2 +(construo-scene + (particles + (particle (id 23) (pos 221.000000 403.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #t) (mass 10.000000)) + (particle (id 24) (pos 553.000000 408.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #t) (mass 10.000000)) + (particle (id 25) (pos 333.000000 404.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 445.000000 405.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27) (pos 391.000000 330.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos 495.000000 328.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 284.000000 325.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos 341.000000 250.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos 439.000000 252.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 32) (pos 384.000000 168.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 33) (pos 394.000000 455.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 34) (pos 506.000000 456.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 35) (pos 278.000000 447.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos 227.000000 250.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos 546.000000 255.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos 164.000000 172.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 39) (pos 284.000000 173.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 40) (pos 492.000000 172.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 41) (pos 600.000000 176.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 42) (pos 132.000000 131.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 43) (pos 202.000000 131.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 44) (pos 565.000000 122.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 45) (pos 646.000000 125.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 46) (pos 688.000000 82.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 47) (pos 720.000000 84.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 48) (pos 96.000000 76.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 49) (pos 58.000000 75.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 23) (second 25) (length 112.004463)) + (spring (first 25) (second 26) (length 112.004463)) + (spring (first 26) (second 24) (length 108.041656)) + (spring (first 25) (second 27) (length 94.021271)) + (spring (first 27) (second 26) (length 92.417534)) + (spring (first 26) (second 28) (length 91.809586)) + (spring (first 28) (second 24) (length 98.812958)) + (spring (first 29) (second 25) (length 92.962357)) + (spring (first 29) (second 23) (length 100.264648)) + (spring (first 29) (second 27) (length 107.116760)) + (spring (first 27) (second 28) (length 104.019226)) + (spring (first 29) (second 30) (length 94.201912)) + (spring (first 30) (second 27) (length 94.339813)) + (spring (first 27) (second 31) (length 91.586021)) + (spring (first 31) (second 28) (length 94.403389)) + (spring (first 30) (second 31) (length 98.020409)) + (spring (first 31) (second 32) (length 100.404182)) + (spring (first 32) (second 30) (length 92.590500)) + (spring (first 25) (second 33) (length 79.511009)) + (spring (first 33) (second 26) (length 71.421288)) + (spring (first 26) (second 34) (length 79.511009)) + (spring (first 34) (second 24) (length 67.178864)) + (spring (first 25) (second 35) (length 69.814041)) + (spring (first 35) (second 23) (length 72.006943)) + (spring (first 35) (second 33) (length 116.275536)) + (spring (first 33) (second 34) (length 112.004463)) + (spring (first 29) (second 36) (length 94.201912)) + (spring (first 36) (second 30) (length 114.000000)) + (spring (first 31) (second 37) (length 107.042046)) + (spring (first 37) (second 28) (length 89.050545)) + (spring (first 36) (second 38) (length 100.264648)) + (spring (first 38) (second 39) (length 120.004166)) + (spring (first 39) (second 36) (length 95.801880)) + (spring (first 39) (second 30) (length 95.801880)) + (spring (first 31) (second 40) (length 95.963531)) + (spring (first 40) (second 41) (length 108.074051)) + (spring (first 41) (second 37) (length 95.692215)) + (spring (first 37) (second 40) (length 99.020203)) + (spring (first 38) (second 42) (length 52.009613)) + (spring (first 42) (second 43) (length 70.000000)) + (spring (first 43) (second 39) (length 92.130341)) + (spring (first 40) (second 44) (length 88.481636)) + (spring (first 44) (second 45) (length 81.055534)) + (spring (first 45) (second 41) (length 68.680420)) + (spring (first 44) (second 41) (length 64.350601)) + (spring (first 43) (second 38) (length 55.901699)) + (spring (first 44) (second 46) (length 129.340637)) + (spring (first 46) (second 47) (length 32.062439)) + (spring (first 45) (second 47) (length 84.599052)) + (spring (first 46) (second 45) (length 60.108234)) + (spring (first 43) (second 48) (length 119.419426)) + (spring (first 48) (second 49) (length 38.013157)) + (spring (first 49) (second 42) (length 92.800865)) + (spring (first 48) (second 42) (length 65.734314)) + )) + +;; EOF ;; diff --git a/examples/candle.construo b/examples/candle.construo new file mode 100644 index 0000000..cfc258b --- /dev/null +++ b/examples/candle.construo @@ -0,0 +1,134 @@ +;; Written by construo 0.2.1 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 22) (pos 350.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 380.000000 190.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 440.000000 190.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 470.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 390.000000 180.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 430.000000 180.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 380.000000 210.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 440.000000 210.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos 420.000000 200.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 400.000000 200.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos 350.000000 250.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 380.000000 270.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 440.000000 270.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 470.000000 250.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 390.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 430.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 380.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 440.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 41) (pos 420.000000 280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 400.000000 280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 43) (pos 350.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 45) (pos 440.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 46) (pos 380.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 470.000000 150.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 380.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 440.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos 500.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 51) (pos 320.000000 120.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 380.000000 90.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 53) (pos 440.000000 90.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 380.000000 50.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 440.000000 50.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 380.000000 10.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 440.000000 10.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 60) (pos 380.000000 -30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 61) (pos 440.000000 -30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 480.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 340.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 22) (second 23) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 23) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 25) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 25) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 26) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 27) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 24) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 22) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 25) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 28) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 29) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 32) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 29) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 28) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 32) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 24) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 34) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 34) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 36) (length 120.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 36) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 37) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 38) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 35) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 33) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 36) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 39) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 40) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 42) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 40) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 40) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 39) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 42) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 35) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 33) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 36) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 32) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 38) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 37) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 41) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 43) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 45) (second 27) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 46) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 26) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 45) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 45) (second 47) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 25) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 45) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 27) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 27) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 26) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 48) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 45) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 46) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 45) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 47) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 43) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 49) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 50) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 50) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 51) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 48) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 48) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 53) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 49) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 52) (length 67.082039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 54) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 55) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 53) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 52) (length 72.111023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 56) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 57) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 55) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 56) (length 72.111023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 56) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 61) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 57) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 56) (length 72.111023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 62) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 35) (length 44.721359) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 63) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 34) (length 44.721359) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 62) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 63) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + )) + +;; EOF ;; diff --git a/examples/capsule.construo b/examples/capsule.construo new file mode 100644 index 0000000..1486f6c --- /dev/null +++ b/examples/capsule.construo @@ -0,0 +1,142 @@ +;; Written by construo 0.1.0pre3 +(construo-scene + (particles + (particle (id 1) (pos 209.000000 463.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos 444.000000 462.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 355.000000 372.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 276.000000 371.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 319.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 293.000000 295.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 341.000000 295.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 319.000000 330.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 17) (pos 271.000000 411.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 362.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 33) (pos 318.000000 442.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 78) (pos 321.000000 475.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 194) (pos 318.000000 372.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 195) (pos 319.000000 283.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 222) (pos 369.000000 450.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 223) (pos 270.000000 450.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 244) (pos 385.000000 423.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 245) (pos 252.000000 431.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 304) (pos 238.000000 410.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 305) (pos 401.000000 410.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 338) (pos 320.000000 390.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 602) (pos 393.000000 493.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 673) (pos 270.000000 494.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 710) (pos 225.000000 491.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 711) (pos 426.000000 491.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 792) (pos 325.000000 506.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 889) (pos 171.000000 504.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 890) (pos 478.000000 503.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 957) (pos 523.000000 501.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 958) (pos 140.000000 500.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1117) (pos 538.000000 518.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1118) (pos 579.000000 512.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1119) (pos 126.000000 512.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1120) (pos 102.000000 501.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 1) (second 2) (length 235.002121)) + (spring (first 2) (second 3) (length 126.574089)) + (spring (first 3) (second 4) (length 79.006332)) + (spring (first 4) (second 1) (length 113.811249)) + (spring (first 4) (second 5) (length 60.811184)) + (spring (first 5) (second 3) (length 55.317268)) + (spring (first 5) (second 1) (length 120.420097)) + (spring (first 5) (second 2) (length 133.899216)) + (spring (first 4) (second 6) (length 77.878113)) + (spring (first 6) (second 7) (length 48.000000)) + (spring (first 7) (second 3) (length 78.262383)) + (spring (first 7) (second 8) (length 41.340054)) + (spring (first 8) (second 6) (length 43.600460)) + (spring (first 8) (second 4) (length 59.413803)) + (spring (first 8) (second 3) (length 55.317268)) + (spring (first 1) (second 17) (length 80.919716)) + (spring (first 17) (second 5) (length 48.093658)) + (spring (first 5) (second 18) (length 43.000000)) + (spring (first 18) (second 3) (length 42.579338)) + (spring (first 18) (second 2) (length 95.015785)) + (spring (first 17) (second 4) (length 40.311287)) + (spring (first 1) (second 33) (length 111.004501)) + (spring (first 33) (second 2) (length 127.577431)) + (spring (first 33) (second 5) (length 28.017851)) + (spring (first 5) (second 8) (length 84.000000)) + (spring (first 1) (second 78) (length 112.641022)) + (spring (first 78) (second 2) (length 123.685081)) + (spring (first 78) (second 33) (length 33.136082)) + (spring (first 17) (second 8) (length 94.154129)) + (spring (first 8) (second 18) (length 94.366310)) + (spring (first 17) (second 78) (length 81.215759)) + (spring (first 78) (second 18) (length 73.498299)) + (spring (first 33) (second 18) (length 52.153618)) + (spring (first 33) (second 17) (length 56.302753)) + (spring (first 3) (second 33) (length 79.177017)) + (spring (first 33) (second 4) (length 82.492424)) + (spring (first 78) (second 3) (length 108.466583)) + (spring (first 78) (second 4) (length 113.318138)) + (spring (first 194) (second 18) (length 60.827625)) + (spring (first 194) (second 17) (length 61.073727)) + (spring (first 194) (second 6) (length 80.956779)) + (spring (first 7) (second 194) (length 80.361679)) + (spring (first 6) (second 195) (length 28.635643)) + (spring (first 195) (second 7) (length 25.059929)) + (spring (first 195) (second 8) (length 47.000000)) + (spring (first 222) (second 78) (length 54.120235)) + (spring (first 78) (second 223) (length 56.797886)) + (spring (first 223) (second 1) (length 62.369865)) + (spring (first 223) (second 17) (length 39.012817)) + (spring (first 18) (second 222) (length 36.674240)) + (spring (first 222) (second 2) (length 75.953934)) + (spring (first 244) (second 222) (length 31.384710)) + (spring (first 244) (second 2) (length 70.724815)) + (spring (first 244) (second 3) (length 59.169250)) + (spring (first 245) (second 4) (length 64.621979)) + (spring (first 245) (second 1) (length 53.600372)) + (spring (first 245) (second 223) (length 26.172504)) + (spring (first 1) (second 304) (length 60.415230)) + (spring (first 304) (second 4) (length 54.451813)) + (spring (first 3) (second 305) (length 59.665737)) + (spring (first 305) (second 2) (length 67.475922)) + (spring (first 305) (second 244) (length 20.615528)) + (spring (first 304) (second 245) (length 25.238859)) + (spring (first 304) (second 17) (length 33.015148)) + (spring (first 305) (second 18) (length 39.204590)) + (spring (first 4) (second 338) (length 47.927029)) + (spring (first 338) (second 3) (length 39.357338)) + (spring (first 338) (second 194) (length 18.110771)) + (spring (first 78) (second 602) (length 74.215904)) + (spring (first 602) (second 2) (length 59.682495)) + (spring (first 1) (second 673) (length 68.425140)) + (spring (first 673) (second 602) (length 123.004066)) + (spring (first 78) (second 673) (length 54.424259)) + (spring (first 1) (second 710) (length 32.249031)) + (spring (first 710) (second 673) (length 45.099888)) + (spring (first 602) (second 711) (length 33.060551)) + (spring (first 711) (second 2) (length 34.132095)) + (spring (first 673) (second 792) (length 56.293873)) + (spring (first 792) (second 602) (length 69.231499)) + (spring (first 710) (second 889) (length 55.542778)) + (spring (first 889) (second 1) (length 55.901699)) + (spring (first 711) (second 890) (length 53.366657)) + (spring (first 890) (second 2) (length 53.263496)) + (spring (first 2) (second 957) (length 88.102211)) + (spring (first 957) (second 890) (length 45.044422)) + (spring (first 889) (second 958) (length 31.257000)) + (spring (first 958) (second 1) (length 78.294319)) + (spring (first 890) (second 1117) (length 61.846584)) + (spring (first 1117) (second 957) (length 22.671568)) + (spring (first 957) (second 1118) (length 57.070133)) + (spring (first 1118) (second 1117) (length 41.436699)) + (spring (first 889) (second 1119) (length 45.705578)) + (spring (first 1119) (second 1120) (length 26.400757)) + (spring (first 1120) (second 958) (length 38.013157)) + (spring (first 958) (second 1119) (length 18.439089)) + (spring (first 1120) (second 1) (length 113.547348)) + (spring (first 2) (second 1118) (length 143.961807)) + (spring (first 958) (second 710) (length 85.475143)) + (spring (first 711) (second 957) (length 97.514099)) + (spring (first 889) (second 673) (length 99.503769)) + )) + +;; EOF ;; diff --git a/examples/choh/quicksave0.construo b/examples/choh/quicksave0.construo new file mode 100644 index 0000000..c320fb5 --- /dev/null +++ b/examples/choh/quicksave0.construo @@ -0,0 +1,144 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 2) (pos 590.000000 514.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 798.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 589.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 798.000000 514.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos 565.000000 466.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 588.000000 453.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 614.000000 494.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos 628.000000 500.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 660.000000 541.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 676.000000 540.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos 677.000000 556.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 658.000000 558.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 695.000000 499.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos 790.000000 495.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos 780.000000 468.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 32) (pos 781.000000 507.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 33) (pos 772.000000 482.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 40) (pos 83.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 41) (pos 252.000000 116.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 42) (pos 397.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 44) (pos 251.000000 527.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 45) (pos 294.000000 129.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 46) (pos 321.000000 138.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 47) (pos 368.000000 156.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 48) (pos 409.000000 188.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 49) (pos 442.000000 224.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 50) (pos 488.000000 271.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 51) (pos 516.000000 317.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 52) (pos 532.000000 350.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 53) (pos 558.000000 396.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 80) (pos 0.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 85) (pos 209.000000 467.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 96) (pos 374.000000 222.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 97) (pos 343.000000 259.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 98) (pos 365.000000 308.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 99) (pos 414.000000 336.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 100) (pos 462.000000 312.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 164) (pos 634.000000 480.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 165) (pos 656.000000 456.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 166) (pos 654.000000 437.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 167) (pos 673.000000 447.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 168) (pos 680.000000 464.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 251) (pos 567.000000 493.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 252) (pos 611.000000 469.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1206) (pos 696.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1645) (pos 695.000000 515.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1834) (pos 732.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 2) (second 8) (length 84.005951)) + (spring (first 9) (second 5) (length 85.000000)) + (spring (first 8) (second 9) (length 225.248749)) + (spring (first 5) (second 2) (length 224.697571)) + (spring (first 12) (second 13) (length 26.419689)) + (spring (first 15) (second 2) (length 31.240999)) + (spring (first 15) (second 16) (length 15.231546)) + (spring (first 2) (second 13) (length 61.032780)) + (spring (first 13) (second 15) (length 48.548943)) + (spring (first 15) (second 12) (length 56.435802)) + (spring (first 2) (second 12) (length 54.120235)) + (spring (first 16) (second 21) (length 52.009613)) + (spring (first 21) (second 22) (length 16.031219)) + (spring (first 21) (second 23) (length 22.671568)) + (spring (first 21) (second 24) (length 17.117243)) + (spring (first 16) (second 29) (length 67.007462)) + (spring (first 29) (second 9) (length 104.086502)) + (spring (first 9) (second 30) (length 20.615528)) + (spring (first 29) (second 30) (length 95.084175)) + (spring (first 30) (second 31) (length 28.792360)) + (spring (first 30) (second 32) (length 15.000000)) + (spring (first 32) (second 9) (length 18.384777)) + (spring (first 31) (second 33) (length 16.124516)) + (spring (first 33) (second 9) (length 41.231056)) + (spring (first 30) (second 33) (length 22.203604)) + (spring (first 21) (second 8) (length 91.049438)) + (spring (first 40) (second 41) (length 510.769043)) + (spring (first 41) (second 42) (length 504.295563)) + (spring (first 42) (second 40) (length 314.001587)) + (spring (first 40) (second 44) (length 182.386948)) + (spring (first 44) (second 41) (length 411.001221)) + (spring (first 44) (second 42) (length 162.788208)) + (spring (first 41) (second 45) (length 43.965897)) + (spring (first 45) (second 46) (length 28.460499)) + (spring (first 46) (second 47) (length 50.328918)) + (spring (first 47) (second 48) (length 52.009613)) + (spring (first 48) (second 49) (length 48.836460)) + (spring (first 49) (second 50) (length 65.764732)) + (spring (first 50) (second 51) (length 53.851646)) + (spring (first 51) (second 52) (length 36.674240)) + (spring (first 52) (second 53) (length 52.839378)) + (spring (first 53) (second 13) (length 64.412735)) + (spring (first 40) (second 80) (length 83.000000)) + (spring (first 80) (second 41) (length 543.900696)) + (spring (first 44) (second 80) (length 260.848602)) + (spring (first 80) (second 85) (length 246.661713)) + (spring (first 85) (second 41) (length 353.624084)) + (spring (first 85) (second 42) (length 229.712860)) + (spring (first 49) (second 96) (length 68.029404)) + (spring (first 96) (second 97) (length 48.270073)) + (spring (first 97) (second 98) (length 53.712196)) + (spring (first 98) (second 99) (length 56.435802)) + (spring (first 99) (second 100) (length 53.665630)) + (spring (first 100) (second 50) (length 48.548943)) + (spring (first 49) (second 100) (length 90.244110)) + (spring (first 49) (second 99) (length 115.446960)) + (spring (first 49) (second 98) (length 113.951744)) + (spring (first 49) (second 97) (length 105.004761)) + (spring (first 50) (second 96) (length 124.084648)) + (spring (first 50) (second 97) (length 145.495697)) + (spring (first 50) (second 98) (length 128.444534)) + (spring (first 50) (second 99) (length 98.493652)) + (spring (first 100) (second 96) (length 125.872955)) + (spring (first 100) (second 97) (length 130.268951)) + (spring (first 100) (second 98) (length 97.082436)) + (spring (first 99) (second 96) (length 120.813904)) + (spring (first 99) (second 97) (length 104.737770)) + (spring (first 98) (second 96) (length 86.469650)) + (spring (first 48) (second 96) (length 48.795490)) + (spring (first 100) (second 52) (length 79.649231)) + (spring (first 16) (second 164) (length 20.880613)) + (spring (first 164) (second 165) (length 32.557640)) + (spring (first 165) (second 166) (length 19.104973)) + (spring (first 165) (second 167) (length 19.235384)) + (spring (first 165) (second 168) (length 25.298222)) + (spring (first 2) (second 251) (length 31.144823)) + (spring (first 251) (second 12) (length 27.073973)) + (spring (first 15) (second 252) (length 25.179358)) + (spring (first 252) (second 13) (length 28.017851)) + (spring (first 51) (second 100) (length 54.230988)) + (spring (first 1206) (second 8) (length 107.000000)) + (spring (first 1206) (second 5) (length 102.004898)) + (spring (first 21) (second 1206) (length 67.416618)) + (spring (first 16) (second 252) (length 35.355339)) + (spring (first 1645) (second 2) (length 105.004761)) + (spring (first 1645) (second 9) (length 103.004852)) + (spring (first 1645) (second 1206) (length 83.006027)) + (spring (first 29) (second 1645) (length 16.000000)) + (spring (first 9) (second 1834) (length 106.826965)) + )) + +;; EOF ;; diff --git a/examples/choh/quicksave1.construo b/examples/choh/quicksave1.construo new file mode 100644 index 0000000..d957541 --- /dev/null +++ b/examples/choh/quicksave1.construo @@ -0,0 +1,249 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 12924) (pos 352.000000 81.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12925) (pos 353.000000 136.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12926) (pos 322.000000 32.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12928) (pos 368.000000 25.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12929) (pos 396.000000 35.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12932) (pos 298.000000 37.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12933) (pos 313.000000 47.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12934) (pos 381.000000 41.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12935) (pos 332.000000 138.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12936) (pos 296.000000 175.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12937) (pos 299.000000 192.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12938) (pos 281.000000 187.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12939) (pos 277.000000 171.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12940) (pos 374.000000 136.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12941) (pos 410.000000 178.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12942) (pos 401.000000 194.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12943) (pos 419.000000 193.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12944) (pos 431.000000 181.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12948) (pos 354.000000 151.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12949) (pos 337.000000 160.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12950) (pos 337.000000 176.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12951) (pos 354.000000 185.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12952) (pos 372.000000 175.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12953) (pos 372.000000 160.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13426) (pos 259.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13428) (pos 2.000000 63.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13429) (pos 1.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13430) (pos 63.000000 536.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13535) (pos 444.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13536) (pos 717.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13537) (pos 718.000000 69.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13538) (pos 651.000000 531.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13646) (pos 181.000000 138.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13647) (pos 137.000000 138.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13648) (pos 99.000000 104.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13649) (pos 67.000000 98.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13650) (pos 33.000000 71.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13657) (pos 609.000000 123.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13658) (pos 652.000000 106.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13659) (pos 673.000000 84.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13834) (pos 766.000000 328.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13963) (pos 683.000000 508.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13964) (pos 747.000000 539.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13965) (pos 797.000000 515.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13966) (pos 747.000000 481.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14219) (pos 669.000000 62.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14220) (pos 628.000000 67.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14221) (pos 568.000000 56.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14222) (pos 533.000000 64.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14223) (pos 482.000000 50.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14226) (pos 48.000000 52.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14227) (pos 91.000000 57.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14228) (pos 120.000000 47.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14229) (pos 172.000000 55.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14230) (pos 222.000000 54.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14231) (pos 257.000000 44.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14455) (pos 669.000000 583.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14456) (pos 743.000000 594.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14457) (pos 796.000000 582.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14582) (pos 52.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14583) (pos 74.000000 412.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14584) (pos 83.000000 521.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14585) (pos 67.000000 573.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14586) (pos 17.000000 571.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14587) (pos 8.000000 487.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14588) (pos 10.000000 398.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14589) (pos 9.000000 267.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15266) (pos 574.000000 130.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15267) (pos 534.000000 147.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15268) (pos 503.000000 153.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15444) (pos 797.000000 51.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15445) (pos 789.000000 210.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18586) (pos 448.000000 39.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18789) (pos 226.000000 132.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19454) (pos 271.000000 137.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19455) (pos 444.000000 152.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20102) (pos 653.000000 78.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20103) (pos 574.000000 91.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20104) (pos 524.000000 89.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20105) (pos 473.000000 95.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20106) (pos 433.000000 91.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20828) (pos 392.000000 96.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20985) (pos 68.000000 72.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20986) (pos 137.000000 79.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20987) (pos 174.000000 94.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20988) (pos 215.000000 94.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20989) (pos 261.000000 103.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20990) (pos 298.000000 106.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20991) (pos 322.000000 114.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 12924) (second 12925) (length 55.009090) (maxstretch 0.10)) + (spring (first 12924) (second 12926) (length 57.454330) (maxstretch 0.10)) + (spring (first 12924) (second 12928) (length 58.240879) (maxstretch 0.10)) + (spring (first 12928) (second 12929) (length 29.732138) (maxstretch 0.10)) + (spring (first 12926) (second 12932) (length 24.515301) (maxstretch 0.10)) + (spring (first 12932) (second 12933) (length 18.027756) (maxstretch 0.10)) + (spring (first 12933) (second 12926) (length 17.492855) (maxstretch 0.10)) + (spring (first 12928) (second 12934) (length 20.615528) (maxstretch 0.10)) + (spring (first 12934) (second 12929) (length 16.155495) (maxstretch 0.10)) + (spring (first 12925) (second 12935) (length 21.095022) (maxstretch 0.10)) + (spring (first 12935) (second 12936) (length 51.623638) (maxstretch 0.10)) + (spring (first 12936) (second 12937) (length 17.262676) (maxstretch 0.10)) + (spring (first 12936) (second 12938) (length 19.209373) (maxstretch 0.10)) + (spring (first 12936) (second 12939) (length 19.416489) (maxstretch 0.10)) + (spring (first 12925) (second 12940) (length 21.000000) (maxstretch 0.10)) + (spring (first 12940) (second 12941) (length 55.317268) (maxstretch 0.10)) + (spring (first 12941) (second 12942) (length 18.357559) (maxstretch 0.10)) + (spring (first 12941) (second 12943) (length 17.492855) (maxstretch 0.10)) + (spring (first 12941) (second 12944) (length 21.213203) (maxstretch 0.10)) + (spring (first 12925) (second 12948) (length 15.033297) (maxstretch 0.10)) + (spring (first 12948) (second 12949) (length 19.235384) (maxstretch 0.10)) + (spring (first 12949) (second 12950) (length 16.000000) (maxstretch 0.10)) + (spring (first 12950) (second 12951) (length 19.235384) (maxstretch 0.10)) + (spring (first 12951) (second 12952) (length 20.591261) (maxstretch 0.10)) + (spring (first 12952) (second 12953) (length 15.000000) (maxstretch 0.10)) + (spring (first 12953) (second 12948) (length 20.124611) (maxstretch 0.10)) + (spring (first 12949) (second 12953) (length 35.000000) (maxstretch 0.10)) + (spring (first 12949) (second 12952) (length 38.078865) (maxstretch 0.10)) + (spring (first 12949) (second 12951) (length 30.232433) (maxstretch 0.10)) + (spring (first 12950) (second 12952) (length 35.014282) (maxstretch 0.10)) + (spring (first 12950) (second 12953) (length 38.483765) (maxstretch 0.10)) + (spring (first 12950) (second 12948) (length 30.232433) (maxstretch 0.10)) + (spring (first 12951) (second 12953) (length 30.805843) (maxstretch 0.10)) + (spring (first 12951) (second 12948) (length 34.000000) (maxstretch 0.10)) + (spring (first 12952) (second 12948) (length 30.000000) (maxstretch 0.10)) + (spring (first 13426) (second 13428) (length 594.428284) (maxstretch 0.10)) + (spring (first 13428) (second 13429) (length 536.000916) (maxstretch 0.10)) + (spring (first 13429) (second 13426) (length 258.000000) (maxstretch 0.10)) + (spring (first 13429) (second 13430) (length 88.391174) (maxstretch 0.10)) + (spring (first 13430) (second 13426) (length 205.876175) (maxstretch 0.10)) + (spring (first 13430) (second 13428) (length 476.917175) (maxstretch 0.10)) + (spring (first 13535) (second 13536) (length 273.000000) (maxstretch 0.10)) + (spring (first 13536) (second 13537) (length 530.000916) (maxstretch 0.10)) + (spring (first 13537) (second 13535) (length 596.637268) (maxstretch 0.10)) + (spring (first 13536) (second 13538) (length 94.762863) (maxstretch 0.10)) + (spring (first 13538) (second 13537) (length 466.832947) (maxstretch 0.10)) + (spring (first 13538) (second 13535) (length 217.882996) (maxstretch 0.10)) + (spring (first 13646) (second 13647) (length 44.000000) (maxstretch 0.10)) + (spring (first 13647) (second 13648) (length 50.990196) (maxstretch 0.10)) + (spring (first 13648) (second 13649) (length 32.557640) (maxstretch 0.10)) + (spring (first 13649) (second 13650) (length 43.416588) (maxstretch 0.10)) + (spring (first 13650) (second 13428) (length 32.015621) (maxstretch 0.10)) + (spring (first 13657) (second 13658) (length 46.238514) (maxstretch 0.10)) + (spring (first 13658) (second 13659) (length 30.413813) (maxstretch 0.10)) + (spring (first 13659) (second 13537) (length 47.434166) (maxstretch 0.10)) + (spring (first 13536) (second 13834) (length 275.394257) (maxstretch 0.10)) + (spring (first 13834) (second 13537) (length 263.410339) (maxstretch 0.10)) + (spring (first 13834) (second 13963) (length 198.214523) (maxstretch 0.10)) + (spring (first 13963) (second 13964) (length 71.112587) (maxstretch 0.10)) + (spring (first 13964) (second 13965) (length 55.461697) (maxstretch 0.10)) + (spring (first 13965) (second 13834) (length 189.552109) (maxstretch 0.10)) + (spring (first 13964) (second 13834) (length 211.853729) (maxstretch 0.10)) + (spring (first 13965) (second 13963) (length 114.214706) (maxstretch 0.10)) + (spring (first 13963) (second 13966) (length 69.462219) (maxstretch 0.10)) + (spring (first 13966) (second 13964) (length 58.000000) (maxstretch 0.10)) + (spring (first 13966) (second 13965) (length 60.464867) (maxstretch 0.10)) + (spring (first 13966) (second 13834) (length 154.175232) (maxstretch 0.10)) + (spring (first 13537) (second 14219) (length 49.497475) (maxstretch 0.10)) + (spring (first 14219) (second 14220) (length 41.303753) (maxstretch 0.10)) + (spring (first 14220) (second 14221) (length 61.000000) (maxstretch 0.10)) + (spring (first 14221) (second 14222) (length 35.902645) (maxstretch 0.10)) + (spring (first 14222) (second 14223) (length 52.886673) (maxstretch 0.10)) + (spring (first 13428) (second 14226) (length 47.296936) (maxstretch 0.10)) + (spring (first 14226) (second 14227) (length 43.289722) (maxstretch 0.10)) + (spring (first 14227) (second 14228) (length 30.675724) (maxstretch 0.10)) + (spring (first 14228) (second 14229) (length 52.611786) (maxstretch 0.10)) + (spring (first 14229) (second 14230) (length 50.009998) (maxstretch 0.10)) + (spring (first 14230) (second 14231) (length 36.400551) (maxstretch 0.10)) + (spring (first 13963) (second 14455) (length 76.295479) (maxstretch 0.10)) + (spring (first 14455) (second 14456) (length 74.813103) (maxstretch 0.10)) + (spring (first 14456) (second 14457) (length 54.341511) (maxstretch 0.10)) + (spring (first 14457) (second 13965) (length 67.007462) (maxstretch 0.10)) + (spring (first 13964) (second 14457) (length 65.192024) (maxstretch 0.10)) + (spring (first 13964) (second 14455) (length 89.554451) (maxstretch 0.10)) + (spring (first 13964) (second 14456) (length 55.145264) (maxstretch 0.10)) + (spring (first 14456) (second 13965) (length 95.692215) (maxstretch 0.10)) + (spring (first 14456) (second 13963) (length 104.861816) (maxstretch 0.10)) + (spring (first 13428) (second 14582) (length 222.685883) (maxstretch 0.10)) + (spring (first 14582) (second 14583) (length 133.820770) (maxstretch 0.10)) + (spring (first 14583) (second 14584) (length 109.370926) (maxstretch 0.10)) + (spring (first 14584) (second 14585) (length 54.405884) (maxstretch 0.10)) + (spring (first 14585) (second 14586) (length 50.039986) (maxstretch 0.10)) + (spring (first 14586) (second 14587) (length 84.480766) (maxstretch 0.10)) + (spring (first 14587) (second 14588) (length 89.022469) (maxstretch 0.10)) + (spring (first 14588) (second 14589) (length 131.003815) (maxstretch 0.10)) + (spring (first 14589) (second 13428) (length 204.120056) (maxstretch 0.10)) + (spring (first 14589) (second 14582) (length 44.922153) (maxstretch 0.10)) + (spring (first 14588) (second 14583) (length 65.513359) (maxstretch 0.10)) + (spring (first 14587) (second 14584) (length 82.346825) (maxstretch 0.10)) + (spring (first 14586) (second 14584) (length 82.800964) (maxstretch 0.10)) + (spring (first 14585) (second 14587) (length 104.292854) (maxstretch 0.10)) + (spring (first 14583) (second 14587) (length 99.904953) (maxstretch 0.10)) + (spring (first 14584) (second 14588) (length 143.031464) (maxstretch 0.10)) + (spring (first 14588) (second 14582) (length 125.251747) (maxstretch 0.10)) + (spring (first 14583) (second 14589) (length 158.902481) (maxstretch 0.10)) + (spring (first 13426) (second 14582) (length 380.276215) (maxstretch 0.10)) + (spring (first 13426) (second 14583) (length 263.047516) (maxstretch 0.10)) + (spring (first 13657) (second 15266) (length 35.693138) (maxstretch 0.10)) + (spring (first 15266) (second 15267) (length 43.462627) (maxstretch 0.10)) + (spring (first 15267) (second 15268) (length 31.575306) (maxstretch 0.10)) + (spring (first 13537) (second 15444) (length 81.024689) (maxstretch 0.10)) + (spring (first 15444) (second 15445) (length 159.201126) (maxstretch 0.10)) + (spring (first 15445) (second 13834) (length 120.220627) (maxstretch 0.10)) + (spring (first 15444) (second 13834) (length 278.729248) (maxstretch 0.10)) + (spring (first 15445) (second 13537) (length 157.867035) (maxstretch 0.10)) + (spring (first 14586) (second 13429) (length 32.249031) (maxstretch 0.10)) + (spring (first 14585) (second 13426) (length 193.752426) (maxstretch 0.10)) + (spring (first 14455) (second 13535) (length 225.568176) (maxstretch 0.10)) + (spring (first 14456) (second 13536) (length 26.476404) (maxstretch 0.10)) + (spring (first 14457) (second 13536) (length 80.808418) (maxstretch 0.10)) + (spring (first 13535) (second 13834) (length 420.862213) (maxstretch 0.10)) + (spring (first 13535) (second 13966) (length 325.166107) (maxstretch 0.10)) + (spring (first 13535) (second 13963) (length 255.738144) (maxstretch 0.10)) + (spring (first 13535) (second 14457) (length 352.410278) (maxstretch 0.10)) + (spring (first 13535) (second 15445) (length 519.948059) (maxstretch 0.10)) + (spring (first 13426) (second 13535) (length 185.000000) (maxstretch 0.10)) + (spring (first 13428) (second 13537) (length 716.025146) (maxstretch 0.10)) + (spring (first 14231) (second 12932) (length 41.593269) (maxstretch 0.10)) + (spring (first 12929) (second 18586) (length 52.153618) (maxstretch 0.10)) + (spring (first 18586) (second 14223) (length 35.735138) (maxstretch 0.10)) + (spring (first 13646) (second 18789) (length 45.398239) (maxstretch 0.10)) + (spring (first 18789) (second 19454) (length 45.276924) (maxstretch 0.10)) + (spring (first 19454) (second 12936) (length 45.486263) (maxstretch 0.10)) + (spring (first 15268) (second 19455) (length 59.008472) (maxstretch 0.10)) + (spring (first 19455) (second 12941) (length 42.801868) (maxstretch 0.10)) + (spring (first 18586) (second 12928) (length 81.215759) (maxstretch 0.10)) + (spring (first 14231) (second 12926) (length 66.098412) (maxstretch 0.10)) + (spring (first 13537) (second 20102) (length 65.620117) (maxstretch 0.10)) + (spring (first 20102) (second 20103) (length 80.062477) (maxstretch 0.10)) + (spring (first 20103) (second 20104) (length 50.039986) (maxstretch 0.10)) + (spring (first 20104) (second 20105) (length 51.351727) (maxstretch 0.10)) + (spring (first 20105) (second 20106) (length 40.199501) (maxstretch 0.10)) + (spring (first 20106) (second 20828) (length 41.303753) (maxstretch 0.10)) + (spring (first 20828) (second 12924) (length 42.720020) (maxstretch 0.10)) + (spring (first 13428) (second 20985) (length 66.610809) (maxstretch 0.10)) + (spring (first 20985) (second 20986) (length 69.354164) (maxstretch 0.10)) + (spring (first 20986) (second 20987) (length 39.924931) (maxstretch 0.10)) + (spring (first 20987) (second 20988) (length 41.000000) (maxstretch 0.10)) + (spring (first 20988) (second 20989) (length 46.872166) (maxstretch 0.10)) + (spring (first 20989) (second 20990) (length 37.121422) (maxstretch 0.10)) + (spring (first 20990) (second 20991) (length 25.298222) (maxstretch 0.10)) + (spring (first 20991) (second 12925) (length 38.013157) (maxstretch 0.10)) + )) + +;; EOF ;; diff --git a/examples/choh/quicksave2.construo b/examples/choh/quicksave2.construo new file mode 100644 index 0000000..ab1b909 --- /dev/null +++ b/examples/choh/quicksave2.construo @@ -0,0 +1,161 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 2477) (pos 314.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2478) (pos 339.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2480) (pos 368.000000 533.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2482) (pos 393.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2483) (pos 419.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2484) (pos 368.000000 479.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2485) (pos 348.000000 479.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2486) (pos 388.000000 480.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2487) (pos 322.000000 431.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2488) (pos 330.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2489) (pos 314.000000 413.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2490) (pos 299.000000 419.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2491) (pos 417.000000 434.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2492) (pos 411.000000 417.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2493) (pos 427.000000 417.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2494) (pos 437.000000 432.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2525) (pos 352.000000 441.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2526) (pos 371.000000 427.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2527) (pos 388.000000 443.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2652) (pos 348.000000 423.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2653) (pos 233.000000 393.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2654) (pos 172.000000 344.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2655) (pos 143.000000 256.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2656) (pos 147.000000 166.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2657) (pos 238.000000 107.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2659) (pos 450.000000 90.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2660) (pos 544.000000 126.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2661) (pos 614.000000 187.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2662) (pos 633.000000 272.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2663) (pos 594.000000 333.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2664) (pos 526.000000 405.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2665) (pos 393.000000 425.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2822) (pos 335.000000 84.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3621) (pos 1.000000 194.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3657) (pos 798.000000 195.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3690) (pos 330.000000 584.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3691) (pos 400.000000 584.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 2477) (second 2478) (length 25.019993)) + (spring (first 2482) (second 2483) (length 26.000000)) + (spring (first 2480) (second 2484) (length 54.000000)) + (spring (first 2484) (second 2485) (length 20.000000)) + (spring (first 2484) (second 2486) (length 20.024984)) + (spring (first 2485) (second 2487) (length 54.589375)) + (spring (first 2487) (second 2488) (length 18.788294)) + (spring (first 2487) (second 2489) (length 19.697716)) + (spring (first 2487) (second 2490) (length 25.942244)) + (spring (first 2486) (second 2491) (length 54.378304)) + (spring (first 2491) (second 2492) (length 18.027756)) + (spring (first 2491) (second 2493) (length 19.723083)) + (spring (first 2491) (second 2494) (length 20.099751)) + (spring (first 2485) (second 2480) (length 57.584721)) + (spring (first 2486) (second 2480) (length 56.648037)) + (spring (first 2486) (second 2525) (length 53.075417)) + (spring (first 2525) (second 2526) (length 23.600847)) + (spring (first 2526) (second 2527) (length 23.345236)) + (spring (first 2527) (second 2485) (length 53.814495)) + (spring (first 2484) (second 2526) (length 52.086468)) + (spring (first 2526) (second 2485) (length 56.859474)) + (spring (first 2526) (second 2486) (length 55.659679)) + (spring (first 2526) (second 2652) (length 23.345236)) + (spring (first 2652) (second 2488) (length 20.124611)) + (spring (first 2488) (second 2489) (length 16.031219)) + (spring (first 2489) (second 2653) (length 83.432610)) + (spring (first 2653) (second 2654) (length 78.243210)) + (spring (first 2654) (second 2655) (length 92.655273)) + (spring (first 2655) (second 2656) (length 90.088844)) + (spring (first 2656) (second 2657) (length 108.452751)) + (spring (first 2659) (second 2660) (length 100.657837)) + (spring (first 2660) (second 2661) (length 92.849342)) + (spring (first 2661) (second 2662) (length 87.097649)) + (spring (first 2662) (second 2663) (length 72.401657)) + (spring (first 2663) (second 2664) (length 99.035347)) + (spring (first 2664) (second 2493) (length 99.724625)) + (spring (first 2493) (second 2492) (length 16.000000)) + (spring (first 2492) (second 2665) (length 19.697716)) + (spring (first 2665) (second 2526) (length 22.090721)) + (spring (first 2652) (second 2665) (length 45.044422)) + (spring (first 2652) (second 2492) (length 63.285069)) + (spring (first 2652) (second 2493) (length 79.227524)) + (spring (first 2652) (second 2664) (length 178.907791)) + (spring (first 2652) (second 2663) (length 261.946564)) + (spring (first 2652) (second 2662) (length 322.530609)) + (spring (first 2652) (second 2661) (length 355.600891)) + (spring (first 2652) (second 2660) (length 355.844055)) + (spring (first 2652) (second 2659) (length 348.271454)) + (spring (first 2652) (second 2657) (length 334.598267)) + (spring (first 2652) (second 2656) (length 326.266754)) + (spring (first 2652) (second 2655) (length 264.412567)) + (spring (first 2652) (second 2654) (length 192.917084)) + (spring (first 2652) (second 2653) (length 118.848640)) + (spring (first 2652) (second 2489) (length 35.440090)) + (spring (first 2657) (second 2822) (length 99.689522)) + (spring (first 2822) (second 2652) (length 339.249176)) + (spring (first 2822) (second 2659) (length 115.156418)) + (spring (first 2526) (second 2492) (length 41.231056)) + (spring (first 2526) (second 2664) (length 156.553513)) + (spring (first 2526) (second 2663) (length 242.002060)) + (spring (first 2526) (second 2662) (length 304.415833)) + (spring (first 2526) (second 2661) (length 341.539154)) + (spring (first 2526) (second 2660) (length 347.174316)) + (spring (first 2526) (second 2659) (length 346.135803)) + (spring (first 2526) (second 2822) (length 344.884033)) + (spring (first 2526) (second 2657) (length 346.538605)) + (spring (first 2526) (second 2656) (length 343.943298)) + (spring (first 2526) (second 2655) (length 285.000000)) + (spring (first 2526) (second 2654) (length 215.615402)) + (spring (first 2526) (second 2653) (length 142.126709)) + (spring (first 2665) (second 2664) (length 134.495346)) + (spring (first 2665) (second 2663) (length 221.054291)) + (spring (first 2665) (second 2662) (length 284.620789)) + (spring (first 2665) (second 2661) (length 324.784546)) + (spring (first 2665) (second 2660) (length 334.965668)) + (spring (first 2665) (second 2659) (length 339.814667)) + (spring (first 2665) (second 2822) (length 345.897369)) + (spring (first 2665) (second 2657) (length 353.764038)) + (spring (first 2665) (second 2656) (length 357.207214)) + (spring (first 2665) (second 2655) (length 301.763153)) + (spring (first 2665) (second 2654) (length 235.376297)) + (spring (first 2665) (second 2653) (length 163.168625)) + (spring (first 2653) (second 2493) (length 195.478897)) + (spring (first 2653) (second 2664) (length 293.245636)) + (spring (first 2653) (second 2663) (length 365.952179)) + (spring (first 2653) (second 2662) (length 417.900696)) + (spring (first 2653) (second 2661) (length 433.124695)) + (spring (first 2653) (second 2660) (length 409.890228)) + (spring (first 2653) (second 2659) (length 372.690216)) + (spring (first 2653) (second 2822) (length 325.399750)) + (spring (first 2653) (second 2657) (length 286.043701)) + (spring (first 2653) (second 2656) (length 242.744720)) + (spring (first 2653) (second 2655) (length 163.917664)) + (spring (first 2664) (second 2654) (length 359.217194)) + (spring (first 2664) (second 2655) (length 410.962280)) + (spring (first 2664) (second 2656) (length 448.064728)) + (spring (first 2664) (second 2657) (length 414.424896)) + (spring (first 2664) (second 2822) (length 373.526428)) + (spring (first 2664) (second 2659) (length 324.038574)) + (spring (first 2664) (second 2660) (length 279.580048)) + (spring (first 2664) (second 2661) (length 235.091476)) + (spring (first 2664) (second 2662) (length 170.698563)) + (spring (first 2490) (second 2489) (length 16.155495)) + (spring (first 2488) (second 2489) (length 16.031219)) + (spring (first 2492) (second 2493) (length 16.000000)) + (spring (first 2494) (second 2493) (length 18.027756)) + (spring (first 2655) (second 3621) (length 154.945145)) + (spring (first 3621) (second 2656) (length 148.660690)) + (spring (first 2662) (second 3657) (length 182.082397)) + (spring (first 3657) (second 2661) (length 184.173828)) + (spring (first 2478) (second 3690) (length 16.643316)) + (spring (first 3690) (second 2477) (length 21.931713)) + (spring (first 2482) (second 3691) (length 16.552946)) + (spring (first 3691) (second 2483) (length 24.207438)) + (spring (first 3691) (second 2480) (length 60.207973)) + (spring (first 3690) (second 2480) (length 63.600315)) + )) + +;; EOF ;; diff --git a/examples/choh/quicksave3.construo b/examples/choh/quicksave3.construo new file mode 100644 index 0000000..8cfab66 --- /dev/null +++ b/examples/choh/quicksave3.construo @@ -0,0 +1,458 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 1871) (pos 238.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1872) (pos 407.000000 253.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1873) (pos 546.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1875) (pos 402.000000 503.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1876) (pos 388.000000 248.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1877) (pos 403.000000 232.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1878) (pos 418.000000 233.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1879) (pos 432.000000 250.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1880) (pos 394.000000 268.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1881) (pos 417.000000 272.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1885) (pos 293.000000 186.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1886) (pos 303.000000 170.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1887) (pos 199.000000 131.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1888) (pos 208.000000 117.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1937) (pos 499.000000 163.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1938) (pos 514.000000 180.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1939) (pos 592.000000 116.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1940) (pos 576.000000 98.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2041) (pos 392.000000 371.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2042) (pos 414.000000 373.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2043) (pos 390.000000 463.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2044) (pos 415.000000 465.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2115) (pos 198.000000 305.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2116) (pos 170.000000 320.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2117) (pos 175.000000 347.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2118) (pos 202.000000 358.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2119) (pos 225.000000 338.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2120) (pos 220.000000 312.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2565) (pos 199.000000 167.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2566) (pos 197.000000 202.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2569) (pos 194.000000 234.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2570) (pos 194.000000 258.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2571) (pos 195.000000 287.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2626) (pos 242.000000 311.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2627) (pos 263.000000 292.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2628) (pos 312.000000 291.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2629) (pos 336.000000 278.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2630) (pos 364.000000 274.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2687) (pos 601.000000 135.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2688) (pos 594.000000 149.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2689) (pos 604.000000 161.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2690) (pos 622.000000 157.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2691) (pos 629.000000 142.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2692) (pos 617.000000 131.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2765) (pos 641.000000 181.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2766) (pos 639.000000 198.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2767) (pos 624.000000 200.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2768) (pos 661.000000 191.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2769) (pos 668.000000 177.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2770) (pos 646.000000 153.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2771) (pos 651.000000 137.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2772) (pos 664.000000 149.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2773) (pos 658.000000 163.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2774) (pos 599.000000 181.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2775) (pos 584.000000 175.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2776) (pos 584.000000 192.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2777) (pos 601.000000 196.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3576) (pos 255.000000 343.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3577) (pos 274.000000 335.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3578) (pos 270.000000 352.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3579) (pos 258.000000 364.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3580) (pos 137.000000 304.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3581) (pos 135.000000 286.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3582) (pos 123.000000 295.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3583) (pos 118.000000 311.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3584) (pos 161.000000 378.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3585) (pos 145.000000 378.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3586) (pos 197.000000 391.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3587) (pos 211.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3588) (pos 231.000000 282.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3589) (pos 208.000000 275.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3590) (pos 224.000000 267.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3945) (pos 243.000000 250.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3946) (pos 245.000000 227.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3947) (pos 270.000000 211.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4202) (pos 403.000000 551.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4203) (pos 334.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4204) (pos 469.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6283) (pos 527.000000 197.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6284) (pos 552.000000 217.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6285) (pos 583.000000 223.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6286) (pos 605.000000 216.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6460) (pos 19.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6461) (pos 34.000000 506.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6462) (pos 97.000000 506.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6463) (pos 106.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6464) (pos 787.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6465) (pos 765.000000 500.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6466) (pos 694.000000 500.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6467) (pos 672.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6644) (pos 18.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6645) (pos 40.000000 328.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6646) (pos 17.000000 234.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6647) (pos 33.000000 156.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6648) (pos 19.000000 81.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6649) (pos 80.000000 81.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6650) (pos 98.000000 157.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6651) (pos 77.000000 237.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6652) (pos 100.000000 329.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6653) (pos 76.000000 416.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6821) (pos 90.000000 44.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6824) (pos 110.000000 24.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6825) (pos 122.000000 35.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6826) (pos 115.000000 57.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6827) (pos 101.000000 65.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6828) (pos 114.000000 73.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6829) (pos 129.000000 70.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6830) (pos 94.000000 13.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6831) (pos 65.000000 14.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6832) (pos 51.000000 5.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6833) (pos 49.000000 21.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6835) (pos 111.000000 7.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6836) (pos 129.000000 5.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6838) (pos 142.000000 14.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6839) (pos 136.000000 28.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6906) (pos 83.000000 65.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7132) (pos 66.000000 49.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7133) (pos 62.000000 29.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7134) (pos 52.000000 41.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7519) (pos 154.000000 34.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7520) (pos 165.000000 50.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7521) (pos 185.000000 58.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7522) (pos 191.000000 77.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7523) (pos 208.000000 98.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8488) (pos 703.000000 487.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8489) (pos 676.000000 489.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8490) (pos 725.000000 452.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8491) (pos 756.000000 487.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8492) (pos 780.000000 485.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8493) (pos 725.000000 413.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8494) (pos 709.000000 413.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8495) (pos 741.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8496) (pos 754.000000 439.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8497) (pos 747.000000 453.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8498) (pos 762.000000 454.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8499) (pos 773.000000 442.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8500) (pos 701.000000 435.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8501) (pos 709.000000 448.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8502) (pos 693.000000 448.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8503) (pos 685.000000 432.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8504) (pos 738.000000 382.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8505) (pos 709.000000 379.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8506) (pos 726.000000 369.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9071) (pos 455.000000 446.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9072) (pos 493.000000 442.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9073) (pos 514.000000 421.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9074) (pos 547.000000 412.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9075) (pos 576.000000 392.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9076) (pos 608.000000 388.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9077) (pos 632.000000 373.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10097) (pos 666.000000 371.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10098) (pos 693.000000 386.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 1871) (second 1872) (length 385.067535)) + (spring (first 1872) (second 1873) (length 371.948914)) + (spring (first 1873) (second 1871) (length 308.001617)) + (spring (first 1871) (second 1875) (length 190.031570)) + (spring (first 1875) (second 1872) (length 250.049988)) + (spring (first 1875) (second 1873) (length 172.513763)) + (spring (first 1872) (second 1876) (length 19.646883)) + (spring (first 1876) (second 1877) (length 21.931713)) + (spring (first 1877) (second 1872) (length 21.377558)) + (spring (first 1872) (second 1878) (length 22.825424)) + (spring (first 1878) (second 1879) (length 22.022715)) + (spring (first 1879) (second 1872) (length 25.179358)) + (spring (first 1872) (second 1880) (length 19.849434)) + (spring (first 1880) (second 1881) (length 23.345236)) + (spring (first 1881) (second 1872) (length 21.470911)) + (spring (first 1880) (second 1876) (length 20.880613)) + (spring (first 1877) (second 1878) (length 15.033297)) + (spring (first 1879) (second 1881) (length 26.627054)) + (spring (first 1876) (second 1885) (length 113.441612)) + (spring (first 1877) (second 1886) (length 117.660530)) + (spring (first 1885) (second 1877) (length 119.230865)) + (spring (first 1876) (second 1886) (length 115.364639)) + (spring (first 1886) (second 1885) (length 18.867962)) + (spring (first 1885) (second 1887) (length 108.908218)) + (spring (first 1887) (second 1888) (length 16.643316)) + (spring (first 1888) (second 1886) (length 108.784187)) + (spring (first 1885) (second 1888) (length 109.480591)) + (spring (first 1886) (second 1887) (length 111.072052)) + (spring (first 1878) (second 1937) (length 107.056061)) + (spring (first 1937) (second 1938) (length 22.671568)) + (spring (first 1938) (second 1879) (length 107.814659)) + (spring (first 1938) (second 1939) (length 100.895988)) + (spring (first 1939) (second 1940) (length 24.083189)) + (spring (first 1940) (second 1937) (length 100.767059)) + (spring (first 1878) (second 1938) (length 109.658562)) + (spring (first 1879) (second 1937) (length 109.808922)) + (spring (first 1937) (second 1939) (length 104.201729)) + (spring (first 1938) (second 1940) (length 102.800781)) + (spring (first 1880) (second 2041) (length 103.019417)) + (spring (first 2041) (second 2042) (length 22.090721)) + (spring (first 2042) (second 1881) (length 101.044548)) + (spring (first 1880) (second 2042) (length 106.887794)) + (spring (first 1881) (second 2041) (length 102.107788)) + (spring (first 2041) (second 2043) (length 92.021736)) + (spring (first 2043) (second 2044) (length 25.079872)) + (spring (first 2044) (second 2042) (length 92.005432)) + (spring (first 2041) (second 2044) (length 96.772926)) + (spring (first 2043) (second 2042) (length 93.145050)) + (spring (first 1876) (second 1886) (length 115.364639)) + (spring (first 1876) (second 1888) (length 222.623001)) + (spring (first 1887) (second 1877) (length 227.633484)) + (spring (first 1878) (second 1939) (length 209.678329)) + (spring (first 1879) (second 1940) (length 209.380035)) + (spring (first 1880) (second 2044) (length 198.116135)) + (spring (first 2043) (second 1881) (length 192.898941)) + (spring (first 1880) (second 1879) (length 42.047592)) + (spring (first 1880) (second 1878) (length 42.438190)) + (spring (first 1880) (second 1877) (length 37.107952)) + (spring (first 1876) (second 1881) (length 37.643059)) + (spring (first 1876) (second 1879) (length 44.045429)) + (spring (first 1876) (second 1878) (length 33.541019)) + (spring (first 1877) (second 1880) (length 37.107952)) + (spring (first 1877) (second 1881) (length 42.379242)) + (spring (first 1877) (second 1879) (length 34.132095)) + (spring (first 1878) (second 1876) (length 33.541019)) + (spring (first 1878) (second 1881) (length 39.012817)) + (spring (first 1878) (second 1880) (length 42.438190)) + (spring (first 1879) (second 1880) (length 42.047592)) + (spring (first 2115) (second 2116) (length 31.764761)) + (spring (first 2116) (second 2117) (length 27.459061)) + (spring (first 2117) (second 2118) (length 29.154760)) + (spring (first 2118) (second 2119) (length 30.479502)) + (spring (first 2119) (second 2120) (length 26.476404)) + (spring (first 2120) (second 2115) (length 23.086792)) + (spring (first 2116) (second 2120) (length 50.635956)) + (spring (first 2116) (second 2119) (length 57.870544)) + (spring (first 2116) (second 2118) (length 49.678970)) + (spring (first 2117) (second 2119) (length 50.803543)) + (spring (first 2117) (second 2120) (length 57.008770)) + (spring (first 2117) (second 2115) (length 47.885281)) + (spring (first 2118) (second 2120) (length 49.396355)) + (spring (first 2118) (second 2115) (length 53.150730)) + (spring (first 2119) (second 2115) (length 42.638012)) + (spring (first 1885) (second 1879) (length 153.026138)) + (spring (first 1886) (second 1881) (length 152.970581)) + (spring (first 1938) (second 1876) (length 143.178207)) + (spring (first 1937) (second 1880) (length 148.492432)) + (spring (first 2042) (second 1877) (length 141.428421)) + (spring (first 2041) (second 1878) (length 140.427917)) + (spring (first 1888) (second 1872) (length 241.033188)) + (spring (first 1888) (second 1872) (length 241.033188)) + (spring (first 1887) (second 1872) (length 241.138962)) + (spring (first 1940) (second 1872) (length 229.316376)) + (spring (first 1939) (second 1872) (length 230.204254)) + (spring (first 2043) (second 1872) (length 210.686966)) + (spring (first 2044) (second 1872) (length 212.150894)) + (spring (first 1885) (second 1878) (length 133.544006)) + (spring (first 1886) (second 1880) (length 133.734818)) + (spring (first 1938) (second 1877) (length 122.576508)) + (spring (first 1937) (second 1881) (length 136.400146)) + (spring (first 2041) (second 1879) (length 127.440186)) + (spring (first 2042) (second 1876) (length 127.675369)) + (spring (first 1886) (second 1937) (length 196.124954)) + (spring (first 1938) (second 2042) (length 217.368347)) + (spring (first 2041) (second 1885) (length 209.823730)) + (spring (first 1887) (second 2565) (length 36.000000)) + (spring (first 2565) (second 2566) (length 35.057095)) + (spring (first 2566) (second 2569) (length 32.140316)) + (spring (first 2569) (second 2570) (length 24.000000)) + (spring (first 2570) (second 2571) (length 29.017237)) + (spring (first 2571) (second 2115) (length 18.248287)) + (spring (first 2120) (second 2626) (length 22.022715)) + (spring (first 2626) (second 2627) (length 28.319605)) + (spring (first 2627) (second 2628) (length 49.010204)) + (spring (first 2628) (second 2629) (length 27.294687)) + (spring (first 2629) (second 2630) (length 28.284271)) + (spring (first 2630) (second 1880) (length 30.594116)) + (spring (first 1939) (second 2687) (length 21.023796)) + (spring (first 2687) (second 2688) (length 15.652476)) + (spring (first 2688) (second 2689) (length 15.620500)) + (spring (first 2689) (second 2690) (length 18.439089)) + (spring (first 2690) (second 2691) (length 16.552946)) + (spring (first 2691) (second 2692) (length 16.278820)) + (spring (first 2692) (second 2687) (length 16.492422)) + (spring (first 2692) (second 2688) (length 29.206163)) + (spring (first 2688) (second 2690) (length 29.120440)) + (spring (first 2690) (second 2692) (length 26.476404)) + (spring (first 2690) (second 2765) (length 30.610456)) + (spring (first 2765) (second 2766) (length 17.117243)) + (spring (first 2766) (second 2767) (length 15.132746)) + (spring (first 2765) (second 2768) (length 22.360680)) + (spring (first 2768) (second 2769) (length 15.652476)) + (spring (first 2690) (second 2770) (length 24.331051)) + (spring (first 2770) (second 2771) (length 16.763054)) + (spring (first 2770) (second 2772) (length 18.439089)) + (spring (first 2770) (second 2773) (length 15.620500)) + (spring (first 2690) (second 2774) (length 33.241539)) + (spring (first 2774) (second 2775) (length 16.155495)) + (spring (first 2774) (second 2776) (length 18.601076)) + (spring (first 2774) (second 2777) (length 15.132746)) + (spring (first 1937) (second 1877) (length 118.224365)) + (spring (first 1886) (second 1878) (length 131.125900)) + (spring (first 1888) (second 1937) (length 294.613312)) + (spring (first 1940) (second 1886) (length 282.334900)) + (spring (first 1885) (second 2043) (length 293.492767)) + (spring (first 2041) (second 1887) (length 307.975647)) + (spring (first 1939) (second 2042) (length 312.622772)) + (spring (first 2044) (second 1938) (length 301.705139)) + (spring (first 2119) (second 3576) (length 30.413813)) + (spring (first 3576) (second 3577) (length 20.615528)) + (spring (first 3576) (second 3578) (length 17.492855)) + (spring (first 3576) (second 3579) (length 21.213203)) + (spring (first 2116) (second 3580) (length 36.674240)) + (spring (first 3580) (second 3581) (length 18.110771)) + (spring (first 3580) (second 3582) (length 16.643316)) + (spring (first 3580) (second 3583) (length 20.248457)) + (spring (first 2117) (second 3584) (length 34.014702)) + (spring (first 3584) (second 3585) (length 16.000000)) + (spring (first 2118) (second 3586) (length 33.376640)) + (spring (first 3586) (second 3587) (length 17.804493)) + (spring (first 2115) (second 3588) (length 40.224369)) + (spring (first 2120) (second 3589) (length 38.897301)) + (spring (first 3589) (second 3590) (length 17.888544)) + (spring (first 3590) (second 3588) (length 16.552946)) + (spring (first 3589) (second 3588) (length 24.041630)) + (spring (first 3590) (second 3945) (length 25.495098)) + (spring (first 3945) (second 3946) (length 23.086792)) + (spring (first 3946) (second 3947) (length 29.681644)) + (spring (first 3947) (second 1885) (length 33.970577)) + (spring (first 1875) (second 4202) (length 48.010414)) + (spring (first 4202) (second 4203) (length 83.486526)) + (spring (first 4202) (second 4204) (length 81.024689)) + (spring (first 4204) (second 4203) (length 135.000000)) + (spring (first 4203) (second 1872) (length 352.638611)) + (spring (first 4204) (second 1872) (length 350.526733)) + (spring (first 1938) (second 6283) (length 21.400934)) + (spring (first 6283) (second 6284) (length 32.015621)) + (spring (first 6284) (second 6285) (length 31.575306)) + (spring (first 6285) (second 6286) (length 23.086792)) + (spring (first 6286) (second 2767) (length 24.839485)) + (spring (first 1871) (second 6460) (length 219.002289)) + (spring (first 6460) (second 6461) (length 93.214806)) + (spring (first 6461) (second 6462) (length 63.000000)) + (spring (first 6462) (second 6463) (length 92.439171)) + (spring (first 6463) (second 1871) (length 132.003784)) + (spring (first 6462) (second 1871) (length 168.908264)) + (spring (first 6461) (second 6463) (length 116.824654)) + (spring (first 6462) (second 6460) (length 120.615089)) + (spring (first 1873) (second 6464) (length 241.000000)) + (spring (first 6464) (second 6465) (length 100.439034)) + (spring (first 6465) (second 6466) (length 71.000000)) + (spring (first 6466) (second 6467) (length 100.439034)) + (spring (first 6467) (second 1873) (length 126.000000)) + (spring (first 6466) (second 1873) (length 177.504929)) + (spring (first 6467) (second 6465) (length 135.103668)) + (spring (first 6466) (second 6464) (length 135.103668)) + (spring (first 6461) (second 6644) (length 93.380943)) + (spring (first 6644) (second 6645) (length 88.769363)) + (spring (first 6645) (second 6646) (length 96.772926)) + (spring (first 6646) (second 6647) (length 79.624115)) + (spring (first 6647) (second 6648) (length 76.295479)) + (spring (first 6648) (second 6649) (length 61.000000)) + (spring (first 6649) (second 6650) (length 78.102493)) + (spring (first 6650) (second 6651) (length 82.710335)) + (spring (first 6651) (second 6652) (length 94.831429)) + (spring (first 6652) (second 6653) (length 90.249657)) + (spring (first 6653) (second 6462) (length 92.417534)) + (spring (first 6461) (second 6653) (length 99.317673)) + (spring (first 6462) (second 6644) (length 121.264175)) + (spring (first 6644) (second 6653) (length 58.034473)) + (spring (first 6644) (second 6652) (length 118.105888)) + (spring (first 6653) (second 6645) (length 95.078911)) + (spring (first 6645) (second 6652) (length 60.008331)) + (spring (first 6645) (second 6651) (length 98.234413)) + (spring (first 6651) (second 6646) (length 60.074955)) + (spring (first 6646) (second 6652) (length 126.150703)) + (spring (first 6646) (second 6650) (length 111.758667)) + (spring (first 6650) (second 6647) (length 65.007690)) + (spring (first 6647) (second 6651) (length 92.179176)) + (spring (first 6647) (second 6649) (length 88.509888)) + (spring (first 6648) (second 6650) (length 109.622078)) + (spring (first 6821) (second 6824) (length 28.284271)) + (spring (first 6824) (second 6825) (length 16.278820)) + (spring (first 6825) (second 6826) (length 23.086792)) + (spring (first 6826) (second 6827) (length 16.124516)) + (spring (first 6826) (second 6827) (length 16.124516)) + (spring (first 6826) (second 6828) (length 16.031219)) + (spring (first 6826) (second 6829) (length 19.104973)) + (spring (first 6824) (second 6830) (length 19.416489)) + (spring (first 6830) (second 6831) (length 29.017237)) + (spring (first 6831) (second 6832) (length 16.643316)) + (spring (first 6831) (second 6833) (length 17.464249)) + (spring (first 6830) (second 6821) (length 31.257000)) + (spring (first 6821) (second 6825) (length 33.241539)) + (spring (first 6824) (second 6835) (length 17.029387)) + (spring (first 6835) (second 6836) (length 18.110771)) + (spring (first 6836) (second 6838) (length 15.811388)) + (spring (first 6838) (second 6839) (length 15.231546)) + (spring (first 6839) (second 6824) (length 26.305893)) + (spring (first 6824) (second 6836) (length 26.870058)) + (spring (first 6824) (second 6838) (length 33.526108)) + (spring (first 6839) (second 6835) (length 32.649654)) + (spring (first 6821) (second 6906) (length 22.135944)) + (spring (first 6906) (second 6649) (length 16.278820)) + (spring (first 6821) (second 7132) (length 24.515301)) + (spring (first 6831) (second 7133) (length 15.297058)) + (spring (first 7132) (second 7134) (length 16.124516)) + (spring (first 6839) (second 7519) (length 18.973665)) + (spring (first 7519) (second 7520) (length 19.416489)) + (spring (first 7520) (second 7521) (length 21.540659)) + (spring (first 7521) (second 7522) (length 19.924858)) + (spring (first 7522) (second 7523) (length 27.018513)) + (spring (first 7523) (second 1888) (length 19.000000)) + (spring (first 6466) (second 8488) (length 15.811388)) + (spring (first 6466) (second 8489) (length 21.095022)) + (spring (first 8489) (second 8488) (length 27.073973)) + (spring (first 8488) (second 8490) (length 41.340054)) + (spring (first 8490) (second 8491) (length 46.754681)) + (spring (first 8491) (second 6465) (length 15.811388)) + (spring (first 6465) (second 8492) (length 21.213203)) + (spring (first 8492) (second 8491) (length 24.083189)) + (spring (first 8490) (second 8493) (length 39.000000)) + (spring (first 8494) (second 8493) (length 16.000000)) + (spring (first 8493) (second 8495) (length 16.031219)) + (spring (first 8495) (second 8496) (length 28.178005)) + (spring (first 8496) (second 8497) (length 15.652476)) + (spring (first 8496) (second 8498) (length 17.000000)) + (spring (first 8496) (second 8498) (length 17.000000)) + (spring (first 8496) (second 8498) (length 17.000000)) + (spring (first 8496) (second 8499) (length 19.235384)) + (spring (first 8494) (second 8500) (length 23.409399)) + (spring (first 8500) (second 8501) (length 15.264338)) + (spring (first 8500) (second 8502) (length 15.264338)) + (spring (first 8500) (second 8503) (length 16.278820)) + (spring (first 8494) (second 8490) (length 42.154476)) + (spring (first 8495) (second 8490) (length 41.231056)) + (spring (first 8494) (second 8504) (length 42.449970)) + (spring (first 8495) (second 8505) (length 47.423622)) + (spring (first 8493) (second 8505) (length 37.576588)) + (spring (first 8505) (second 8506) (length 19.723083)) + (spring (first 8506) (second 8504) (length 17.691807)) + (spring (first 8504) (second 8493) (length 33.615471)) + (spring (first 8495) (second 6466) (length 98.005104)) + (spring (first 8494) (second 6465) (length 103.464973)) + (spring (first 8506) (second 8493) (length 44.011364)) + (spring (first 2044) (second 9071) (length 44.283180)) + (spring (first 9071) (second 9072) (length 38.209946)) + (spring (first 9072) (second 9073) (length 29.698484)) + (spring (first 9073) (second 9074) (length 34.205261)) + (spring (first 9074) (second 9075) (length 35.227829)) + (spring (first 9075) (second 9076) (length 32.249031)) + (spring (first 9076) (second 9077) (length 28.301943)) + (spring (first 8493) (second 6465) (length 95.754898)) + (spring (first 8493) (second 6464) (length 195.112793)) + (spring (first 8491) (second 6464) (length 115.247559)) + (spring (first 9077) (second 10097) (length 34.058773)) + (spring (first 10097) (second 10098) (length 30.886890)) + (spring (first 10098) (second 8504) (length 45.177429)) + )) + +;; EOF ;; diff --git a/examples/choh/quicksave4.construo b/examples/choh/quicksave4.construo new file mode 100644 index 0000000..d7a2c34 --- /dev/null +++ b/examples/choh/quicksave4.construo @@ -0,0 +1,308 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 533) (pos 611.000000 541.649780 0.000000) (velocity -0.000325 3.599023 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 534) (pos 627.000000 597.649841 0.000000) (velocity 0.000001 3.599901 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 535) (pos 657.000000 596.649780 0.000000) (velocity 0.000422 3.600068 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 536) (pos 610.000000 496.649719 0.000000) (velocity -0.000719 3.600022 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 537) (pos 586.000000 497.649780 0.000000) (velocity 0.000729 3.600057 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 538) (pos 572.000000 530.649658 0.000000) (velocity -0.000272 3.600226 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 539) (pos 577.000000 547.649841 0.000000) (velocity 0.000099 3.600337 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 540) (pos 562.000000 546.649780 0.000000) (velocity -0.000188 3.600297 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 541) (pos 553.000000 533.649780 0.000000) (velocity -0.000005 3.600003 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 543) (pos 646.000000 530.649841 0.000000) (velocity -0.000554 3.605634 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 544) (pos 639.000000 545.649719 0.000000) (velocity 0.001371 3.597060 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 545) (pos 655.000000 549.649719 0.000000) (velocity -0.000327 3.599306 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 546) (pos 664.000000 534.649780 0.000000) (velocity 0.000120 3.600024 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 632) (pos 732.000000 597.649780 0.000000) (velocity 0.000000 3.599997 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 633) (pos 755.000000 546.649780 0.000000) (velocity -0.000287 3.600145 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 634) (pos 775.000000 547.649780 0.000000) (velocity 0.000000 3.599997 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 635) (pos 799.000000 598.649780 0.000000) (velocity 0.000000 3.599997 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 647) (pos 206.996490 599.000000 0.000000) (velocity -0.003294 -0.007519 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 648) (pos 363.016052 248.526230 0.000000) (velocity 0.102193 2.429805 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 649) (pos 504.005768 598.645203 0.000000) (velocity 0.121545 3.560047 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 650) (pos 358.261108 487.429413 0.000000) (velocity 2.245389 1.924016 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 653) (pos 455.006378 248.640594 0.000000) (velocity 0.075392 3.459687 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 654) (pos 454.998596 279.643280 0.000000) (velocity -0.003040 3.478755 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 655) (pos 363.004059 280.540436 0.000000) (velocity 0.031240 2.451175 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2967) (pos 568.000000 594.649780 0.000000) (velocity 0.000444 3.600063 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2968) (pos 297.993042 599.000000 0.000000) (velocity -0.004553 -0.007711 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2969) (pos 425.016205 598.631104 0.000000) (velocity 0.170482 3.343605 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2970) (pos 363.188110 558.443420 0.000000) (velocity 1.353499 1.847228 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3401) (pos 588.000000 597.649841 0.000000) (velocity -0.000630 3.600555 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3880) (pos 530.004211 248.648819 0.000000) (velocity 0.041505 3.582509 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3882) (pos 531.000000 279.649658 0.000000) (velocity 0.014937 3.587034 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4188) (pos 606.004395 248.650742 0.000000) (velocity 0.028341 3.605351 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4189) (pos 605.001160 279.650604 0.000000) (velocity 0.030765 3.614453 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4654) (pos 640.000000 457.649750 0.000000) (velocity 0.000036 3.599284 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6324) (pos 268.012390 280.641083 0.000000) (velocity 0.136254 3.475390 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6325) (pos 196.008575 280.648224 0.000000) (velocity 0.094024 3.581788 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6326) (pos 123.002098 279.649994 0.000000) (velocity 0.028137 3.603640 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6331) (pos 268.004517 248.641449 0.000000) (velocity 0.051019 3.471707 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6334) (pos 197.003052 248.649139 0.000000) (velocity 0.037091 3.587023 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6335) (pos 123.002396 247.650757 0.000000) (velocity 0.030889 3.611958 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6362) (pos 196.999588 214.649460 0.000000) (velocity -0.015891 3.589393 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6363) (pos 267.998138 214.643738 0.000000) (velocity -0.022202 3.491233 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6366) (pos 363.004303 214.561096 0.000000) (velocity 0.049913 2.595105 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6367) (pos 454.013977 214.639999 0.000000) (velocity 0.162241 3.461001 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6368) (pos 530.011292 214.647873 0.000000) (velocity 0.128944 3.578166 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6508) (pos 61.000629 304.649628 0.000000) (velocity 0.011883 3.597692 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6509) (pos 13.000262 351.649628 0.000000) (velocity 0.006081 3.595058 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6510) (pos 21.000118 396.649658 0.000000) (velocity 0.002600 3.595339 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6511) (pos 70.000000 418.649719 0.000000) (velocity 0.001513 3.597613 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6512) (pos 138.000000 418.649841 0.000000) (velocity 0.000252 3.601588 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6513) (pos 194.000000 401.649994 0.000000) (velocity 0.003489 3.603852 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6514) (pos 239.000061 361.650024 0.000000) (velocity 0.008301 3.605052 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6515) (pos 227.000473 311.649963 0.000000) (velocity 0.013033 3.604068 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6516) (pos 178.000824 290.649902 0.000000) (velocity 0.013106 3.602291 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6525) (pos 19.000797 240.649933 0.000000) (velocity 0.016240 3.601698 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6526) (pos 36.000347 173.650085 0.000000) (velocity 0.007234 3.605236 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6527) (pos 91.000000 136.650116 0.000000) (velocity 0.002968 3.605938 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6528) (pos 159.000000 138.649841 0.000000) (velocity -0.000703 3.600275 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6529) (pos 195.000000 173.649689 0.000000) (velocity 0.003988 3.595921 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6645) (pos 587.000000 472.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6646) (pos 585.000000 455.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6647) (pos 643.000000 473.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6679) (pos 82.000000 67.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6680) (pos 156.000000 58.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6681) (pos 220.000000 78.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6682) (pos 245.000000 141.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6882) (pos 455.000000 181.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6883) (pos 363.000000 182.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6885) (pos 266.000000 183.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6946) (pos 634.000000 496.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8102) (pos 363.000000 150.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8296) (pos 616.000000 482.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8317) (pos 617.000000 440.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 533) (second 534) (length 58.240879)) + (spring (first 534) (second 535) (length 30.016663)) + (spring (first 533) (second 536) (length 45.011108)) + (spring (first 536) (second 534) (length 102.420700)) + (spring (first 536) (second 537) (length 24.020824)) + (spring (first 537) (second 538) (length 35.846897)) + (spring (first 538) (second 539) (length 17.720045)) + (spring (first 538) (second 540) (length 18.867962)) + (spring (first 538) (second 541) (length 19.235384)) + (spring (first 543) (second 544) (length 16.552946)) + (spring (first 543) (second 545) (length 21.023796)) + (spring (first 543) (second 546) (length 18.439089)) + (spring (first 537) (second 533) (length 50.606323)) + (spring (first 535) (second 632) (length 75.006668)) + (spring (first 632) (second 633) (length 55.946404)) + (spring (first 633) (second 634) (length 20.024984)) + (spring (first 634) (second 635) (length 56.364883)) + (spring (first 635) (second 632) (length 67.007462)) + (spring (first 632) (second 634) (length 65.946945)) + (spring (first 633) (second 635) (length 68.117546)) + (spring (first 533) (second 535) (length 71.700768)) + (spring (first 647) (second 648) (length 384.105469)) + (spring (first 648) (second 649) (length 377.334076)) + (spring (first 649) (second 647) (length 297.001678)) + (spring (first 647) (second 650) (length 188.002655)) + (spring (first 650) (second 649) (length 183.403931)) + (spring (first 650) (second 648) (length 239.052292)) + (spring (first 648) (second 653) (length 92.000000)) + (spring (first 653) (second 654) (length 31.000000)) + (spring (first 654) (second 655) (length 92.005432)) + (spring (first 655) (second 648) (length 32.000000)) + (spring (first 655) (second 653) (length 97.406364)) + (spring (first 648) (second 654) (length 97.082436)) + (spring (first 650) (second 655) (length 207.060379)) + (spring (first 650) (second 2968) (length 127.059044)) + (spring (first 2968) (second 2969) (length 127.003937)) + (spring (first 2969) (second 650) (length 129.653381)) + (spring (first 2969) (second 2970) (length 73.783470)) + (spring (first 2970) (second 650) (length 71.175842)) + (spring (first 2970) (second 2968) (length 76.850502)) + (spring (first 2968) (second 648) (length 356.967773)) + (spring (first 2969) (second 648) (length 355.449005)) + (spring (first 2970) (second 648) (length 310.000000)) + (spring (first 533) (second 3401) (length 60.539242)) + (spring (first 3401) (second 2967) (length 20.223749)) + (spring (first 653) (second 3880) (length 75.000000)) + (spring (first 3880) (second 3882) (length 31.016125)) + (spring (first 3882) (second 654) (length 76.000000)) + (spring (first 654) (second 3880) (length 81.154175)) + (spring (first 653) (second 3882) (length 82.079231)) + (spring (first 655) (second 3880) (length 170.038239)) + (spring (first 648) (second 3882) (length 170.836182)) + (spring (first 3880) (second 4188) (length 76.000000)) + (spring (first 4188) (second 4189) (length 31.016125)) + (spring (first 4189) (second 3882) (length 74.000000)) + (spring (first 3882) (second 4188) (length 81.154175)) + (spring (first 3880) (second 4189) (length 81.154175)) + (spring (first 4189) (second 653) (length 153.169846)) + (spring (first 654) (second 4188) (length 154.149277)) + (spring (first 633) (second 535) (length 110.018181)) + (spring (first 655) (second 6324) (length 95.000000)) + (spring (first 6324) (second 6325) (length 72.000000)) + (spring (first 6325) (second 6326) (length 73.006851)) + (spring (first 648) (second 6331) (length 95.000000)) + (spring (first 6331) (second 6334) (length 71.000000)) + (spring (first 6334) (second 6335) (length 74.006760)) + (spring (first 6335) (second 6326) (length 32.000000)) + (spring (first 6326) (second 6334) (length 80.230919)) + (spring (first 6335) (second 6325) (length 80.112419)) + (spring (first 6325) (second 6331) (length 78.790863)) + (spring (first 6334) (second 6324) (length 77.878113)) + (spring (first 6334) (second 6325) (length 32.015621)) + (spring (first 6331) (second 6324) (length 32.000000)) + (spring (first 6324) (second 648) (length 100.244698)) + (spring (first 6331) (second 655) (length 100.244698)) + (spring (first 6324) (second 653) (length 189.718216)) + (spring (first 654) (second 6331) (length 189.552109)) + (spring (first 655) (second 6334) (length 169.056198)) + (spring (first 6325) (second 648) (length 170.038239)) + (spring (first 6324) (second 6335) (length 148.707764)) + (spring (first 6326) (second 6331) (length 148.276764)) + (spring (first 6335) (second 6362) (length 81.024689)) + (spring (first 6362) (second 6363) (length 71.000000)) + (spring (first 6362) (second 6334) (length 34.000000)) + (spring (first 6363) (second 6331) (length 34.000000)) + (spring (first 6363) (second 6366) (length 95.000000)) + (spring (first 6366) (second 648) (length 34.000000)) + (spring (first 6366) (second 6367) (length 91.000000)) + (spring (first 6367) (second 6368) (length 76.000000)) + (spring (first 6368) (second 4188) (length 83.258636)) + (spring (first 3880) (second 6368) (length 34.000000)) + (spring (first 653) (second 6367) (length 34.014702)) + (spring (first 6334) (second 6363) (length 78.721024)) + (spring (first 6331) (second 6362) (length 78.721024)) + (spring (first 6331) (second 6366) (length 100.900940)) + (spring (first 648) (second 6363) (length 100.900940)) + (spring (first 648) (second 6367) (length 97.144226)) + (spring (first 653) (second 6366) (length 98.081596)) + (spring (first 653) (second 6368) (length 82.346825)) + (spring (first 3880) (second 6367) (length 83.258636)) + (spring (first 6335) (second 6363) (length 148.707764)) + (spring (first 6334) (second 6366) (length 169.446152)) + (spring (first 6362) (second 648) (length 169.446152)) + (spring (first 6331) (second 6367) (length 189.081985)) + (spring (first 6363) (second 653) (length 190.065781)) + (spring (first 648) (second 6368) (length 170.425934)) + (spring (first 6366) (second 3880) (length 170.425934)) + (spring (first 4188) (second 6367) (length 155.756226)) + (spring (first 6326) (second 6508) (length 66.850578)) + (spring (first 6508) (second 6509) (length 67.178864)) + (spring (first 6509) (second 6510) (length 45.705578)) + (spring (first 6510) (second 6511) (length 53.712196)) + (spring (first 6511) (second 6512) (length 68.000000)) + (spring (first 6512) (second 6513) (length 58.523499)) + (spring (first 6513) (second 6514) (length 60.207973)) + (spring (first 6514) (second 6515) (length 51.419842)) + (spring (first 6515) (second 6516) (length 53.310413)) + (spring (first 6516) (second 6326) (length 56.089214)) + (spring (first 6508) (second 6516) (length 117.834633)) + (spring (first 6508) (second 6515) (length 166.147522)) + (spring (first 6508) (second 6514) (length 186.903717)) + (spring (first 6508) (second 6513) (length 164.614700)) + (spring (first 6508) (second 6512) (length 137.568161)) + (spring (first 6508) (second 6511) (length 114.354713)) + (spring (first 6508) (second 6510) (length 100.319489)) + (spring (first 6509) (second 6326) (length 131.468628)) + (spring (first 6509) (second 6516) (length 175.914749)) + (spring (first 6509) (second 6515) (length 217.706223)) + (spring (first 6509) (second 6514) (length 226.221130)) + (spring (first 6509) (second 6513) (length 187.779129)) + (spring (first 6509) (second 6512) (length 141.823837)) + (spring (first 6509) (second 6511) (length 87.965904)) + (spring (first 6510) (second 6326) (length 155.219193)) + (spring (first 6510) (second 6516) (length 189.433365)) + (spring (first 6510) (second 6515) (length 222.847488)) + (spring (first 6510) (second 6514) (length 220.791763)) + (spring (first 6510) (second 6513) (length 173.072235)) + (spring (first 6510) (second 6512) (length 119.050407)) + (spring (first 6511) (second 6326) (length 148.761551)) + (spring (first 6511) (second 6516) (length 167.475372)) + (spring (first 6511) (second 6515) (length 189.994736)) + (spring (first 6511) (second 6514) (length 178.353577)) + (spring (first 6512) (second 6326) (length 139.807007)) + (spring (first 6512) (second 6516) (length 134.104431)) + (spring (first 6512) (second 6515) (length 139.176147)) + (spring (first 6512) (second 6514) (length 115.974136)) + (spring (first 6513) (second 6511) (length 125.159897)) + (spring (first 6513) (second 6326) (length 141.155945)) + (spring (first 6513) (second 6516) (length 112.147224)) + (spring (first 6513) (second 6515) (length 95.859268)) + (spring (first 6514) (second 6326) (length 142.056320)) + (spring (first 6514) (second 6516) (length 93.605553)) + (spring (first 6515) (second 6510) (length 222.847488)) + (spring (first 6515) (second 6326) (length 108.811768)) + (spring (first 536) (second 3401) (length 103.368271)) + (spring (first 6509) (second 6525) (length 111.162041)) + (spring (first 6525) (second 6526) (length 69.123077)) + (spring (first 6526) (second 6527) (length 66.287254)) + (spring (first 6527) (second 6528) (length 68.029404)) + (spring (first 6528) (second 6529) (length 50.209560)) + (spring (first 6529) (second 6362) (length 41.048752)) + (spring (first 6335) (second 6529) (length 103.247276)) + (spring (first 6335) (second 6528) (length 114.791115)) + (spring (first 6335) (second 6527) (length 115.520561)) + (spring (first 6335) (second 6526) (length 114.214706)) + (spring (first 6335) (second 6525) (length 104.235313)) + (spring (first 6335) (second 6508) (length 84.219948)) + (spring (first 6508) (second 6525) (length 76.550636)) + (spring (first 6326) (second 6525) (length 111.072052)) + (spring (first 6508) (second 6526) (length 133.364166)) + (spring (first 6645) (second 6646) (length 17.117243)) + (spring (first 4654) (second 6647) (length 15.640658)) + (spring (first 6646) (second 4654) (length 55.063793)) + (spring (first 6526) (second 6679) (length 116.147362)) + (spring (first 6679) (second 6680) (length 74.545288)) + (spring (first 6680) (second 6681) (length 67.052216)) + (spring (first 6681) (second 6682) (length 67.779053)) + (spring (first 6682) (second 6363) (length 77.151245)) + (spring (first 6362) (second 6682) (length 87.910652)) + (spring (first 6363) (second 6529) (length 83.721207)) + (spring (first 6529) (second 6682) (length 59.716011)) + (spring (first 6682) (second 6528) (length 86.032104)) + (spring (first 6528) (second 6680) (length 80.705620)) + (spring (first 6680) (second 6527) (length 102.033531)) + (spring (first 6527) (second 6679) (length 70.229187)) + (spring (first 6528) (second 6681) (length 86.019783)) + (spring (first 6528) (second 6679) (length 105.179367)) + (spring (first 6682) (second 6680) (length 121.696342)) + (spring (first 6529) (second 6681) (length 98.862846)) + (spring (first 6368) (second 6882) (length 82.212364)) + (spring (first 6882) (second 6883) (length 92.005432)) + (spring (first 6883) (second 6366) (length 32.561096)) + (spring (first 6366) (second 6882) (length 97.926277)) + (spring (first 6883) (second 6367) (length 96.689781)) + (spring (first 6367) (second 6882) (length 33.654446)) + (spring (first 6368) (second 6883) (length 170.172424)) + (spring (first 6883) (second 6885) (length 97.005157)) + (spring (first 6885) (second 6363) (length 31.706760)) + (spring (first 6885) (second 6366) (length 102.009499)) + (spring (first 6883) (second 6363) (length 100.453804)) + (spring (first 6885) (second 6367) (length 190.657669)) + (spring (first 6363) (second 6882) (length 190.004196)) + (spring (first 533) (second 6946) (length 51.116558)) + (spring (first 6946) (second 536) (length 24.008793)) + (spring (first 6946) (second 543) (length 36.668945)) + (spring (first 6885) (second 6362) (length 75.912750)) + (spring (first 6362) (second 6883) (length 169.180740)) + (spring (first 6882) (second 8102) (length 97.082436)) + (spring (first 8102) (second 6885) (length 102.459747)) + (spring (first 8102) (second 6883) (length 32.000000)) + (spring (first 655) (second 648) (length 32.014210)) + (spring (first 655) (second 6367) (length 112.364021)) + (spring (first 655) (second 6363) (length 115.622231)) + (spring (first 655) (second 6882) (length 135.541702)) + (spring (first 655) (second 6885) (length 137.564255)) + (spring (first 655) (second 6366) (length 65.979340)) + (spring (first 655) (second 6883) (length 98.540436)) + (spring (first 655) (second 8102) (length 130.540436)) + (spring (first 6647) (second 8296) (length 28.460499)) + (spring (first 8296) (second 6645) (length 30.675724)) + (spring (first 8296) (second 536) (length 15.830801)) + (spring (first 6646) (second 8296) (length 41.109608)) + (spring (first 8296) (second 4654) (length 34.189686)) + (spring (first 2967) (second 649) (length 64.118835)) + (spring (first 6646) (second 8317) (length 35.341194)) + (spring (first 8317) (second 4654) (length 28.991613)) + (spring (first 6646) (second 4189) (length 176.486420)) + )) + +;; EOF ;; diff --git a/examples/choh/quicksave5.construo b/examples/choh/quicksave5.construo new file mode 100644 index 0000000..1aef364 --- /dev/null +++ b/examples/choh/quicksave5.construo @@ -0,0 +1,130 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 3768) (pos 390.000000 310.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3770) (pos 269.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3771) (pos 390.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3772) (pos 508.000000 281.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3792) (pos 508.000000 311.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3793) (pos 268.000000 309.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3814) (pos 225.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3815) (pos 551.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3846) (pos 391.000000 249.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3847) (pos 383.000000 473.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3848) (pos 245.000000 298.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3850) (pos 245.000000 327.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3851) (pos 533.000000 298.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3852) (pos 533.000000 328.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3854) (pos 244.000000 362.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3855) (pos 209.000000 362.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3856) (pos 209.000000 383.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3857) (pos 280.000000 363.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3863) (pos 281.000000 384.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3864) (pos 245.000000 384.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3865) (pos 534.000000 362.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3866) (pos 498.000000 363.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3867) (pos 573.000000 363.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3868) (pos 498.000000 384.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3869) (pos 535.000000 385.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3870) (pos 574.000000 386.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4005) (pos 199.000000 419.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4006) (pos 164.000000 438.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4007) (pos 150.000000 432.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4008) (pos 151.000000 449.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4009) (pos 165.000000 458.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4010) (pos 197.000000 373.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4016) (pos 177.000000 419.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4017) (pos 166.000000 404.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4018) (pos 176.000000 389.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4019) (pos 195.000000 391.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4499) (pos 217.000000 448.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4500) (pos 207.000000 465.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4501) (pos 190.000000 460.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4502) (pos 240.000000 451.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4503) (pos 250.000000 435.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 3770) (second 3771) (length 121.000000)) + (spring (first 3771) (second 3772) (length 118.004234)) + (spring (first 3768) (second 3770) (length 124.663544)) + (spring (first 3768) (second 3772) (length 121.511314)) + (spring (first 3768) (second 3792) (length 118.004234)) + (spring (first 3792) (second 3772) (length 30.000000)) + (spring (first 3768) (second 3793) (length 122.004097)) + (spring (first 3793) (second 3770) (length 29.017237)) + (spring (first 3793) (second 3771) (length 125.399361)) + (spring (first 3771) (second 3792) (length 122.004097)) + (spring (first 3768) (second 3771) (length 30.000000)) + (spring (first 3771) (second 3814) (length 358.258301)) + (spring (first 3814) (second 3815) (length 326.001526)) + (spring (first 3815) (second 3771) (length 357.326172)) + (spring (first 3770) (second 3792) (length 241.002075)) + (spring (first 3772) (second 3793) (length 241.627808)) + (spring (first 3770) (second 3846) (length 125.876923)) + (spring (first 3846) (second 3772) (length 121.297157)) + (spring (first 3846) (second 3771) (length 31.016125)) + (spring (first 3814) (second 3847) (length 201.467117)) + (spring (first 3847) (second 3815) (length 210.000000)) + (spring (first 3847) (second 3771) (length 193.126907)) + (spring (first 3770) (second 3848) (length 30.000000)) + (spring (first 3848) (second 3850) (length 29.000000)) + (spring (first 3850) (second 3793) (length 29.206163)) + (spring (first 3772) (second 3851) (length 30.232433)) + (spring (first 3792) (second 3852) (length 30.232433)) + (spring (first 3852) (second 3851) (length 30.000000)) + (spring (first 3793) (second 3848) (length 25.495098)) + (spring (first 3792) (second 3851) (length 28.178005)) + (spring (first 3850) (second 3854) (length 35.014282)) + (spring (first 3854) (second 3855) (length 35.000000)) + (spring (first 3855) (second 3856) (length 21.000000)) + (spring (first 3854) (second 3857) (length 36.013885)) + (spring (first 3857) (second 3863) (length 21.023796)) + (spring (first 3863) (second 3864) (length 36.000000)) + (spring (first 3864) (second 3856) (length 36.013885)) + (spring (first 3856) (second 3854) (length 40.816662)) + (spring (first 3855) (second 3864) (length 42.190044)) + (spring (first 3864) (second 3854) (length 22.022715)) + (spring (first 3864) (second 3857) (length 40.816662)) + (spring (first 3854) (second 3863) (length 43.046486)) + (spring (first 3852) (second 3865) (length 34.014702)) + (spring (first 3865) (second 3866) (length 36.013885)) + (spring (first 3865) (second 3867) (length 39.012817)) + (spring (first 3866) (second 3868) (length 21.000000)) + (spring (first 3868) (second 3869) (length 37.013512)) + (spring (first 3869) (second 3870) (length 39.012817)) + (spring (first 3870) (second 3867) (length 23.021729)) + (spring (first 3868) (second 3865) (length 42.190044)) + (spring (first 3866) (second 3869) (length 43.046486)) + (spring (first 3869) (second 3865) (length 23.021729)) + (spring (first 3869) (second 3867) (length 43.908997)) + (spring (first 3865) (second 3870) (length 46.647614)) + (spring (first 3814) (second 3768) (length 331.917145)) + (spring (first 3815) (second 3768) (length 330.820190)) + (spring (first 3847) (second 3768) (length 163.150238)) + (spring (first 3856) (second 4005) (length 37.363083)) + (spring (first 4005) (second 4006) (length 39.824615)) + (spring (first 4006) (second 4007) (length 15.231546)) + (spring (first 4006) (second 4007) (length 15.231546)) + (spring (first 4006) (second 4008) (length 17.029387)) + (spring (first 4006) (second 4008) (length 17.029387)) + (spring (first 4006) (second 4009) (length 20.024984)) + (spring (first 3856) (second 4010) (length 15.620500)) + (spring (first 4005) (second 4016) (length 22.000000)) + (spring (first 4016) (second 4017) (length 18.601076)) + (spring (first 4017) (second 4018) (length 18.027756)) + (spring (first 4018) (second 4019) (length 19.104973)) + (spring (first 4019) (second 4005) (length 28.284271)) + (spring (first 4016) (second 4019) (length 33.286633)) + (spring (first 4016) (second 4018) (length 30.016663)) + (spring (first 4017) (second 4019) (length 31.780497)) + (spring (first 4017) (second 4005) (length 36.249138)) + (spring (first 4019) (second 4016) (length 33.286633)) + (spring (first 4005) (second 4018) (length 37.802116)) + (spring (first 4005) (second 4499) (length 34.132095)) + (spring (first 4499) (second 4500) (length 19.723083)) + (spring (first 4500) (second 4501) (length 17.720045)) + (spring (first 4499) (second 4502) (length 23.194826)) + (spring (first 4502) (second 4503) (length 18.867962)) + )) + +;; EOF ;; diff --git a/examples/choh/quicksave6.construo b/examples/choh/quicksave6.construo new file mode 100644 index 0000000..9bbb779 --- /dev/null +++ b/examples/choh/quicksave6.construo @@ -0,0 +1,101 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 4670) (pos 272.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4671) (pos 387.000000 109.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4672) (pos 527.000000 597.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4673) (pos 402.000000 559.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4727) (pos 167.000000 596.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4728) (pos 631.000000 596.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4803) (pos 514.000000 186.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4804) (pos 500.000000 218.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4805) (pos 513.000000 245.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4806) (pos 534.000000 256.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4807) (pos 554.000000 250.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4808) (pos 570.000000 233.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4809) (pos 581.000000 202.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4810) (pos 561.000000 174.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4811) (pos 621.000000 282.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4813) (pos 613.000000 347.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4815) (pos 686.000000 300.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4816) (pos 632.000000 210.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4817) (pos 633.000000 191.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4818) (pos 650.000000 206.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4819) (pos 648.000000 221.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4820) (pos 551.000000 296.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4821) (pos 530.000000 304.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4822) (pos 545.000000 312.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4823) (pos 567.000000 315.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5242) (pos 611.000000 368.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5243) (pos 643.000000 347.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5244) (pos 678.000000 321.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5245) (pos 710.000000 304.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5300) (pos 630.000000 332.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5301) (pos 660.000000 307.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 4670) (second 4671) (length 503.314026)) + (spring (first 4671) (second 4672) (length 507.684937)) + (spring (first 4672) (second 4670) (length 255.007843)) + (spring (first 4670) (second 4673) (length 136.014709)) + (spring (first 4673) (second 4672) (length 130.648376)) + (spring (first 4673) (second 4671) (length 450.249939)) + (spring (first 4670) (second 4727) (length 105.042847)) + (spring (first 4727) (second 4671) (length 534.386536)) + (spring (first 4672) (second 4728) (length 104.004807)) + (spring (first 4728) (second 4671) (length 544.706360)) + (spring (first 4727) (second 4673) (length 237.894928)) + (spring (first 4728) (second 4673) (length 231.969818)) + (spring (first 4671) (second 4803) (length 148.519363)) + (spring (first 4803) (second 4804) (length 34.928497)) + (spring (first 4804) (second 4805) (length 29.966648)) + (spring (first 4805) (second 4806) (length 23.706539)) + (spring (first 4806) (second 4807) (length 20.880613)) + (spring (first 4807) (second 4808) (length 23.345236)) + (spring (first 4808) (second 4809) (length 32.893768)) + (spring (first 4809) (second 4810) (length 34.409302)) + (spring (first 4810) (second 4803) (length 48.507732)) + (spring (first 4808) (second 4811) (length 70.724815)) + (spring (first 4808) (second 4816) (length 66.128662)) + (spring (first 4816) (second 4817) (length 19.026299)) + (spring (first 4816) (second 4818) (length 18.439089)) + (spring (first 4816) (second 4819) (length 19.416489)) + (spring (first 4808) (second 4820) (length 65.802734)) + (spring (first 4820) (second 4821) (length 22.472204)) + (spring (first 4820) (second 4822) (length 17.088007)) + (spring (first 4820) (second 4823) (length 24.839485)) + (spring (first 4804) (second 4810) (length 75.213028)) + (spring (first 4804) (second 4809) (length 82.565125)) + (spring (first 4804) (second 4808) (length 71.589104)) + (spring (first 4804) (second 4807) (length 62.769421)) + (spring (first 4804) (second 4806) (length 50.990196)) + (spring (first 4805) (second 4803) (length 59.008472)) + (spring (first 4806) (second 4803) (length 72.801102)) + (spring (first 4807) (second 4803) (length 75.471848)) + (spring (first 4808) (second 4803) (length 73.109505)) + (spring (first 4809) (second 4803) (length 68.883957)) + (spring (first 4807) (second 4810) (length 76.321686)) + (spring (first 4807) (second 4809) (length 55.072678)) + (spring (first 4808) (second 4806) (length 42.720020)) + (spring (first 4808) (second 4805) (length 58.249462)) + (spring (first 4808) (second 4810) (length 59.682495)) + (spring (first 4809) (second 4805) (length 80.454956)) + (spring (first 4809) (second 4806) (length 71.589104)) + (spring (first 4809) (second 4807) (length 55.072678)) + (spring (first 4810) (second 4806) (length 86.330757)) + (spring (first 4810) (second 4805) (length 85.702972)) + (spring (first 4671) (second 4807) (length 218.563492)) + (spring (first 4671) (second 4809) (length 215.139496)) + (spring (first 4813) (second 5242) (length 21.095022)) + (spring (first 5242) (second 5243) (length 38.275318)) + (spring (first 5244) (second 5245) (length 36.235340)) + (spring (first 5245) (second 4815) (length 24.331051)) + (spring (first 4811) (second 5300) (length 50.803543)) + (spring (first 5300) (second 5243) (length 19.849434)) + (spring (first 5300) (second 4813) (length 22.671568)) + (spring (first 4811) (second 5301) (length 46.324940)) + (spring (first 5301) (second 4815) (length 26.925823)) + (spring (first 5301) (second 5244) (length 22.803509)) + )) + +;; EOF ;; diff --git a/examples/choh/quicksave7.construo b/examples/choh/quicksave7.construo new file mode 100644 index 0000000..ff4df54 --- /dev/null +++ b/examples/choh/quicksave7.construo @@ -0,0 +1,150 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 727) (pos 640.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 728) (pos 798.000000 224.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 729) (pos 732.000000 498.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 730) (pos 797.000000 499.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 731) (pos 767.000000 480.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 732) (pos 792.000000 464.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 733) (pos 768.000000 442.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 734) (pos 744.000000 461.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 735) (pos 601.000000 597.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 736) (pos 670.000000 597.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 737) (pos 698.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 738) (pos 181.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 739) (pos 143.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 740) (pos 119.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 741) (pos 89.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 742) (pos 2.000000 211.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 743) (pos 0.000000 489.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 744) (pos 57.000000 491.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 745) (pos 30.000000 473.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 746) (pos 5.000000 455.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 747) (pos 28.000000 443.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 748) (pos 49.000000 458.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 954) (pos 377.000000 299.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 956) (pos 482.000000 144.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 957) (pos 505.000000 153.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 958) (pos 519.000000 142.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 959) (pos 520.000000 121.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 960) (pos 504.000000 105.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 961) (pos 483.000000 106.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 962) (pos 473.000000 122.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 964) (pos 494.000000 188.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 965) (pos 562.000000 106.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 966) (pos 557.000000 203.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 967) (pos 541.000000 232.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 968) (pos 521.000000 234.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 969) (pos 584.000000 221.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 970) (pos 603.000000 209.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1382) (pos 365.000000 248.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1383) (pos 381.000000 227.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1384) (pos 379.000000 204.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1385) (pos 395.000000 185.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1386) (pos 399.000000 167.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1387) (pos 425.000000 142.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1388) (pos 447.000000 120.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3762) (pos 414.000000 270.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3763) (pos 431.000000 240.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3764) (pos 455.000000 228.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3765) (pos 469.000000 206.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3766) (pos 478.000000 184.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3767) (pos 506.000000 203.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3768) (pos 485.000000 204.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3769) (pos 565.000000 90.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3770) (pos 582.000000 103.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3771) (pos 580.000000 121.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 727) (second 728) (length 406.926270)) + (spring (first 728) (second 729) (length 281.836823)) + (spring (first 729) (second 730) (length 65.007690)) + (spring (first 730) (second 728) (length 275.001831)) + (spring (first 729) (second 731) (length 39.357338)) + (spring (first 731) (second 730) (length 35.510563)) + (spring (first 731) (second 732) (length 29.681644)) + (spring (first 732) (second 733) (length 32.557640)) + (spring (first 733) (second 734) (length 30.610456)) + (spring (first 734) (second 731) (length 29.832869)) + (spring (first 733) (second 728) (length 220.054535)) + (spring (first 731) (second 728) (length 257.870117)) + (spring (first 727) (second 735) (length 39.051247)) + (spring (first 735) (second 728) (length 421.826965)) + (spring (first 727) (second 736) (length 30.066593)) + (spring (first 736) (second 737) (length 28.017851)) + (spring (first 737) (second 728) (length 387.138214)) + (spring (first 736) (second 728) (length 394.351379)) + (spring (first 738) (second 739) (length 38.013157)) + (spring (first 739) (second 740) (length 24.000000)) + (spring (first 740) (second 741) (length 30.000000)) + (spring (first 738) (second 742) (length 427.299652)) + (spring (first 742) (second 739) (length 411.885895)) + (spring (first 742) (second 740) (length 404.299408)) + (spring (first 742) (second 741) (length 396.658539)) + (spring (first 742) (second 743) (length 278.007202)) + (spring (first 743) (second 744) (length 57.035076)) + (spring (first 744) (second 742) (length 285.350647)) + (spring (first 743) (second 745) (length 34.000000)) + (spring (first 745) (second 744) (length 32.449963)) + (spring (first 745) (second 746) (length 30.805843)) + (spring (first 746) (second 747) (length 25.942244)) + (spring (first 747) (second 748) (length 25.806976)) + (spring (first 748) (second 745) (length 24.207438)) + (spring (first 747) (second 742) (length 233.452347)) + (spring (first 745) (second 742) (length 263.491943)) + (spring (first 735) (second 954) (length 372.800201)) + (spring (first 954) (second 738) (length 358.351776)) + (spring (first 954) (second 742) (length 385.186981)) + (spring (first 954) (second 728) (length 427.628357)) + (spring (first 956) (second 957) (length 24.698177)) + (spring (first 957) (second 958) (length 17.804493)) + (spring (first 958) (second 959) (length 21.023796)) + (spring (first 959) (second 960) (length 22.627417)) + (spring (first 960) (second 961) (length 21.023796)) + (spring (first 956) (second 962) (length 23.769728)) + (spring (first 962) (second 961) (length 18.867962)) + (spring (first 958) (second 964) (length 52.354561)) + (spring (first 958) (second 965) (length 56.080299)) + (spring (first 958) (second 966) (length 71.867935)) + (spring (first 966) (second 967) (length 33.120991)) + (spring (first 967) (second 968) (length 20.099751)) + (spring (first 966) (second 969) (length 32.449963)) + (spring (first 969) (second 970) (length 22.472204)) + (spring (first 954) (second 1382) (length 52.392746)) + (spring (first 1382) (second 1383) (length 26.400757)) + (spring (first 1383) (second 1384) (length 23.086792)) + (spring (first 1384) (second 1385) (length 24.839485)) + (spring (first 1385) (second 1386) (length 18.439089)) + (spring (first 1386) (second 1387) (length 36.069378)) + (spring (first 1387) (second 1388) (length 31.112698)) + (spring (first 1388) (second 961) (length 38.626415)) + (spring (first 954) (second 3762) (length 47.010635)) + (spring (first 3762) (second 3763) (length 34.481880)) + (spring (first 3763) (second 3764) (length 26.832815)) + (spring (first 3764) (second 3765) (length 26.076809)) + (spring (first 3765) (second 964) (length 30.805843)) + (spring (first 964) (second 3766) (length 16.492422)) + (spring (first 964) (second 3767) (length 19.209373)) + (spring (first 964) (second 3768) (length 18.357559)) + (spring (first 965) (second 3769) (length 16.278820)) + (spring (first 965) (second 3770) (length 20.223749)) + (spring (first 965) (second 3770) (length 20.223749)) + (spring (first 965) (second 3771) (length 23.430750)) + (spring (first 956) (second 958) (length 37.054016)) + (spring (first 956) (second 959) (length 44.418465)) + (spring (first 956) (second 960) (length 44.777225)) + (spring (first 956) (second 961) (length 38.013157)) + (spring (first 962) (second 957) (length 44.553337)) + (spring (first 962) (second 958) (length 50.159744)) + (spring (first 962) (second 959) (length 47.010635)) + (spring (first 962) (second 960) (length 35.355339)) + (spring (first 961) (second 957) (length 51.894123)) + (spring (first 961) (second 958) (length 50.911690)) + (spring (first 961) (second 959) (length 39.924931)) + (spring (first 960) (second 957) (length 48.010414)) + (spring (first 960) (second 958) (length 39.924931)) + (spring (first 959) (second 957) (length 35.341194)) + )) + +;; EOF ;; diff --git a/examples/choh/quicksave8.construo b/examples/choh/quicksave8.construo new file mode 100644 index 0000000..3d13fe4 --- /dev/null +++ b/examples/choh/quicksave8.construo @@ -0,0 +1,136 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 230) (pos 114.885536 599.000000 0.000000) (velocity -0.000063 0.027524 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 231) (pos 7.371299 88.413925 0.000000) (velocity 0.028772 -0.325721 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 232) (pos 208.875748 599.000000 0.000000) (velocity -0.000351 0.028846 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 233) (pos 70.888374 599.000000 0.000000) (velocity -0.000019 -0.007181 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 234) (pos 11.888824 599.000000 0.000000) (velocity -0.000008 -0.008946 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 235) (pos 530.000000 598.050415 0.000000) (velocity 0.000169 0.999589 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 236) (pos 621.000000 597.050415 0.000000) (velocity 0.000112 0.999526 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 237) (pos 664.000000 598.050415 0.000000) (velocity -0.003029 0.999471 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 238) (pos 737.000000 599.000000 0.000000) (velocity 0.000078 -0.007277 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 239) (pos 742.000000 83.048920 0.000000) (velocity -0.003643 0.939199 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 243) (pos 796.000000 599.000000 0.000000) (velocity 0.000099 -0.007267 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 330) (pos 562.000000 436.050507 0.000000) (velocity 0.000336 0.999341 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 332) (pos 365.000000 454.050476 0.000000) (velocity -0.000072 0.999672 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 333) (pos 333.000000 488.050507 0.000000) (velocity -0.000654 0.999387 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 334) (pos 409.000000 499.050537 0.000000) (velocity -0.000114 0.999821 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 338) (pos 355.000000 569.050415 0.000000) (velocity -0.000092 1.000730 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 341) (pos 357.000000 534.050415 0.000000) (velocity 0.000000 0.999999 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 342) (pos 342.000000 516.050415 0.000000) (velocity -0.000711 1.000577 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 352) (pos 372.000000 518.050415 0.000000) (velocity 0.000710 1.000761 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 353) (pos 358.000000 503.050385 0.000000) (velocity 0.000722 0.998551 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 355) (pos 330.000000 557.050415 0.000000) (velocity 0.000000 0.999999 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 357) (pos 382.000000 559.050415 0.000000) (velocity 0.000000 0.999999 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 377) (pos 402.000000 565.050415 0.000000) (velocity 0.000000 0.999999 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 378) (pos 390.000000 576.050415 0.000000) (velocity 0.000000 0.999999 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 379) (pos 375.000000 575.050415 0.000000) (velocity 0.000000 0.999999 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 380) (pos 336.000000 573.050415 0.000000) (velocity 0.000000 0.999999 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 381) (pos 320.000000 571.050415 0.000000) (velocity 0.000000 0.999999 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 382) (pos 310.000000 556.050415 0.000000) (velocity 0.000000 0.999999 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 383) (pos 367.000000 474.050537 0.000000) (velocity 0.000166 0.999907 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1732) (pos 326.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1744) (pos 362.000000 296.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1787) (pos 387.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1788) (pos 327.000000 224.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1789) (pos 375.000000 155.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1790) (pos 503.000000 157.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1791) (pos 547.000000 221.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1802) (pos 207.000000 197.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1803) (pos 195.000000 93.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1804) (pos 300.000000 27.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1805) (pos 398.000000 55.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1838) (pos 496.000000 297.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1931) (pos 374.000000 536.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1932) (pos 341.000000 535.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1933) (pos 347.000000 597.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1934) (pos 371.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 230) (second 231) (length 521.878357)) + (spring (first 231) (second 232) (length 548.744934)) + (spring (first 232) (second 230) (length 94.000000)) + (spring (first 231) (second 233) (length 514.747498)) + (spring (first 233) (second 230) (length 44.000000)) + (spring (first 233) (second 234) (length 59.000000)) + (spring (first 234) (second 231) (length 511.008820)) + (spring (first 235) (second 236) (length 91.005493)) + (spring (first 236) (second 237) (length 43.011627)) + (spring (first 237) (second 238) (length 73.006851)) + (spring (first 238) (second 239) (length 516.024231)) + (spring (first 239) (second 237) (length 520.873291)) + (spring (first 239) (second 236) (length 528.050171)) + (spring (first 239) (second 235) (length 556.928162)) + (spring (first 238) (second 243) (length 59.000000)) + (spring (first 243) (second 239) (length 518.817871)) + (spring (first 330) (second 239) (length 396.243622)) + (spring (first 332) (second 333) (length 46.690472)) + (spring (first 333) (second 334) (length 76.791924)) + (spring (first 334) (second 332) (length 62.936478)) + (spring (first 338) (second 341) (length 35.057095)) + (spring (first 341) (second 342) (length 23.430750)) + (spring (first 352) (second 341) (length 21.931713)) + (spring (first 342) (second 353) (length 20.615528)) + (spring (first 353) (second 352) (length 20.518284)) + (spring (first 333) (second 353) (length 29.154760)) + (spring (first 334) (second 353) (length 51.156624)) + (spring (first 357) (second 377) (length 20.880613)) + (spring (first 357) (second 378) (length 18.788294)) + (spring (first 357) (second 379) (length 17.464249)) + (spring (first 355) (second 380) (length 17.088007)) + (spring (first 355) (second 381) (length 17.204651)) + (spring (first 355) (second 382) (length 20.024984)) + (spring (first 334) (second 383) (length 48.877399)) + (spring (first 383) (second 333) (length 36.769554)) + (spring (first 383) (second 332) (length 20.099751)) + (spring (first 383) (second 338) (length 95.754898)) + (spring (first 332) (second 231) (length 511.457092)) + (spring (first 1744) (second 332) (length 158.078949)) + (spring (first 1744) (second 1788) (length 80.056229)) + (spring (first 1788) (second 1789) (length 84.053551)) + (spring (first 1789) (second 1790) (length 128.015625)) + (spring (first 1790) (second 1791) (length 77.665955)) + (spring (first 1788) (second 1791) (length 220.020447)) + (spring (first 1788) (second 1790) (length 188.321533)) + (spring (first 1789) (second 1744) (length 141.598022)) + (spring (first 1789) (second 1791) (length 184.228119)) + (spring (first 1790) (second 1744) (length 197.994949)) + (spring (first 1791) (second 1744) (length 199.624649)) + (spring (first 1788) (second 1802) (length 123.000000)) + (spring (first 1802) (second 1803) (length 104.690018)) + (spring (first 1803) (second 1804) (length 124.020157)) + (spring (first 1804) (second 1805) (length 101.921539)) + (spring (first 1805) (second 1789) (length 102.610916)) + (spring (first 1788) (second 1805) (length 183.308487)) + (spring (first 1788) (second 1804) (length 198.841644)) + (spring (first 1788) (second 1803) (length 185.970428)) + (spring (first 1802) (second 1789) (length 173.170441)) + (spring (first 1802) (second 1805) (length 238.002106)) + (spring (first 1802) (second 1804) (length 193.775650)) + (spring (first 1803) (second 1789) (length 190.378571)) + (spring (first 1803) (second 1805) (length 206.526031)) + (spring (first 1804) (second 1789) (length 148.354309)) + (spring (first 1744) (second 1838) (length 134.003738)) + (spring (first 1838) (second 1791) (length 91.525955)) + (spring (first 1838) (second 1788) (length 184.092361)) + (spring (first 1838) (second 1789) (length 186.560989)) + (spring (first 1838) (second 1790) (length 140.174896)) + (spring (first 1803) (second 231) (length 187.684753)) + (spring (first 1790) (second 239) (length 250.179459)) + (spring (first 1802) (second 333) (length 317.153595)) + (spring (first 330) (second 332) (length 197.820618)) + (spring (first 1802) (second 231) (length 227.249985)) + (spring (first 357) (second 1931) (length 24.399214)) + (spring (first 1931) (second 341) (length 17.111425)) + (spring (first 355) (second 1932) (length 24.641851)) + (spring (first 1932) (second 341) (length 16.028154)) + (spring (first 1931) (second 338) (length 38.122566)) + (spring (first 1932) (second 338) (length 36.816174)) + (spring (first 1732) (second 1933) (length 21.023796)) + (spring (first 1933) (second 338) (length 29.071968)) + (spring (first 1787) (second 1934) (length 16.000000)) + (spring (first 1934) (second 338) (length 33.955524)) + )) + +;; EOF ;; diff --git a/examples/choh/quicksave9.construo b/examples/choh/quicksave9.construo new file mode 100644 index 0000000..341dead --- /dev/null +++ b/examples/choh/quicksave9.construo @@ -0,0 +1,176 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 53) (pos 311.000000 126.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 54) (pos 227.000000 149.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 55) (pos 156.000000 205.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 56) (pos 131.000000 271.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 57) (pos 140.000000 349.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 58) (pos 183.000000 417.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 59) (pos 251.000000 466.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 60) (pos 324.000000 480.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 61) (pos 407.000000 466.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 62) (pos 460.000000 416.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 63) (pos 494.000000 354.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 64) (pos 502.000000 288.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 65) (pos 476.000000 221.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 66) (pos 436.000000 159.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 67) (pos 379.000000 126.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 109) (pos 630.000000 181.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 110) (pos 648.000000 299.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 111) (pos 613.000000 325.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 112) (pos 651.000000 314.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 113) (pos 692.000000 322.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 114) (pos 657.000000 349.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 116) (pos 38.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 117) (pos 8.000000 304.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 118) (pos 38.000000 295.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 119) (pos 73.000000 305.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 120) (pos 40.000000 330.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 245) (pos 215.000000 84.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 246) (pos 230.000000 26.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 247) (pos 319.000000 7.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 248) (pos 398.000000 31.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 249) (pos 398.000000 91.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 583) (pos 407.000000 565.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 584) (pos 610.000000 565.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 585) (pos 590.000000 522.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 586) (pos 484.000000 488.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 731) (pos 250.000000 563.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 732) (pos 66.000000 563.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 733) (pos 81.000000 523.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 734) (pos 162.000000 497.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1010) (pos 29.000000 177.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 53) (second 54) (length 87.091904)) + (spring (first 54) (second 55) (length 90.426765)) + (spring (first 55) (second 56) (length 70.576202)) + (spring (first 56) (second 57) (length 78.517517)) + (spring (first 57) (second 58) (length 80.454956)) + (spring (first 58) (second 59) (length 83.815269)) + (spring (first 59) (second 60) (length 74.330345)) + (spring (first 60) (second 61) (length 84.172440)) + (spring (first 61) (second 62) (length 72.862885)) + (spring (first 62) (second 63) (length 70.710678)) + (spring (first 63) (second 64) (length 66.483078)) + (spring (first 64) (second 65) (length 71.867935)) + (spring (first 65) (second 66) (length 73.783470)) + (spring (first 66) (second 67) (length 65.863495)) + (spring (first 67) (second 53) (length 68.000000)) + (spring (first 53) (second 66) (length 129.282639)) + (spring (first 53) (second 65) (length 190.394333)) + (spring (first 53) (second 64) (length 250.449600)) + (spring (first 53) (second 63) (length 292.357666)) + (spring (first 53) (second 62) (length 326.038330)) + (spring (first 53) (second 61) (length 353.293091)) + (spring (first 53) (second 60) (length 354.238617)) + (spring (first 53) (second 59) (length 345.253540)) + (spring (first 53) (second 58) (length 317.907227)) + (spring (first 53) (second 57) (length 281.016022)) + (spring (first 53) (second 56) (length 231.138489)) + (spring (first 53) (second 55) (length 173.971268)) + (spring (first 60) (second 58) (length 154.434448)) + (spring (first 60) (second 57) (length 225.869431)) + (spring (first 60) (second 56) (length 284.481995)) + (spring (first 60) (second 55) (length 322.256104)) + (spring (first 60) (second 54) (length 344.920288)) + (spring (first 60) (second 67) (length 358.247131)) + (spring (first 60) (second 66) (length 339.977936)) + (spring (first 60) (second 65) (length 300.308167)) + (spring (first 60) (second 64) (length 261.816742)) + (spring (first 60) (second 63) (length 211.603409)) + (spring (first 60) (second 62) (length 150.306351)) + (spring (first 56) (second 58) (length 154.983871)) + (spring (first 56) (second 59) (length 228.965057)) + (spring (first 56) (second 60) (length 284.481995)) + (spring (first 56) (second 61) (length 337.936371)) + (spring (first 56) (second 62) (length 359.535797)) + (spring (first 56) (second 63) (length 372.368103)) + (spring (first 56) (second 64) (length 371.389282)) + (spring (first 56) (second 65) (length 348.604370)) + (spring (first 56) (second 66) (length 324.913849)) + (spring (first 56) (second 67) (length 287.278625)) + (spring (first 56) (second 53) (length 231.138489)) + (spring (first 56) (second 54) (length 155.241745)) + (spring (first 64) (second 66) (length 144.903412)) + (spring (first 64) (second 67) (length 203.403534)) + (spring (first 64) (second 54) (length 308.133087)) + (spring (first 64) (second 55) (length 355.815948)) + (spring (first 64) (second 57) (length 367.103516)) + (spring (first 64) (second 58) (length 344.095917)) + (spring (first 64) (second 59) (length 307.709290)) + (spring (first 64) (second 61) (length 201.764709)) + (spring (first 64) (second 62) (length 134.714508)) + (spring (first 65) (second 109) (length 159.110031)) + (spring (first 109) (second 64) (length 166.832245)) + (spring (first 109) (second 110) (length 119.364990)) + (spring (first 110) (second 111) (length 43.600460)) + (spring (first 110) (second 112) (length 15.297058)) + (spring (first 111) (second 112) (length 39.560081)) + (spring (first 110) (second 113) (length 49.648766)) + (spring (first 113) (second 112) (length 41.773197)) + (spring (first 112) (second 114) (length 35.510563)) + (spring (first 116) (second 117) (length 38.418747)) + (spring (first 116) (second 118) (length 15.000000)) + (spring (first 118) (second 117) (length 31.320919)) + (spring (first 118) (second 119) (length 36.400551)) + (spring (first 119) (second 116) (length 43.011627)) + (spring (first 118) (second 120) (length 35.057095)) + (spring (first 53) (second 245) (length 104.785492)) + (spring (first 245) (second 246) (length 59.908264)) + (spring (first 246) (second 247) (length 91.005493)) + (spring (first 247) (second 248) (length 82.565125)) + (spring (first 248) (second 249) (length 60.000000)) + (spring (first 249) (second 53) (length 93.776329)) + (spring (first 53) (second 248) (length 128.817703)) + (spring (first 53) (second 247) (length 119.268608)) + (spring (first 53) (second 246) (length 128.689545)) + (spring (first 245) (second 249) (length 183.133835)) + (spring (first 245) (second 248) (length 190.520340)) + (spring (first 245) (second 247) (length 129.402466)) + (spring (first 246) (second 249) (length 180.136063)) + (spring (first 246) (second 248) (length 168.074387)) + (spring (first 247) (second 249) (length 115.312622)) + (spring (first 249) (second 67) (length 39.824615)) + (spring (first 245) (second 54) (length 66.098412)) + (spring (first 246) (second 54) (length 123.036583)) + (spring (first 247) (second 54) (length 169.198105)) + (spring (first 248) (second 54) (length 207.761887)) + (spring (first 249) (second 54) (length 180.568542)) + (spring (first 67) (second 245) (length 169.292648)) + (spring (first 67) (second 246) (length 179.446365)) + (spring (first 67) (second 247) (length 133.270401)) + (spring (first 67) (second 248) (length 96.881371)) + (spring (first 61) (second 583) (length 99.000000)) + (spring (first 583) (second 584) (length 203.000000)) + (spring (first 584) (second 585) (length 47.423622)) + (spring (first 585) (second 586) (length 111.319359)) + (spring (first 586) (second 62) (length 75.894661)) + (spring (first 61) (second 586) (length 80.081207)) + (spring (first 61) (second 584) (length 225.853928)) + (spring (first 62) (second 583) (length 158.145508)) + (spring (first 586) (second 583) (length 108.894447)) + (spring (first 586) (second 584) (length 147.665161)) + (spring (first 585) (second 583) (length 187.984039)) + (spring (first 59) (second 731) (length 97.005157)) + (spring (first 731) (second 732) (length 184.000000)) + (spring (first 732) (second 733) (length 42.720020)) + (spring (first 733) (second 734) (length 85.070557)) + (spring (first 734) (second 58) (length 82.710335)) + (spring (first 59) (second 734) (length 94.244362)) + (spring (first 59) (second 732) (length 208.887527)) + (spring (first 58) (second 731) (length 160.639343)) + (spring (first 734) (second 732) (length 116.498924)) + (spring (first 734) (second 731) (length 110.000000)) + (spring (first 731) (second 733) (length 173.669220)) + (spring (first 109) (second 54) (length 404.268463)) + (spring (first 66) (second 109) (length 195.243439)) + (spring (first 1010) (second 54) (length 199.970001)) + (spring (first 1010) (second 66) (length 407.397827)) + (spring (first 1010) (second 116) (length 103.392456)) + (spring (first 1010) (second 55) (length 130.049988)) + (spring (first 1010) (second 56) (length 138.708328)) + )) + +;; EOF ;; diff --git a/examples/choh2/quicksave1.construo b/examples/choh2/quicksave1.construo new file mode 100644 index 0000000..0884cd6 --- /dev/null +++ b/examples/choh2/quicksave1.construo @@ -0,0 +1,505 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 1) (pos 585.000000 560.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos 569.000000 567.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 561.000000 580.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 570.000000 594.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 589.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 606.000000 589.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 609.000000 574.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 600.000000 562.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 588.000000 580.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos 685.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos 670.000000 593.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 660.000000 581.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos 663.000000 566.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 678.000000 558.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos 698.000000 563.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 17) (pos 708.000000 577.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 702.000000 592.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos 684.000000 579.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos 570.000000 544.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 603.000000 544.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 666.000000 545.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos 694.000000 544.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 720.000000 542.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 25) (pos 541.000000 542.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 541.000000 517.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos 569.000000 517.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 602.000000 518.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos 666.000000 519.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 35) (pos 693.000000 519.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos 719.000000 519.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos 2.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos 1.000000 68.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 40) (pos 232.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 41) (pos 49.000000 549.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 43) (pos 78.000000 133.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 44) (pos 111.000000 160.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 45) (pos 151.000000 191.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 46) (pos 195.000000 228.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 47) (pos 238.000000 264.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 48) (pos 279.000000 298.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 49) (pos 322.000000 334.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 50) (pos 362.000000 371.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 51) (pos 401.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 52) (pos 439.000000 443.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 53) (pos 475.000000 480.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 183) (pos 511.000000 518.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 186) (pos 743.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 188) (pos 799.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 386) (pos 149.000000 247.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 387) (pos 123.000000 281.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 388) (pos 141.000000 330.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 389) (pos 185.000000 345.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 390) (pos 223.000000 310.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 607) (pos 220.000000 380.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 608) (pos 258.000000 327.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 671) (pos 29.000000 112.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 672) (pos 71.000000 152.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 673) (pos 96.000000 182.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 674) (pos 130.000000 215.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 682) (pos 216.000000 422.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 683) (pos 265.000000 394.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1644) (pos 225.000000 213.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1645) (pos 206.000000 204.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1646) (pos 173.000000 228.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1647) (pos 182.000000 216.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1648) (pos 239.000000 241.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1649) (pos 253.000000 255.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1650) (pos 258.000000 271.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1651) (pos 239.000000 171.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1652) (pos 224.000000 163.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1653) (pos 255.000000 177.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1654) (pos 201.000000 179.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1655) (pos 175.000000 165.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1656) (pos 179.000000 149.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1657) (pos 162.000000 154.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1658) (pos 160.000000 169.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1659) (pos 276.000000 200.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1660) (pos 307.000000 199.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1661) (pos 317.000000 187.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1662) (pos 325.000000 200.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1663) (pos 318.000000 214.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1664) (pos 268.000000 150.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1665) (pos 257.000000 133.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1666) (pos 237.000000 143.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2556) (pos 39.000000 532.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2581) (pos 51.000000 93.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2862) (pos 587.000000 503.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2863) (pos 677.000000 505.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2864) (pos 630.000000 456.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2865) (pos 630.000000 411.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2866) (pos 612.000000 410.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2867) (pos 578.000000 441.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2868) (pos 577.000000 456.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2869) (pos 564.000000 448.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2870) (pos 564.000000 433.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2871) (pos 647.000000 412.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2872) (pos 676.000000 444.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2873) (pos 691.000000 442.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2874) (pos 688.000000 457.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2875) (pos 673.000000 459.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2876) (pos 645.000000 374.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2877) (pos 631.000000 359.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2878) (pos 614.000000 375.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6163) (pos 183.000000 387.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6489) (pos 799.000000 77.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 1) (second 2) (length 17.464249) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2) (second 3) (length 15.264338) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 3) (second 4) (length 16.643316) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 5) (length 19.646883) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 6) (length 19.723083) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 7) (length 15.297058) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 7) (second 8) (length 15.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 8) (second 1) (length 15.132746) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 8) (length 21.633308) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 7) (length 21.840330) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 6) (length 20.124611) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 5) (length 19.026299) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 4) (length 22.803509) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 3) (length 27.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 2) (length 23.021729) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 1) (length 20.223749) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 12) (length 16.155495) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 13) (length 15.620500) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 14) (length 15.297058) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 15) (length 17.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 16) (length 20.615528) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 17) (length 17.204651) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 18) (length 16.155495) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 11) (length 18.384777) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 16) (length 21.260292) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 17) (length 24.083189) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 18) (length 22.203604) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 11) (length 20.024984) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 12) (length 19.798990) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 13) (length 24.083189) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 14) (length 24.698177) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 15) (length 21.840330) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 20) (length 40.249222) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 21) (length 39.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 22) (length 38.470768) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 23) (length 36.400551) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 24) (second 23) (length 26.076809) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 23) (second 22) (length 28.017851) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 22) (second 21) (length 63.007935) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 21) (second 20) (length 33.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 20) (second 25) (length 29.068884) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 25) (second 26) (length 25.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 26) (second 28) (length 28.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 28) (second 29) (length 33.015148) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 28) (second 20) (length 27.018513) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 29) (second 21) (length 26.019224) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 29) (second 31) (length 64.007812) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 31) (second 22) (length 26.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 31) (second 35) (length 27.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 35) (second 23) (length 25.019993) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 35) (second 36) (length 26.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 36) (second 24) (length 23.021729) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 26) (second 20) (length 39.623226) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 25) (second 28) (length 37.536648) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 21) (second 28) (length 43.416588) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 20) (second 29) (length 41.231056) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 21) (second 31) (length 67.779053) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 29) (second 22) (length 69.462219) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 22) (second 35) (length 37.483330) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 31) (second 23) (length 37.536648) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 23) (second 36) (length 35.355339) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 35) (second 24) (length 35.468296) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 37) (second 38) (length 531.000916) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 38) (second 40) (length 579.069946) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 40) (second 37) (length 230.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 37) (second 41) (length 68.622154) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 41) (second 38) (length 483.389069) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 40) (second 41) (length 189.707672) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 43) (second 44) (length 42.638012) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 44) (second 45) (length 50.606323) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 45) (second 46) (length 57.489128) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 46) (second 47) (length 56.080299) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 47) (second 48) (length 53.263496) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 48) (second 49) (length 56.080299) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 49) (second 50) (length 54.488529) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 50) (second 51) (length 49.819675) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 51) (second 52) (length 55.901699) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 52) (second 53) (length 51.623638) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 53) (second 183) (length 52.345009) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 183) (second 25) (length 38.418747) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 188) (second 186) (length 56.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 6) (length 36.345562) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 2) (length 27.018513) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2) (second 8) (length 31.400637) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 8) (second 6) (length 27.658634) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 18) (length 32.015621) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 16) (length 29.274563) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 14) (length 35.128338) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 12) (length 27.892651) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 1) (length 37.161808) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 8) (length 43.863426) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 7) (length 43.829212) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 3) (length 33.837849) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 2) (length 37.735924) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 1) (length 39.204590) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 8) (length 38.600517) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 7) (length 32.015621) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 4) (length 36.345562) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 3) (length 45.891174) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 2) (length 43.046486) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 1) (length 35.805027) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 8) (length 27.658634) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 7) (second 1) (length 27.784887) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 7) (second 2) (length 40.607880) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 7) (second 3) (length 48.373547) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 7) (second 4) (length 43.829212) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 7) (second 5) (length 32.015621) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 8) (second 2) (length 31.400637) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 8) (second 3) (length 42.953465) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 8) (second 4) (length 43.863426) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 8) (second 5) (length 38.600517) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 8) (second 5) (length 38.600517) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 8) (second 6) (length 27.658634) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1) (second 7) (length 27.784887) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1) (second 6) (length 35.805027) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1) (second 5) (length 39.204590) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1) (second 4) (length 37.161808) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1) (second 3) (length 31.240999) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2) (second 8) (length 31.400637) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2) (second 7) (length 40.607880) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2) (second 6) (length 43.046486) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2) (second 5) (length 37.735924) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2) (second 4) (length 27.018513) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 3) (second 1) (length 31.240999) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 3) (second 8) (length 42.953465) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 3) (second 7) (length 48.373547) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 3) (second 6) (length 45.891174) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 3) (second 5) (length 33.837849) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 2) (length 27.018513) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 1) (length 37.161808) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 8) (length 43.863426) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 7) (length 43.829212) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 4) (second 6) (length 36.345562) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 3) (length 33.837849) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 2) (length 37.735924) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 1) (length 39.204590) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 8) (length 38.600517) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 5) (second 7) (length 32.015621) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 4) (length 36.345562) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 3) (length 45.891174) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 2) (length 43.046486) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 1) (length 35.805027) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6) (second 8) (length 27.658634) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 17) (length 46.324940) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 18) (length 46.872166) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 18) (length 46.872166) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 11) (length 39.661064) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 12) (length 27.892651) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 15) (length 29.206163) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 16) (length 42.047592) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 17) (length 48.166378) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 18) (length 43.416588) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 11) (length 30.805843) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 14) (length 27.892651) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 15) (length 35.902645) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 16) (length 41.036568) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 17) (length 41.231056) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 18) (length 32.015621) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 13) (length 30.805843) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 14) (length 39.661064) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 15) (length 41.593269) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 16) (length 38.275318) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 17) (length 31.827662) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 12) (length 32.015621) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 13) (length 43.416588) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 14) (length 46.872166) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 15) (length 41.617306) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 16) (length 29.274563) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 11) (length 31.827662) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 12) (length 41.231056) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 13) (length 48.166378) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 14) (length 46.324940) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 15) (length 35.510563) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 18) (length 29.274563) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 11) (length 38.275318) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 12) (length 41.036568) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 13) (length 42.047592) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 14) (length 35.128338) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 17) (length 35.510563) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 18) (length 41.617306) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 11) (length 41.593269) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 12) (length 35.902645) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 13) (length 29.206163) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 16) (length 35.128338) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 17) (length 46.324940) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 18) (length 46.872166) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 11) (length 39.661064) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 12) (length 27.892651) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 15) (length 29.206163) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 16) (length 42.047592) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 16) (length 42.047592) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 17) (length 48.166378) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 18) (length 43.416588) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 13) (second 11) (length 30.805843) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 14) (length 27.892651) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 15) (length 35.902645) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 16) (length 41.036568) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 17) (length 41.231056) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 12) (second 18) (length 32.015621) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 13) (length 30.805843) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 14) (length 39.661064) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 15) (length 41.593269) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 16) (length 38.275318) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 11) (second 17) (length 31.827662) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 12) (length 32.015621) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 13) (length 43.416588) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 14) (length 46.872166) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 15) (length 41.617306) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 18) (second 16) (length 29.274563) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 11) (length 31.827662) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 12) (length 41.231056) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 13) (length 48.166378) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 14) (length 46.324940) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 17) (second 15) (length 35.510563) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 18) (length 29.274563) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 11) (length 38.275318) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 12) (length 41.036568) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 13) (length 42.047592) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 16) (second 14) (length 35.128338) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 17) (length 35.510563) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 18) (length 41.617306) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 11) (length 41.593269) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 18) (length 41.617306) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 18) (length 41.617306) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 12) (length 35.902645) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 13) (length 29.206163) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 15) (second 14) (length 17.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 16) (length 35.128338) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 17) (length 46.324940) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 18) (length 46.872166) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 18) (length 46.872166) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 18) (length 46.872166) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 11) (length 39.661064) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 14) (second 12) (length 27.892651) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 46) (second 386) (length 49.769470) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 386) (second 387) (length 42.801868) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 387) (second 388) (length 52.201534) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 388) (second 389) (length 46.486557) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 389) (second 390) (length 51.662365) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 390) (second 47) (length 48.383881) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 390) (second 48) (length 57.271286) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 386) (second 45) (length 56.035702) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 387) (second 46) (length 89.403580) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 47) (second 389) (length 96.798759) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 389) (second 387) (length 89.106674) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 47) (second 388) (length 117.324333) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 47) (second 387) (length 116.249733) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 47) (second 386) (length 90.609047) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 390) (second 46) (length 86.648720) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 390) (second 386) (length 97.185387) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 390) (second 387) (length 104.120125) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 390) (second 388) (length 84.403793) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 389) (second 46) (length 117.426575) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 389) (second 386) (length 104.403069) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 388) (second 46) (length 115.412308) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 388) (second 386) (length 83.384651) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 28) (second 9) (length 65.802734) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 29) (second 9) (length 63.560993) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 31) (length 62.641838) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 35) (second 19) (length 60.671246) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 29) (second 28) (length 33.015148) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 607) (second 608) (length 65.215027) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 608) (second 47) (length 66.098412) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 390) (second 608) (length 38.910152) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 389) (second 607) (length 49.497475) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 607) (second 390) (length 70.064255) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 608) (second 389) (length 75.186432) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 38) (second 671) (length 52.153618) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 671) (second 672) (length 58.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 672) (second 673) (length 39.051247) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 673) (second 674) (length 47.381432) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 674) (second 386) (length 37.215588) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 682) (second 607) (length 42.190044) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 682) (second 683) (length 56.435802) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 683) (second 608) (length 67.364677) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 607) (second 683) (length 47.127487) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 608) (second 49) (length 64.381676) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 683) (second 49) (length 82.758682) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 683) (second 50) (length 99.689522) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 26) (second 183) (length 30.016663) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 26) (second 53) (length 75.663727) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 26) (second 52) (length 126.015869) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 26) (second 51) (length 181.176712) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 26) (second 50) (length 230.991348) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 31) (second 9) (length 99.020203) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 29) (second 19) (length 102.200783) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 25) (second 9) (length 60.440052) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 24) (second 19) (length 51.623638) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 672) (second 43) (length 20.248457) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 673) (second 44) (length 26.627054) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 674) (second 45) (length 31.890438) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1644) (second 1645) (length 21.023796) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1645) (second 46) (length 26.400757) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 46) (second 1646) (length 22.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1646) (second 1647) (length 15.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1647) (second 46) (length 17.691807) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1644) (second 1648) (length 31.304953) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1648) (second 47) (length 23.021729) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 47) (second 1649) (length 17.492855) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1649) (second 1650) (length 16.763054) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1650) (second 47) (length 21.189621) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1644) (second 1651) (length 44.271889) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1651) (second 1652) (length 17.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1651) (second 1653) (length 17.088007) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1653) (second 1644) (length 46.861500) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1652) (second 1644) (length 50.009998) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1652) (second 1654) (length 28.017851) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1654) (second 1655) (length 29.529646) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1655) (second 1656) (length 16.492422) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1655) (second 1657) (length 17.029387) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1655) (second 1658) (length 15.524175) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1653) (second 1659) (length 31.144823) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1659) (second 1660) (length 31.016125) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1660) (second 1661) (length 15.620500) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1660) (second 1662) (length 18.027756) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1660) (second 1663) (length 18.601076) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1652) (second 1664) (length 45.880280) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1664) (second 1665) (length 20.248457) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1665) (second 1666) (length 22.360680) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1666) (second 1653) (length 38.470768) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1651) (second 1665) (length 42.047592) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1666) (second 1664) (length 31.780497) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1648) (second 47) (length 23.021729) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 47) (second 46) (length 56.080299) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 1650) (second 1646) (length 95.257545) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 671) (second 43) (length 53.310413) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 672) (second 44) (length 40.792156) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 43) (second 673) (length 52.201534) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 673) (second 45) (length 55.731499) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 44) (second 674) (length 58.189346) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 674) (second 46) (length 66.287254) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 37) (second 671) (length 487.747894) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 41) (second 671) (length 437.457428) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 37) (second 2556) (length 76.537575) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2556) (second 38) (length 465.553436) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 38) (second 2581) (length 55.901699) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2581) (second 43) (length 48.259712) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 671) (second 2581) (length 29.068884) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 43) (second 38) (length 100.767059) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 28) (second 2862) (length 22.803509) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2862) (second 29) (length 21.213203) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 31) (second 2863) (length 17.804493) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2863) (second 35) (length 21.260292) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 28) (second 29) (length 33.015148) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 31) (second 35) (length 27.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2862) (second 2864) (length 63.702435) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2864) (second 2863) (length 67.896980) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2864) (second 2865) (length 45.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2865) (second 2866) (length 18.027756) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2866) (second 2867) (length 46.010868) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2867) (second 2868) (length 15.033297) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2867) (second 2869) (length 15.652476) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2867) (second 2870) (length 16.124516) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2865) (second 2871) (length 17.029387) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2871) (second 2872) (length 43.185646) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2872) (second 2873) (length 15.132746) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2872) (second 2874) (length 17.691807) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2872) (second 2875) (length 15.297058) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2866) (second 2864) (length 49.396355) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2871) (second 2864) (length 47.169907) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2866) (second 2876) (length 48.836460) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2876) (second 2877) (length 20.518284) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2877) (second 2878) (length 23.345236) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2878) (second 2871) (length 49.578220) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2865) (second 2877) (length 52.009613) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2878) (second 2876) (length 31.016125) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 672) (second 2581) (length 62.297672) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 672) (second 38) (length 109.343498) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 387) (second 673) (length 102.615791) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 387) (second 674) (length 66.370171) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 386) (second 673) (length 83.868942) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2865) (second 2862) (length 101.552940) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2865) (second 2863) (length 105.095192) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2865) (second 29) (length 110.602890) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2865) (second 31) (length 113.841995) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 36) (length 144.506058) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 26) (length 155.862122) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2876) (second 2865) (length 39.924931) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 2878) (second 2865) (length 39.395432) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 682) (second 6163) (length 48.104053) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6163) (second 389) (length 42.047592) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6163) (second 607) (length 37.656342) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6163) (second 388) (length 70.802544) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 387) (second 672) (length 139.086304) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 387) (second 671) (length 193.383041) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 9) (second 26) (length 78.600258) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 19) (second 36) (length 69.462219) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 6489) (second 186) (length 524.995239) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 188) (second 6489) (length 522.000000) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 38) (second 6489) (length 798.050720) (maxstretch 0.10) (stiffness 100.0)) + (spring (first 36) (second 6489) (length 449.181488) (maxstretch 0.10) (stiffness 100.0)) +)) + + +;; EOF ;; diff --git a/examples/choh2/quicksave2.construo b/examples/choh2/quicksave2.construo new file mode 100644 index 0000000..51f446e --- /dev/null +++ b/examples/choh2/quicksave2.construo @@ -0,0 +1,310 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 1) (pos 191.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 440.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 323.000000 448.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 317.000000 553.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 253.000000 446.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 387.000000 450.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 454.000000 452.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 519.000000 454.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos 189.000000 444.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos 128.000000 442.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 252.000000 415.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos 322.000000 417.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos 387.000000 419.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 454.000000 421.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos 113.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 517.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 51) (pos 252.000000 380.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 52) (pos 321.000000 382.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 53) (pos 386.000000 384.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 55) (pos 454.000000 386.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 56) (pos 432.000000 377.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 60) (pos 510.000000 345.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 99) (pos 462.000000 373.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 100) (pos 525.000000 409.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 113) (pos 521.000000 287.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 114) (pos 504.000000 283.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 115) (pos 454.000000 300.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 116) (pos 438.000000 292.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 117) (pos 438.000000 307.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 118) (pos 450.000000 318.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 119) (pos 540.000000 293.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 120) (pos 578.000000 338.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 121) (pos 569.000000 351.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 122) (pos 585.000000 352.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 123) (pos 595.000000 340.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 124) (pos 550.000000 260.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 125) (pos 537.000000 240.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 126) (pos 516.000000 250.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 189) (pos 61.000000 387.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 190) (pos 20.000000 289.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 191) (pos 17.000000 203.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 192) (pos 53.000000 116.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 193) (pos 123.000000 78.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 194) (pos 203.000000 90.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 195) (pos 257.000000 135.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 196) (pos 271.000000 218.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 197) (pos 264.000000 299.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 198) (pos 240.000000 350.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1862) (pos 153.000000 381.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2055) (pos 10.000000 437.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2056) (pos 13.000000 384.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2253) (pos 386.000000 344.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2254) (pos 321.000000 342.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2255) (pos 251.000000 338.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2417) (pos 276.000000 59.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2418) (pos 341.000000 101.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2419) (pos 356.000000 194.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2420) (pos 336.000000 277.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2606) (pos 455.000000 488.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2607) (pos 520.000000 490.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12327) (pos 374.000000 79.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12328) (pos 420.000000 156.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12329) (pos 407.000000 276.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12567) (pos 519.000000 424.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12642) (pos 535.000000 435.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 3) (second 1) (length 249.000000)) + (spring (first 1) (second 5) (length 200.561707)) + (spring (first 5) (second 3) (length 191.023560)) + (spring (first 1) (second 6) (length 134.134262)) + (spring (first 6) (second 5) (length 105.171288)) + (spring (first 6) (second 3) (length 131.320221)) + (spring (first 7) (second 5) (length 70.028564)) + (spring (first 5) (second 8) (length 64.031242)) + (spring (first 8) (second 9) (length 67.029846)) + (spring (first 9) (second 10) (length 65.030762)) + (spring (first 7) (second 11) (length 64.031242)) + (spring (first 11) (second 12) (length 61.032780)) + (spring (first 18) (second 7) (length 31.016125)) + (spring (first 18) (second 19) (length 70.028564)) + (spring (first 19) (second 5) (length 31.016125)) + (spring (first 19) (second 20) (length 65.030762)) + (spring (first 20) (second 8) (length 31.000000)) + (spring (first 20) (second 21) (length 67.029846)) + (spring (first 21) (second 9) (length 31.000000)) + (spring (first 11) (second 18) (length 69.354164)) + (spring (first 7) (second 19) (length 74.846512)) + (spring (first 18) (second 5) (length 78.294319)) + (spring (first 5) (second 20) (length 70.263786)) + (spring (first 19) (second 8) (length 72.897186)) + (spring (first 8) (second 21) (length 73.006851)) + (spring (first 20) (second 9) (length 74.686012)) + (spring (first 21) (second 10) (length 72.897186)) + (spring (first 12) (second 18) (length 126.905479)) + (spring (first 7) (second 20) (length 136.693085)) + (spring (first 18) (second 8) (length 139.463257)) + (spring (first 11) (second 19) (length 135.712936)) + (spring (first 5) (second 21) (length 133.753510)) + (spring (first 19) (second 9) (length 136.561340)) + (spring (first 20) (second 10) (length 136.561340)) + (spring (first 23) (second 5) (length 258.652283)) + (spring (first 23) (second 1) (length 78.000000)) + (spring (first 3) (second 24) (length 77.006493)) + (spring (first 24) (second 5) (length 245.226425)) + (spring (first 23) (second 6) (length 209.121979)) + (spring (first 6) (second 24) (length 205.000000)) + (spring (first 51) (second 18) (length 35.000000)) + (spring (first 51) (second 52) (length 69.028976)) + (spring (first 52) (second 53) (length 65.030762)) + (spring (first 53) (second 55) (length 68.029404)) + (spring (first 55) (second 21) (length 35.000000)) + (spring (first 53) (second 20) (length 35.014282)) + (spring (first 52) (second 19) (length 35.014282)) + (spring (first 18) (second 52) (length 76.485291)) + (spring (first 51) (second 19) (length 79.177017)) + (spring (first 19) (second 53) (length 72.006943)) + (spring (first 52) (second 20) (length 75.663727)) + (spring (first 20) (second 55) (length 74.686012)) + (spring (first 53) (second 21) (length 77.414467)) + (spring (first 51) (second 20) (length 140.520462)) + (spring (first 18) (second 53) (length 137.539078)) + (spring (first 52) (second 21) (length 138.600143)) + (spring (first 19) (second 55) (length 135.591293)) + (spring (first 55) (second 56) (length 23.769728)) + (spring (first 56) (second 99) (length 30.265491)) + (spring (first 99) (second 55) (length 15.264338)) + (spring (first 99) (second 60) (length 55.569775)) + (spring (first 100) (second 60) (length 65.734314)) + (spring (first 60) (second 113) (length 59.033890)) + (spring (first 113) (second 114) (length 17.464249)) + (spring (first 114) (second 115) (length 52.810986)) + (spring (first 115) (second 116) (length 17.888544)) + (spring (first 115) (second 117) (length 17.464249)) + (spring (first 115) (second 118) (length 18.439089)) + (spring (first 113) (second 119) (length 19.924858)) + (spring (first 119) (second 120) (length 58.898216)) + (spring (first 120) (second 121) (length 15.811388)) + (spring (first 120) (second 122) (length 15.652476)) + (spring (first 120) (second 123) (length 17.117243)) + (spring (first 114) (second 60) (length 62.289646)) + (spring (first 119) (second 60) (length 60.033325)) + (spring (first 114) (second 124) (length 51.429562)) + (spring (first 124) (second 125) (length 23.853722)) + (spring (first 125) (second 126) (length 23.259407)) + (spring (first 126) (second 119) (length 49.244289)) + (spring (first 113) (second 125) (length 49.648766)) + (spring (first 126) (second 124) (length 35.440090)) + (spring (first 189) (second 190) (length 106.230881)) + (spring (first 190) (second 191) (length 86.052307)) + (spring (first 191) (second 192) (length 94.154129)) + (spring (first 192) (second 193) (length 79.649231)) + (spring (first 193) (second 194) (length 80.894997)) + (spring (first 194) (second 195) (length 70.292244)) + (spring (first 195) (second 196) (length 84.172440)) + (spring (first 196) (second 197) (length 81.301903)) + (spring (first 197) (second 198) (length 56.364883)) + (spring (first 198) (second 51) (length 32.310989)) + (spring (first 189) (second 198) (length 182.784027)) + (spring (first 189) (second 197) (length 221.253250)) + (spring (first 189) (second 196) (length 269.557037)) + (spring (first 189) (second 195) (length 319.249115)) + (spring (first 189) (second 194) (length 329.200562)) + (spring (first 189) (second 193) (length 315.158691)) + (spring (first 189) (second 192) (length 271.118042)) + (spring (first 189) (second 191) (length 189.187744)) + (spring (first 190) (second 198) (length 228.300247)) + (spring (first 190) (second 197) (length 244.204834)) + (spring (first 190) (second 196) (length 260.848602)) + (spring (first 190) (second 195) (length 282.639343)) + (spring (first 190) (second 194) (length 270.351624)) + (spring (first 190) (second 193) (length 234.797791)) + (spring (first 190) (second 192) (length 176.119278)) + (spring (first 191) (second 189) (length 189.187744)) + (spring (first 191) (second 198) (length 267.091736)) + (spring (first 191) (second 197) (length 265.000000)) + (spring (first 191) (second 196) (length 254.442535)) + (spring (first 191) (second 195) (length 249.447388)) + (spring (first 191) (second 194) (length 217.635010)) + (spring (first 191) (second 193) (length 163.893265)) + (spring (first 192) (second 198) (length 299.541321)) + (spring (first 192) (second 197) (length 279.302704)) + (spring (first 192) (second 196) (length 240.682358)) + (spring (first 192) (second 195) (length 204.882889)) + (spring (first 192) (second 194) (length 152.236664)) + (spring (first 193) (second 198) (length 296.096283)) + (spring (first 193) (second 197) (length 262.148804)) + (spring (first 193) (second 196) (length 203.725311)) + (spring (first 193) (second 195) (length 145.619370)) + (spring (first 194) (second 198) (length 262.619507)) + (spring (first 194) (second 197) (length 217.720001)) + (spring (first 194) (second 196) (length 144.941360)) + (spring (first 195) (second 198) (length 215.671051)) + (spring (first 195) (second 197) (length 164.149323)) + (spring (first 196) (second 198) (length 135.591293)) + (spring (first 119) (second 99) (length 111.731819)) + (spring (first 114) (second 100) (length 127.738014)) + (spring (first 6) (second 19) (length 136.091873)) + (spring (first 6) (second 52) (length 171.046783)) + (spring (first 5) (second 52) (length 66.030296)) + (spring (first 197) (second 51) (length 81.884064)) + (spring (first 51) (second 189) (length 191.128235)) + (spring (first 12) (second 51) (length 138.636215)) + (spring (first 11) (second 51) (length 89.805344)) + (spring (first 18) (second 12) (length 126.905479)) + (spring (first 12) (second 189) (length 86.683334)) + (spring (first 12) (second 198) (length 144.941360)) + (spring (first 189) (second 198) (length 182.784027)) + (spring (first 198) (second 1862) (length 92.358002)) + (spring (first 1862) (second 189) (length 92.195442)) + (spring (first 1862) (second 197) (length 138.003616)) + (spring (first 1862) (second 196) (length 201.228729)) + (spring (first 1862) (second 195) (length 267.080505)) + (spring (first 1862) (second 194) (length 295.264282)) + (spring (first 1862) (second 193) (length 304.481537)) + (spring (first 1862) (second 192) (length 283.240173)) + (spring (first 1862) (second 191) (length 224.008926)) + (spring (first 1862) (second 190) (length 161.718887)) + (spring (first 12) (second 2055) (length 118.105888)) + (spring (first 2055) (second 2056) (length 53.084839)) + (spring (first 2056) (second 189) (length 48.093658)) + (spring (first 2056) (second 12) (length 128.798294)) + (spring (first 2055) (second 189) (length 71.421288)) + (spring (first 2055) (second 51) (length 248.622208)) + (spring (first 11) (second 2056) (length 185.946228)) + (spring (first 3) (second 19) (length 216.905502)) + (spring (first 1) (second 19) (length 224.243164)) + (spring (first 52) (second 1) (length 252.960464)) + (spring (first 3) (second 52) (length 247.487381)) + (spring (first 55) (second 2253) (length 79.924965)) + (spring (first 2253) (second 2254) (length 65.030762)) + (spring (first 2254) (second 2255) (length 70.114189)) + (spring (first 2255) (second 51) (length 42.011902)) + (spring (first 2255) (second 12) (length 161.074524)) + (spring (first 2255) (second 11) (length 122.800652)) + (spring (first 2254) (second 52) (length 40.000000)) + (spring (first 2253) (second 53) (length 40.000000)) + (spring (first 52) (second 2253) (length 75.292763)) + (spring (first 2254) (second 53) (length 77.388626)) + (spring (first 2254) (second 51) (length 78.771820)) + (spring (first 52) (second 2255) (length 82.680107)) + (spring (first 51) (second 2253) (length 138.751572)) + (spring (first 2255) (second 53) (length 142.621872)) + (spring (first 55) (second 2254) (length 140.089264)) + (spring (first 55) (second 198) (length 217.006912)) + (spring (first 55) (second 2255) (length 208.597702)) + (spring (first 193) (second 2417) (length 154.175232)) + (spring (first 2417) (second 2418) (length 77.388626)) + (spring (first 2418) (second 2419) (length 94.201912)) + (spring (first 2419) (second 2420) (length 85.375641)) + (spring (first 2420) (second 2254) (length 66.708321)) + (spring (first 197) (second 2420) (length 75.286118)) + (spring (first 196) (second 2419) (length 88.323273)) + (spring (first 195) (second 2418) (length 90.620087)) + (spring (first 194) (second 2417) (length 79.309517)) + (spring (first 195) (second 2417) (length 78.339005)) + (spring (first 194) (second 2418) (length 138.437714)) + (spring (first 195) (second 2419) (length 115.247559)) + (spring (first 196) (second 2418) (length 136.341476)) + (spring (first 196) (second 2420) (length 87.783829)) + (spring (first 197) (second 2419) (length 139.603012)) + (spring (first 2254) (second 197) (length 71.400284)) + (spring (first 2255) (second 2420) (length 104.623131)) + (spring (first 8) (second 2606) (length 77.897369)) + (spring (first 2606) (second 2607) (length 65.030762)) + (spring (first 2607) (second 10) (length 36.013885)) + (spring (first 2606) (second 9) (length 36.013885)) + (spring (first 2606) (second 10) (length 72.470680)) + (spring (first 2607) (second 9) (length 76.157730)) + (spring (first 2607) (second 8) (length 138.884842)) + (spring (first 99) (second 53) (length 76.791924)) + (spring (first 125) (second 60) (length 108.415863)) + (spring (first 125) (second 100) (length 169.425507)) + (spring (first 125) (second 99) (length 152.689224)) + (spring (first 2417) (second 12327) (length 100.019997)) + (spring (first 12327) (second 12328) (length 89.693924)) + (spring (first 12328) (second 12329) (length 120.702110)) + (spring (first 12329) (second 2253) (length 71.168816)) + (spring (first 2420) (second 12329) (length 71.007042)) + (spring (first 2419) (second 12328) (length 74.431175)) + (spring (first 2418) (second 12327) (length 39.661064)) + (spring (first 2418) (second 12328) (length 96.260063)) + (spring (first 2419) (second 12327) (length 116.400169)) + (spring (first 2419) (second 12329) (length 96.566040)) + (spring (first 2420) (second 12328) (length 147.299011)) + (spring (first 2420) (second 2253) (length 83.600243)) + (spring (first 12329) (second 2254) (length 108.406639)) + (spring (first 2417) (second 12328) (length 173.623154)) + (spring (first 2420) (second 12327) (length 201.613495)) + (spring (first 2418) (second 12329) (length 187.032089)) + (spring (first 12328) (second 2254) (length 210.705963)) + (spring (first 2253) (second 2419) (length 152.970581)) + (spring (first 10) (second 12567) (length 30.000000)) + (spring (first 12567) (second 55) (length 75.292763)) + (spring (first 21) (second 12567) (length 65.069191)) + (spring (first 9) (second 12567) (length 70.774292)) + (spring (first 8) (second 12567) (length 134.536240)) + (spring (first 53) (second 12567) (length 138.884842)) + (spring (first 100) (second 12567) (length 16.155495)) + (spring (first 12567) (second 12642) (length 19.416489)) + (spring (first 12642) (second 100) (length 27.856777)) + (spring (first 12642) (second 60) (length 93.407707)) + (spring (first 119) (second 125) (length 53.084839)) + (spring (first 114) (second 125) (length 54.203320)) + )) + +;; EOF ;; diff --git a/examples/choh2/quicksave3.construo b/examples/choh2/quicksave3.construo new file mode 100644 index 0000000..49c8eae --- /dev/null +++ b/examples/choh2/quicksave3.construo @@ -0,0 +1,288 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 3) (pos 332.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 354.000000 535.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 333.000000 471.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 359.000000 409.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 336.000000 337.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 359.000000 262.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 336.000000 182.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 415.000000 181.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos 439.000000 262.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos 413.000000 340.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 435.000000 411.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos 409.000000 476.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 431.000000 534.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos 408.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 25) (pos 307.000000 532.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 297.000000 406.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27) (pos 292.000000 259.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos 376.000000 136.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos 436.000000 179.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos 316.000000 178.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos 415.000000 166.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 39) (pos 336.000000 167.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 40) (pos 377.000000 72.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 41) (pos 353.000000 72.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 42) (pos 318.000000 82.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 43) (pos 297.000000 114.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 44) (pos 304.000000 132.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 45) (pos 286.000000 128.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 46) (pos 278.000000 114.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 47) (pos 403.000000 72.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 48) (pos 437.000000 85.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 49) (pos 462.000000 119.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 50) (pos 452.000000 132.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 51) (pos 468.000000 134.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 52) (pos 480.000000 125.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 437) (pos 398.000000 44.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 438) (pos 380.000000 27.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 439) (pos 356.000000 43.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1050) (pos 545.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1053) (pos 188.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1054) (pos 1.000000 79.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1055) (pos 2.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1056) (pos 56.000000 545.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1057) (pos 798.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1058) (pos 799.000000 85.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1059) (pos 739.000000 542.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1060) (pos 122.000000 50.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1061) (pos 150.000000 29.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1062) (pos 177.000000 30.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1063) (pos 208.000000 52.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1065) (pos 207.000000 79.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1066) (pos 181.000000 100.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1067) (pos 148.000000 100.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1068) (pos 127.000000 78.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1069) (pos 580.000000 54.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1070) (pos 610.000000 38.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1071) (pos 649.000000 43.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1072) (pos 670.000000 61.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1073) (pos 663.000000 94.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1075) (pos 610.000000 99.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1076) (pos 587.000000 75.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1077) (pos 635.000000 103.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1256) (pos 106.000000 91.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1257) (pos 86.000000 115.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1258) (pos 64.000000 119.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1259) (pos 45.000000 102.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1260) (pos 42.000000 83.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1261) (pos 23.000000 84.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1262) (pos 209.000000 98.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1263) (pos 212.000000 120.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1264) (pos 224.000000 142.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1275) (pos 536.000000 153.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1276) (pos 562.000000 122.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1277) (pos 675.000000 113.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1278) (pos 694.000000 131.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1279) (pos 715.000000 130.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1280) (pos 721.000000 109.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1281) (pos 730.000000 81.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1282) (pos 749.000000 92.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1283) (pos 755.000000 112.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1284) (pos 774.000000 95.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3716) (pos 271.000000 142.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4660) (pos 496.000000 154.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7285) (pos 263.000000 183.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7286) (pos 492.000000 182.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 3) (second 4) (length 67.675697)) + (spring (first 4) (second 5) (length 67.357254)) + (spring (first 5) (second 6) (length 67.230942)) + (spring (first 6) (second 7) (length 75.584389)) + (spring (first 7) (second 8) (length 78.447433)) + (spring (first 8) (second 9) (length 83.240616)) + (spring (first 9) (second 10) (length 79.006332)) + (spring (first 10) (second 11) (length 84.480766)) + (spring (first 11) (second 12) (length 82.219215)) + (spring (first 12) (second 13) (length 74.330345)) + (spring (first 13) (second 14) (length 70.007141)) + (spring (first 14) (second 15) (length 62.032249)) + (spring (first 15) (second 16) (length 68.007355)) + (spring (first 16) (second 3) (length 76.006577)) + (spring (first 4) (second 15) (length 77.006493)) + (spring (first 14) (second 5) (length 76.164299)) + (spring (first 6) (second 13) (length 76.026314)) + (spring (first 7) (second 12) (length 77.058418)) + (spring (first 8) (second 11) (length 80.000000)) + (spring (first 3) (second 15) (length 118.431412)) + (spring (first 16) (second 4) (length 82.975899)) + (spring (first 4) (second 14) (length 80.659782)) + (spring (first 15) (second 5) (length 116.503220)) + (spring (first 5) (second 13) (length 118.338501)) + (spring (first 14) (second 6) (length 83.600243)) + (spring (first 6) (second 12) (length 87.618492)) + (spring (first 13) (second 7) (length 123.600159)) + (spring (first 7) (second 11) (length 127.412712)) + (spring (first 12) (second 8) (length 94.868332)) + (spring (first 8) (second 10) (length 98.473343)) + (spring (first 11) (second 9) (length 130.418564)) + (spring (first 3) (second 25) (length 71.512238)) + (spring (first 25) (second 5) (length 66.309875)) + (spring (first 5) (second 26) (length 74.303429)) + (spring (first 26) (second 7) (length 79.259071)) + (spring (first 7) (second 27) (length 89.554451)) + (spring (first 27) (second 9) (length 88.684837)) + (spring (first 27) (second 8) (length 67.067131)) + (spring (first 26) (second 6) (length 62.072536)) + (spring (first 25) (second 4) (length 47.095646)) + (spring (first 9) (second 30) (length 60.959003)) + (spring (first 30) (second 10) (length 59.548298)) + (spring (first 10) (second 36) (length 21.095022)) + (spring (first 9) (second 37) (length 20.396078)) + (spring (first 36) (second 38) (length 24.698177)) + (spring (first 38) (second 30) (length 49.203659)) + (spring (first 37) (second 39) (length 22.825424)) + (spring (first 39) (second 30) (length 50.606323)) + (spring (first 9) (second 39) (length 15.000000)) + (spring (first 38) (second 10) (length 15.000000)) + (spring (first 30) (second 40) (length 64.007812)) + (spring (first 40) (second 41) (length 24.000000)) + (spring (first 41) (second 42) (length 36.400551)) + (spring (first 42) (second 43) (length 38.275318)) + (spring (first 43) (second 44) (length 19.313208)) + (spring (first 43) (second 45) (length 17.804493)) + (spring (first 43) (second 46) (length 19.000000)) + (spring (first 40) (second 47) (length 26.000000)) + (spring (first 47) (second 48) (length 36.400551)) + (spring (first 48) (second 49) (length 42.201897)) + (spring (first 49) (second 50) (length 16.401220)) + (spring (first 49) (second 51) (length 16.155495)) + (spring (first 49) (second 52) (length 18.973665)) + (spring (first 30) (second 41) (length 68.007355)) + (spring (first 30) (second 47) (length 69.462219)) + (spring (first 42) (second 40) (length 59.841457)) + (spring (first 40) (second 48) (length 61.392181)) + (spring (first 47) (second 9) (length 128.798294)) + (spring (first 41) (second 10) (length 125.399361)) + (spring (first 41) (second 437) (length 53.000000)) + (spring (first 437) (second 438) (length 24.758837)) + (spring (first 438) (second 439) (length 28.844410)) + (spring (first 439) (second 47) (length 55.226807)) + (spring (first 40) (second 438) (length 45.099888)) + (spring (first 439) (second 437) (length 42.011902)) + (spring (first 439) (second 40) (length 35.805027)) + (spring (first 437) (second 40) (length 35.000000)) + (spring (first 16) (second 1050) (length 137.000000)) + (spring (first 1050) (second 15) (length 130.736374)) + (spring (first 1053) (second 3) (length 144.000000)) + (spring (first 1053) (second 25) (length 136.565002)) + (spring (first 4) (second 1053) (length 177.910095)) + (spring (first 4) (second 1050) (length 201.121857)) + (spring (first 1053) (second 1054) (length 552.602051)) + (spring (first 1054) (second 1055) (length 520.000977)) + (spring (first 1055) (second 1053) (length 186.000000)) + (spring (first 1055) (second 1056) (length 76.367531)) + (spring (first 1056) (second 1054) (length 469.234497)) + (spring (first 1056) (second 1053) (length 142.618378)) + (spring (first 1050) (second 1057) (length 253.001984)) + (spring (first 1050) (second 1058) (length 572.437744)) + (spring (first 1058) (second 1057) (length 514.000977)) + (spring (first 1057) (second 1059) (length 82.036575)) + (spring (first 1059) (second 1058) (length 460.921906)) + (spring (first 1059) (second 1050) (length 201.920776)) + (spring (first 27) (second 26) (length 147.085007)) + (spring (first 26) (second 25) (length 126.396202)) + (spring (first 11) (second 13) (length 149.053680)) + (spring (first 13) (second 15) (length 123.065025)) + (spring (first 1060) (second 1061) (length 35.000000)) + (spring (first 1061) (second 1062) (length 27.018513)) + (spring (first 1062) (second 1063) (length 38.013157)) + (spring (first 1063) (second 1065) (length 27.018513)) + (spring (first 1065) (second 1066) (length 33.421551)) + (spring (first 1066) (second 1067) (length 33.000000)) + (spring (first 1067) (second 1068) (length 30.413813)) + (spring (first 1068) (second 1060) (length 28.442924)) + (spring (first 1069) (second 1070) (length 34.000000)) + (spring (first 1070) (second 1071) (length 39.319206)) + (spring (first 1071) (second 1072) (length 27.658634)) + (spring (first 1072) (second 1073) (length 33.734257)) + (spring (first 1075) (second 1076) (length 33.241539)) + (spring (first 1076) (second 1069) (length 22.135944)) + (spring (first 1060) (second 1062) (length 58.523499)) + (spring (first 1060) (second 1063) (length 86.023254)) + (spring (first 1060) (second 1065) (length 89.810913)) + (spring (first 1060) (second 1066) (length 77.336922)) + (spring (first 1060) (second 1067) (length 56.356010)) + (spring (first 1068) (second 1061) (length 54.129475)) + (spring (first 1068) (second 1062) (length 69.310890)) + (spring (first 1068) (second 1063) (length 85.070557)) + (spring (first 1068) (second 1065) (length 80.006248)) + (spring (first 1068) (second 1066) (length 58.309521)) + (spring (first 1067) (second 1060) (length 56.356010)) + (spring (first 1067) (second 1061) (length 71.028160)) + (spring (first 1067) (second 1062) (length 75.769386)) + (spring (first 1067) (second 1063) (length 76.837494)) + (spring (first 1067) (second 1065) (length 62.625874)) + (spring (first 1066) (second 1061) (length 77.472572)) + (spring (first 1066) (second 1062) (length 70.114189)) + (spring (first 1066) (second 1063) (length 55.072678)) + (spring (first 1065) (second 1061) (length 75.822159)) + (spring (first 1065) (second 1062) (length 57.454330)) + (spring (first 1063) (second 1061) (length 62.393909)) + (spring (first 1069) (second 1071) (length 69.871307)) + (spring (first 1069) (second 1072) (length 90.271812)) + (spring (first 1069) (second 1073) (length 92.135773)) + (spring (first 1069) (second 1075) (length 54.083271)) + (spring (first 1075) (second 1077) (length 25.317978)) + (spring (first 1077) (second 1073) (length 29.410883)) + (spring (first 1069) (second 1077) (length 73.661385)) + (spring (first 1076) (second 1077) (length 55.569775)) + (spring (first 1076) (second 1073) (length 78.339005)) + (spring (first 1076) (second 1072) (length 84.172440)) + (spring (first 1076) (second 1071) (length 69.771057)) + (spring (first 1076) (second 1070) (length 43.566040)) + (spring (first 1075) (second 1069) (length 54.083271)) + (spring (first 1075) (second 1070) (length 61.000000)) + (spring (first 1075) (second 1069) (length 54.083271)) + (spring (first 1075) (second 1071) (length 68.242218)) + (spring (first 1075) (second 1072) (length 71.021126)) + (spring (first 1075) (second 1073) (length 53.235325)) + (spring (first 1077) (second 1070) (length 69.641945)) + (spring (first 1077) (second 1071) (length 61.611687)) + (spring (first 1077) (second 1072) (length 54.671749)) + (spring (first 1073) (second 1070) (length 77.103828)) + (spring (first 1073) (second 1071) (length 52.886673)) + (spring (first 1072) (second 1070) (length 64.257294)) + (spring (first 1068) (second 1256) (length 24.698177)) + (spring (first 1256) (second 1257) (length 31.240999)) + (spring (first 1257) (second 1258) (length 22.360680)) + (spring (first 1258) (second 1259) (length 25.495098)) + (spring (first 1259) (second 1260) (length 19.235384)) + (spring (first 1260) (second 1261) (length 19.026299)) + (spring (first 1261) (second 1054) (length 22.561028)) + (spring (first 1065) (second 1262) (length 19.104973)) + (spring (first 1262) (second 1263) (length 22.203604)) + (spring (first 1263) (second 1264) (length 25.059929)) + (spring (first 1275) (second 1276) (length 40.459858)) + (spring (first 1276) (second 1076) (length 53.235325)) + (spring (first 1073) (second 1277) (length 22.472204)) + (spring (first 1277) (second 1278) (length 26.172504)) + (spring (first 1278) (second 1279) (length 21.023796)) + (spring (first 1279) (second 1280) (length 21.840330)) + (spring (first 1280) (second 1281) (length 29.410883)) + (spring (first 1281) (second 1282) (length 21.954498)) + (spring (first 1282) (second 1283) (length 20.880613)) + (spring (first 1283) (second 1284) (length 25.495098)) + (spring (first 1284) (second 1058) (length 26.925823)) + (spring (first 1264) (second 3716) (length 47.000000)) + (spring (first 3716) (second 42) (length 76.216797)) + (spring (first 437) (second 30) (length 94.593872)) + (spring (first 439) (second 30) (length 95.126228)) + (spring (first 1275) (second 4660) (length 40.012497)) + (spring (first 4660) (second 49) (length 48.795490)) + (spring (first 26) (second 1056) (length 278.212158)) + (spring (first 13) (second 1059) (length 331.024170)) + (spring (first 25) (second 1056) (length 251.336426)) + (spring (first 1053) (second 26) (length 221.652878)) + (spring (first 13) (second 1050) (length 216.953918)) + (spring (first 15) (second 1059) (length 308.103882)) + (spring (first 27) (second 7285) (length 81.344948)) + (spring (first 7285) (second 9) (length 73.006851)) + (spring (first 10) (second 7286) (length 77.006493)) + (spring (first 7286) (second 11) (length 95.963531)) + )) + +;; EOF ;; diff --git a/examples/choh2/quicksave4.construo b/examples/choh2/quicksave4.construo new file mode 100644 index 0000000..1922bb8 --- /dev/null +++ b/examples/choh2/quicksave4.construo @@ -0,0 +1,350 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 3180) (pos 0.000000 334.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3181) (pos 0.000000 285.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3182) (pos 138.000000 166.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3183) (pos 186.000000 172.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3184) (pos 222.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3185) (pos 270.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3186) (pos 423.000000 469.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3187) (pos 426.000000 421.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3188) (pos 84.000000 362.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3189) (pos 205.000000 506.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3190) (pos 328.000000 400.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3191) (pos 199.000000 266.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3193) (pos 140.000000 355.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3194) (pos 174.000000 327.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3195) (pos 212.000000 341.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3196) (pos 213.000000 373.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3197) (pos 245.000000 384.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3198) (pos 245.000000 418.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3199) (pos 177.000000 400.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3200) (pos 213.000000 444.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3201) (pos 179.000000 385.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3202) (pos 155.000000 353.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3203) (pos 181.000000 341.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3204) (pos 199.000000 350.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3205) (pos 198.000000 368.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3206) (pos 214.000000 429.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3207) (pos 192.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3208) (pos 213.000000 388.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3209) (pos 232.000000 394.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3210) (pos 231.000000 412.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3295) (pos 665.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3299) (pos 751.000000 372.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3300) (pos 717.000000 396.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3301) (pos 704.000000 432.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3302) (pos 708.000000 460.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3303) (pos 728.000000 480.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3304) (pos 754.000000 479.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3305) (pos 778.000000 465.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3306) (pos 792.000000 434.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3307) (pos 786.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3308) (pos 769.000000 377.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3683) (pos 519.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3693) (pos 609.000000 278.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3694) (pos 561.000000 264.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3695) (pos 498.000000 249.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3696) (pos 456.000000 235.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3697) (pos 415.000000 223.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3698) (pos 361.000000 214.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3699) (pos 310.000000 192.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3700) (pos 265.000000 186.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3701) (pos 222.000000 177.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3857) (pos 690.000000 307.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3858) (pos 647.000000 290.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3859) (pos 720.000000 310.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3860) (pos 750.000000 328.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3861) (pos 761.000000 352.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4108) (pos 407.000000 472.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4109) (pos 413.000000 457.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4110) (pos 430.000000 455.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4111) (pos 433.000000 503.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4112) (pos 396.000000 459.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4113) (pos 391.000000 474.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4142) (pos 429.000000 543.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4143) (pos 446.000000 582.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4144) (pos 480.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4145) (pos 452.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4146) (pos 466.000000 592.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4147) (pos 414.000000 571.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4149) (pos 416.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4150) (pos 434.000000 591.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4171) (pos 421.000000 513.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4172) (pos 441.000000 516.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4173) (pos 456.000000 490.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4174) (pos 443.000000 475.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4175) (pos 431.000000 488.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4504) (pos 153.000000 122.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4505) (pos 123.000000 118.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4506) (pos 138.000000 117.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4508) (pos 153.000000 168.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4509) (pos 143.000000 181.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4510) (pos 126.000000 177.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4515) (pos 159.000000 98.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4516) (pos 143.000000 80.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4517) (pos 125.000000 94.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5264) (pos 3.000000 308.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5855) (pos 176.000000 150.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5857) (pos 201.000000 173.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5859) (pos 213.000000 164.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5860) (pos 190.000000 157.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5861) (pos 228.000000 197.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6103) (pos 168.000000 117.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6520) (pos 174.000000 99.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7955) (pos 112.000000 143.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9574) (pos 236.000000 184.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 3180) (second 3181) (length 49.000000)) + (spring (first 3181) (second 3182) (length 182.222397)) + (spring (first 3182) (second 3183) (length 48.373547)) + (spring (first 3180) (second 3184) (length 345.700745)) + (spring (first 3184) (second 3185) (length 48.000000)) + (spring (first 3185) (second 3186) (length 200.771011)) + (spring (first 3186) (second 3187) (length 48.093658)) + (spring (first 3187) (second 3183) (length 345.833771)) + (spring (first 3180) (second 3183) (length 246.657654)) + (spring (first 3184) (second 3187) (length 270.739716)) + (spring (first 3186) (second 3184) (length 239.376266)) + (spring (first 3185) (second 3187) (length 236.685440)) + (spring (first 3180) (second 3182) (length 217.412048)) + (spring (first 3183) (second 3181) (length 217.635010)) + (spring (first 3180) (second 3187) (length 434.793060)) + (spring (first 3184) (second 3183) (length 428.514862)) + (spring (first 3185) (second 3182) (length 452.673157)) + (spring (first 3186) (second 3181) (length 461.286255)) + (spring (first 3187) (second 3180) (length 434.793060)) + (spring (first 3187) (second 3181) (length 447.182281)) + (spring (first 3184) (second 3182) (length 441.072571)) + (spring (first 3185) (second 3183) (length 435.183868)) + (spring (first 3186) (second 3180) (length 444.020264)) + (spring (first 3180) (second 3188) (length 88.543777)) + (spring (first 3188) (second 3189) (length 188.087738)) + (spring (first 3189) (second 3184) (length 94.540993)) + (spring (first 3189) (second 3190) (length 162.373032)) + (spring (first 3190) (second 3187) (length 100.224747)) + (spring (first 3190) (second 3191) (length 186.002686)) + (spring (first 3191) (second 3188) (length 149.803207)) + (spring (first 3191) (second 3183) (length 94.894676)) + (spring (first 3189) (second 3187) (length 236.782608)) + (spring (first 3190) (second 3184) (length 225.470612)) + (spring (first 3188) (second 3183) (length 215.647858)) + (spring (first 3191) (second 3180) (length 210.297409)) + (spring (first 3193) (second 3188) (length 56.435802)) + (spring (first 3193) (second 3194) (length 44.045429)) + (spring (first 3194) (second 3195) (length 40.496914)) + (spring (first 3195) (second 3196) (length 32.015621)) + (spring (first 3196) (second 3197) (length 33.837849)) + (spring (first 3197) (second 3198) (length 34.000000)) + (spring (first 3193) (second 3199) (length 58.258045)) + (spring (first 3199) (second 3200) (length 56.850681)) + (spring (first 3200) (second 3198) (length 41.231056)) + (spring (first 3199) (second 3196) (length 45.000000)) + (spring (first 3200) (second 3189) (length 62.514000)) + (spring (first 3198) (second 3190) (length 84.929382)) + (spring (first 3197) (second 3190) (length 84.528099)) + (spring (first 3194) (second 3191) (length 65.924202)) + (spring (first 3195) (second 3191) (length 76.118332)) + (spring (first 3194) (second 3188) (length 96.566040)) + (spring (first 3198) (second 3189) (length 96.664368)) + (spring (first 3201) (second 3202) (length 40.000000)) + (spring (first 3202) (second 3203) (length 28.635643)) + (spring (first 3203) (second 3204) (length 20.124611)) + (spring (first 3204) (second 3205) (length 18.027756)) + (spring (first 3205) (second 3201) (length 25.495098)) + (spring (first 3206) (second 3207) (length 34.828148)) + (spring (first 3207) (second 3208) (length 25.238859)) + (spring (first 3208) (second 3209) (length 19.924858)) + (spring (first 3209) (second 3210) (length 18.027756)) + (spring (first 3210) (second 3206) (length 24.041630)) + (spring (first 3201) (second 3199) (length 15.132746)) + (spring (first 3202) (second 3193) (length 15.132746)) + (spring (first 3203) (second 3194) (length 15.652476)) + (spring (first 3204) (second 3195) (length 15.811388)) + (spring (first 3205) (second 3196) (length 15.811388)) + (spring (first 3196) (second 3208) (length 15.000000)) + (spring (first 3199) (second 3207) (length 15.132746)) + (spring (first 3200) (second 3206) (length 15.033297)) + (spring (first 3198) (second 3210) (length 15.231546)) + (spring (first 3197) (second 3209) (length 16.401220)) + (spring (first 3196) (second 3208) (length 15.000000)) + (spring (first 3202) (second 3194) (length 32.202484)) + (spring (first 3203) (second 3193) (length 43.324360)) + (spring (first 3203) (second 3195) (length 31.000000)) + (spring (first 3204) (second 3194) (length 33.970577)) + (spring (first 3205) (second 3195) (length 30.413813)) + (spring (first 3204) (second 3196) (length 26.925823)) + (spring (first 3201) (second 3193) (length 49.203659)) + (spring (first 3202) (second 3199) (length 51.894123)) + (spring (first 3201) (second 3207) (length 21.400934)) + (spring (first 3205) (second 3208) (length 25.000000)) + (spring (first 3196) (second 3207) (length 35.805027)) + (spring (first 3199) (second 3208) (length 37.947330)) + (spring (first 3205) (second 3199) (length 38.275318)) + (spring (first 3201) (second 3196) (length 36.055511)) + (spring (first 3207) (second 3200) (length 46.957428)) + (spring (first 3206) (second 3199) (length 47.010635)) + (spring (first 3206) (second 3198) (length 32.893768)) + (spring (first 3200) (second 3210) (length 36.715118)) + (spring (first 3210) (second 3197) (length 31.304953)) + (spring (first 3198) (second 3209) (length 27.294687)) + (spring (first 3209) (second 3196) (length 28.319605)) + (spring (first 3197) (second 3208) (length 32.249031)) + (spring (first 3208) (second 3201) (length 34.132095)) + (spring (first 3207) (second 3205) (length 34.525352)) + (spring (first 3299) (second 3300) (length 41.617306)) + (spring (first 3300) (second 3301) (length 38.275318)) + (spring (first 3301) (second 3302) (length 28.284271)) + (spring (first 3302) (second 3303) (length 28.284271)) + (spring (first 3303) (second 3304) (length 26.019224)) + (spring (first 3304) (second 3305) (length 27.784887)) + (spring (first 3305) (second 3306) (length 34.014702)) + (spring (first 3306) (second 3307) (length 32.557640)) + (spring (first 3307) (second 3308) (length 30.232433)) + (spring (first 3308) (second 3299) (length 18.681541)) + (spring (first 3300) (second 3308) (length 55.362442)) + (spring (first 3300) (second 3307) (length 69.260376)) + (spring (first 3300) (second 3306) (length 84.077347)) + (spring (first 3300) (second 3305) (length 92.097771)) + (spring (first 3300) (second 3304) (length 90.873535)) + (spring (first 3300) (second 3303) (length 84.717178)) + (spring (first 3300) (second 3302) (length 64.629715)) + (spring (first 3301) (second 3299) (length 76.216797)) + (spring (first 3301) (second 3308) (length 85.146935)) + (spring (first 3301) (second 3307) (length 87.315521)) + (spring (first 3301) (second 3306) (length 88.022728)) + (spring (first 3301) (second 3305) (length 81.024689)) + (spring (first 3301) (second 3304) (length 68.622154)) + (spring (first 3301) (second 3303) (length 53.665630)) + (spring (first 3302) (second 3299) (length 97.943863)) + (spring (first 3302) (second 3300) (length 64.629715)) + (spring (first 3302) (second 3308) (length 103.004852)) + (spring (first 3302) (second 3307) (length 97.200821)) + (spring (first 3302) (second 3306) (length 87.931793)) + (spring (first 3302) (second 3305) (length 70.178345)) + (spring (first 3302) (second 3304) (length 49.769470)) + (spring (first 3303) (second 3299) (length 110.421921)) + (spring (first 3303) (second 3308) (length 110.860275)) + (spring (first 3303) (second 3307) (length 97.200821)) + (spring (first 3303) (second 3306) (length 78.816238)) + (spring (first 3303) (second 3305) (length 52.201534)) + (spring (first 3304) (second 3299) (length 107.042046)) + (spring (first 3304) (second 3308) (length 103.097038)) + (spring (first 3304) (second 3307) (length 83.384651)) + (spring (first 3304) (second 3306) (length 58.898216)) + (spring (first 3305) (second 3299) (length 96.840073)) + (spring (first 3305) (second 3308) (length 88.459030)) + (spring (first 3305) (second 3307) (length 63.505905)) + (spring (first 3306) (second 3299) (length 74.330345)) + (spring (first 3306) (second 3308) (length 61.465439)) + (spring (first 3307) (second 3299) (length 46.097721)) + (spring (first 3295) (second 3683) (length 146.000000)) + (spring (first 3693) (second 3694) (length 50.000000)) + (spring (first 3694) (second 3695) (length 64.761101)) + (spring (first 3695) (second 3696) (length 44.271889)) + (spring (first 3696) (second 3697) (length 42.720020)) + (spring (first 3697) (second 3698) (length 54.744862)) + (spring (first 3698) (second 3699) (length 55.542778)) + (spring (first 3699) (second 3700) (length 45.398239)) + (spring (first 3700) (second 3701) (length 43.931767)) + (spring (first 3701) (second 3183) (length 36.345562)) + (spring (first 3857) (second 3295) (length 293.068237)) + (spring (first 3857) (second 3683) (length 338.385864)) + (spring (first 3693) (second 3858) (length 39.849716)) + (spring (first 3858) (second 3857) (length 46.238514)) + (spring (first 3857) (second 3859) (length 30.149628)) + (spring (first 3859) (second 3860) (length 34.985710)) + (spring (first 3860) (second 3861) (length 26.400757)) + (spring (first 3861) (second 3308) (length 26.248810)) + (spring (first 3185) (second 3180) (length 378.318634)) + (spring (first 3184) (second 3181) (length 384.551697)) + (spring (first 3182) (second 3187) (length 384.667389)) + (spring (first 3186) (second 3183) (length 379.971039)) + (spring (first 3186) (second 4108) (length 16.278820)) + (spring (first 3186) (second 4109) (length 15.620500)) + (spring (first 3186) (second 4110) (length 15.652476)) + (spring (first 4110) (second 4109) (length 17.117243)) + (spring (first 4109) (second 4108) (length 16.155495)) + (spring (first 3186) (second 4111) (length 35.440090)) + (spring (first 4109) (second 3187) (length 38.275318)) + (spring (first 4108) (second 3187) (length 54.424259)) + (spring (first 4109) (second 4111) (length 50.159744)) + (spring (first 4111) (second 4108) (length 40.459858)) + (spring (first 4108) (second 4112) (length 17.029387)) + (spring (first 4108) (second 4113) (length 16.124516)) + (spring (first 4113) (second 4112) (length 15.811388)) + (spring (first 4112) (second 3198) (length 156.467255)) + (spring (first 4112) (second 4109) (length 17.117243)) + (spring (first 4109) (second 3209) (length 191.650726)) + (spring (first 4111) (second 4142) (length 40.199501)) + (spring (first 4142) (second 4143) (length 42.544094)) + (spring (first 4143) (second 4144) (length 37.576588)) + (spring (first 4144) (second 4145) (length 28.000000)) + (spring (first 4145) (second 4146) (length 15.231546)) + (spring (first 4146) (second 4144) (length 15.231546)) + (spring (first 4142) (second 4147) (length 31.764761)) + (spring (first 4147) (second 4145) (length 46.615448)) + (spring (first 4145) (second 4149) (length 36.013885)) + (spring (first 4149) (second 4150) (length 19.697716)) + (spring (first 4150) (second 4145) (length 19.313208)) + (spring (first 4142) (second 4171) (length 31.048349)) + (spring (first 4171) (second 4111) (length 15.620500)) + (spring (first 4111) (second 4172) (length 15.264338)) + (spring (first 4172) (second 4142) (length 29.546574)) + (spring (first 4171) (second 4173) (length 41.880783)) + (spring (first 4173) (second 4174) (length 19.849434)) + (spring (first 4174) (second 4175) (length 17.691807)) + (spring (first 4175) (second 4172) (length 29.732138)) + (spring (first 4111) (second 4174) (length 29.732138)) + (spring (first 4175) (second 4173) (length 25.079872)) + (spring (first 4111) (second 4147) (length 70.604530)) + (spring (first 4111) (second 4143) (length 80.062477)) + (spring (first 4171) (second 4172) (length 20.223749)) + (spring (first 4175) (second 4113) (length 42.379242)) + (spring (first 3182) (second 4504) (length 46.486557)) + (spring (first 3182) (second 4505) (length 50.289165)) + (spring (first 4505) (second 4506) (length 15.033297)) + (spring (first 4506) (second 4504) (length 15.811388)) + (spring (first 4506) (second 3182) (length 49.000000)) + (spring (first 3182) (second 4508) (length 15.132746)) + (spring (first 3182) (second 4509) (length 15.811388)) + (spring (first 3182) (second 4510) (length 16.278820)) + (spring (first 4505) (second 4515) (length 41.182522)) + (spring (first 4515) (second 4516) (length 24.083189)) + (spring (first 4516) (second 4517) (length 22.803509)) + (spring (first 4517) (second 4504) (length 39.597980)) + (spring (first 4506) (second 4516) (length 37.336308)) + (spring (first 4515) (second 4517) (length 34.234486)) + (spring (first 4515) (second 4506) (length 28.319605)) + (spring (first 4517) (second 4506) (length 26.419689)) + (spring (first 3180) (second 5264) (length 26.172504)) + (spring (first 5264) (second 3181) (length 23.194826)) + (spring (first 3182) (second 5855) (length 41.231056)) + (spring (first 5855) (second 5857) (length 33.970577)) + (spring (first 5857) (second 3701) (length 21.377558)) + (spring (first 3701) (second 5859) (length 15.811388)) + (spring (first 5859) (second 5857) (length 15.000000)) + (spring (first 3182) (second 5860) (length 52.773098)) + (spring (first 5860) (second 3701) (length 37.735924)) + (spring (first 3701) (second 5861) (length 20.880613)) + (spring (first 4504) (second 5855) (length 36.235340)) + (spring (first 5855) (second 6103) (length 33.955853)) + (spring (first 6103) (second 4515) (length 21.023796)) + (spring (first 5857) (second 3183) (length 15.033297)) + (spring (first 4517) (second 3182) (length 73.164200)) + (spring (first 4515) (second 3182) (length 71.168816)) + (spring (first 4516) (second 3182) (length 86.145226)) + (spring (first 6103) (second 4504) (length 15.811388)) + (spring (first 6103) (second 6520) (length 18.973665)) + (spring (first 3303) (second 3302) (length 28.284271)) + (spring (first 4506) (second 5855) (length 50.328918)) + (spring (first 4505) (second 7955) (length 27.313000)) + (spring (first 7955) (second 3182) (length 34.713108)) + (spring (first 5855) (second 4515) (length 54.708317)) + (spring (first 5861) (second 9574) (length 15.264338)) + (spring (first 9574) (second 3701) (length 15.652476)) + )) + +;; EOF ;; diff --git a/examples/choh2/quicksave5.construo b/examples/choh2/quicksave5.construo new file mode 100644 index 0000000..472efff --- /dev/null +++ b/examples/choh2/quicksave5.construo @@ -0,0 +1,269 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 8514) (pos 1.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8515) (pos 396.000000 2.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8516) (pos 799.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8517) (pos 397.000000 390.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8519) (pos 665.000000 235.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8520) (pos 675.000000 282.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8521) (pos 659.000000 292.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8522) (pos 700.000000 272.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8523) (pos 718.000000 265.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8524) (pos 621.000000 187.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8533) (pos 604.000000 188.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8534) (pos 593.000000 177.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8535) (pos 596.000000 160.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8536) (pos 611.000000 149.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8537) (pos 631.000000 157.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8538) (pos 637.000000 175.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8939) (pos 437.000000 233.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8940) (pos 444.000000 284.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8941) (pos 436.000000 328.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8942) (pos 417.000000 322.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8943) (pos 468.000000 325.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8944) (pos 486.000000 319.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8997) (pos 421.000000 230.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8998) (pos 411.000000 218.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8999) (pos 413.000000 202.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9000) (pos 427.000000 194.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9001) (pos 443.000000 194.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9002) (pos 452.000000 211.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9302) (pos 617.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9303) (pos 167.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9832) (pos 378.000000 291.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9833) (pos 363.000000 294.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9834) (pos 373.000000 307.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9835) (pos 389.000000 306.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9836) (pos 701.000000 190.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9837) (pos 719.000000 181.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9838) (pos 722.000000 197.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9839) (pos 712.000000 210.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10188) (pos 507.000000 267.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10189) (pos 526.000000 266.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10190) (pos 509.000000 283.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10191) (pos 524.000000 282.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10192) (pos 604.000000 255.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10193) (pos 588.000000 259.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10194) (pos 601.000000 273.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10195) (pos 617.000000 269.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10237) (pos 555.000000 320.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10238) (pos 591.000000 319.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10239) (pos 574.000000 320.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10240) (pos 590.000000 296.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10241) (pos 570.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10242) (pos 555.000000 296.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10243) (pos 575.000000 348.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10245) (pos 543.000000 374.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10488) (pos 586.000000 377.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10489) (pos 603.000000 376.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10490) (pos 559.000000 378.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10569) (pos 194.000000 56.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10570) (pos 227.000000 64.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10571) (pos 241.000000 90.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10572) (pos 233.000000 120.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10573) (pos 207.000000 129.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10574) (pos 177.000000 120.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10575) (pos 169.000000 94.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12563) (pos 348.000000 340.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12564) (pos 295.000000 345.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12565) (pos 287.000000 329.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12566) (pos 279.000000 346.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12567) (pos 289.000000 359.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12568) (pos 367.000000 380.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12569) (pos 360.000000 434.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12570) (pos 341.000000 428.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12571) (pos 386.000000 425.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12572) (pos 401.000000 420.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12573) (pos 334.000000 329.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12574) (pos 320.000000 319.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12575) (pos 328.000000 303.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12576) (pos 346.000000 305.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12577) (pos 350.000000 322.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13724) (pos 403.000000 330.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13725) (pos 497.000000 330.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13726) (pos 530.000000 384.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13727) (pos 615.000000 387.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13848) (pos 658.000000 307.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13849) (pos 735.000000 273.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 8514) (second 8515) (length 715.844971)) + (spring (first 8515) (second 8516) (length 720.290222)) + (spring (first 8516) (second 8514) (length 798.000000)) + (spring (first 8515) (second 8517) (length 388.001282)) + (spring (first 8517) (second 8514) (length 447.768921)) + (spring (first 8517) (second 8516) (length 453.083862)) + (spring (first 8519) (second 8520) (length 48.052055)) + (spring (first 8520) (second 8521) (length 18.867962)) + (spring (first 8519) (second 8522) (length 50.931328)) + (spring (first 8522) (second 8523) (length 19.313208)) + (spring (first 8519) (second 8524) (length 65.115280)) + (spring (first 8524) (second 8533) (length 17.029387)) + (spring (first 8533) (second 8534) (length 15.556349)) + (spring (first 8534) (second 8535) (length 17.262676)) + (spring (first 8535) (second 8536) (length 18.601076)) + (spring (first 8536) (second 8537) (length 21.540659)) + (spring (first 8537) (second 8538) (length 18.973665)) + (spring (first 8538) (second 8524) (length 20.000000)) + (spring (first 8533) (second 8538) (length 35.468296)) + (spring (first 8533) (second 8537) (length 41.109608)) + (spring (first 8524) (second 8536) (length 39.293766)) + (spring (first 8533) (second 8535) (length 29.120440)) + (spring (first 8524) (second 8537) (length 31.622776)) + (spring (first 8524) (second 8535) (length 36.796738)) + (spring (first 8524) (second 8534) (length 29.732138)) + (spring (first 8538) (second 8534) (length 44.045429)) + (spring (first 8538) (second 8535) (length 43.657761)) + (spring (first 8538) (second 8536) (length 36.769554)) + (spring (first 8537) (second 8534) (length 42.941822)) + (spring (first 8537) (second 8535) (length 35.128338)) + (spring (first 8536) (second 8533) (length 39.623226)) + (spring (first 8536) (second 8534) (length 33.286633)) + (spring (first 8535) (second 8537) (length 35.128338)) + (spring (first 8515) (second 8534) (length 263.503326)) + (spring (first 8515) (second 8535) (length 254.880371)) + (spring (first 8515) (second 8536) (length 260.449615)) + (spring (first 8939) (second 8940) (length 51.478149)) + (spring (first 8940) (second 8941) (length 44.721359)) + (spring (first 8941) (second 8942) (length 19.924858)) + (spring (first 8940) (second 8943) (length 47.507893)) + (spring (first 8943) (second 8944) (length 18.973665)) + (spring (first 8939) (second 8997) (length 16.278820)) + (spring (first 8997) (second 8998) (length 15.620500)) + (spring (first 8998) (second 8999) (length 16.124516)) + (spring (first 8999) (second 9000) (length 16.124516)) + (spring (first 9000) (second 9001) (length 16.000000)) + (spring (first 9001) (second 9002) (length 19.235384)) + (spring (first 9002) (second 8939) (length 26.627054)) + (spring (first 8997) (second 9002) (length 36.359318)) + (spring (first 8997) (second 9001) (length 42.190044)) + (spring (first 8997) (second 9000) (length 36.496574)) + (spring (first 8997) (second 8999) (length 29.120440)) + (spring (first 8998) (second 8939) (length 30.016663)) + (spring (first 8998) (second 9002) (length 41.593269)) + (spring (first 8998) (second 9001) (length 40.000000)) + (spring (first 8998) (second 9000) (length 28.844410)) + (spring (first 8999) (second 8997) (length 29.120440)) + (spring (first 8999) (second 8939) (length 39.204590)) + (spring (first 8999) (second 9002) (length 40.024994)) + (spring (first 8999) (second 9001) (length 31.048349)) + (spring (first 9000) (second 8939) (length 40.261642)) + (spring (first 9000) (second 9002) (length 30.232433)) + (spring (first 9001) (second 8939) (length 39.458839)) + (spring (first 9002) (second 8997) (length 36.359318)) + (spring (first 8999) (second 8515) (length 200.721207)) + (spring (first 9001) (second 8515) (length 197.668915)) + (spring (first 9000) (second 8515) (length 194.486496)) + (spring (first 9302) (second 8515) (length 636.592468)) + (spring (first 8515) (second 9303) (length 638.480225)) + (spring (first 9303) (second 9302) (length 450.001099)) + (spring (first 8939) (second 9832) (length 82.734512)) + (spring (first 9832) (second 9833) (length 15.297058)) + (spring (first 9832) (second 9833) (length 15.297058)) + (spring (first 9832) (second 9834) (length 16.763054)) + (spring (first 9832) (second 9835) (length 18.601076)) + (spring (first 8524) (second 9836) (length 80.056229)) + (spring (first 9836) (second 9837) (length 20.124611)) + (spring (first 9836) (second 9838) (length 22.135944)) + (spring (first 9836) (second 9839) (length 22.825424)) + (spring (first 8939) (second 10188) (length 77.820305)) + (spring (first 10188) (second 10189) (length 19.026299)) + (spring (first 10188) (second 10190) (length 16.124516)) + (spring (first 10188) (second 10191) (length 22.671568)) + (spring (first 8524) (second 10192) (length 70.092796)) + (spring (first 10192) (second 10193) (length 16.492422)) + (spring (first 10193) (second 10192) (length 16.492422)) + (spring (first 10192) (second 10194) (length 18.248287)) + (spring (first 10192) (second 10195) (length 19.104973)) + (spring (first 10190) (second 10191) (length 15.033297)) + (spring (first 10189) (second 10191) (length 16.124516)) + (spring (first 10193) (second 10194) (length 19.104973)) + (spring (first 10195) (second 10194) (length 16.492422)) + (spring (first 10191) (second 10237) (length 49.040798)) + (spring (first 10194) (second 10238) (length 47.074409)) + (spring (first 10238) (second 10239) (length 17.029387)) + (spring (first 10239) (second 10237) (length 19.000000)) + (spring (first 10237) (second 10240) (length 42.438190)) + (spring (first 10240) (second 10241) (length 25.612497)) + (spring (first 10241) (second 10242) (length 21.931713)) + (spring (first 10242) (second 10238) (length 42.720020)) + (spring (first 10239) (second 10241) (length 40.199501)) + (spring (first 10242) (second 10240) (length 35.000000)) + (spring (first 10239) (second 10243) (length 28.017851)) + (spring (first 10237) (second 10243) (length 34.409302)) + (spring (first 10238) (second 10243) (length 33.120991)) + (spring (first 10241) (second 10238) (length 44.294468)) + (spring (first 10241) (second 10237) (length 42.720020)) + (spring (first 10243) (second 10488) (length 31.016125)) + (spring (first 10488) (second 10489) (length 17.029387)) + (spring (first 10245) (second 10490) (length 16.492422)) + (spring (first 10490) (second 10243) (length 34.000000)) + (spring (first 10569) (second 10570) (length 33.955853)) + (spring (first 10570) (second 10571) (length 29.529646)) + (spring (first 10571) (second 10572) (length 31.048349)) + (spring (first 10572) (second 10573) (length 27.513634)) + (spring (first 10573) (second 10574) (length 31.320919)) + (spring (first 10574) (second 10575) (length 27.202942)) + (spring (first 10575) (second 10569) (length 45.486263)) + (spring (first 10575) (second 10570) (length 65.299309)) + (spring (first 10575) (second 10571) (length 72.111023)) + (spring (first 10575) (second 10572) (length 69.079666)) + (spring (first 10575) (second 10573) (length 51.662365)) + (spring (first 10574) (second 10569) (length 66.219330)) + (spring (first 10574) (second 10570) (length 75.073296)) + (spring (first 10574) (second 10571) (length 70.682388)) + (spring (first 10574) (second 10572) (length 56.000000)) + (spring (first 10573) (second 10569) (length 74.148499)) + (spring (first 10573) (second 10570) (length 68.007355)) + (spring (first 10573) (second 10571) (length 51.739735)) + (spring (first 10572) (second 10569) (length 74.946648)) + (spring (first 10572) (second 10570) (length 56.320511)) + (spring (first 10571) (second 10569) (length 58.008621)) + (spring (first 10569) (second 8515) (length 209.093277)) + (spring (first 10570) (second 8515) (length 180.013885)) + (spring (first 10571) (second 8515) (length 178.238602)) + (spring (first 9303) (second 8517) (length 310.103210)) + (spring (first 9302) (second 8517) (length 303.448517)) + (spring (first 9833) (second 9834) (length 16.401220)) + (spring (first 9834) (second 9835) (length 16.031219)) + (spring (first 9834) (second 12563) (length 41.400482)) + (spring (first 12563) (second 12564) (length 53.235325)) + (spring (first 12564) (second 12565) (length 17.888544)) + (spring (first 12564) (second 12566) (length 16.031219)) + (spring (first 12564) (second 12566) (length 16.031219)) + (spring (first 12564) (second 12567) (length 15.231546)) + (spring (first 12563) (second 12568) (length 44.283180)) + (spring (first 12568) (second 12569) (length 54.451813)) + (spring (first 12569) (second 12570) (length 19.924858)) + (spring (first 12568) (second 12571) (length 48.846699)) + (spring (first 12571) (second 12572) (length 15.811388)) + (spring (first 12568) (second 12573) (length 60.745369)) + (spring (first 12573) (second 12574) (length 17.204651)) + (spring (first 12574) (second 12575) (length 17.888544)) + (spring (first 12575) (second 12576) (length 18.110771)) + (spring (first 12576) (second 12577) (length 17.464249)) + (spring (first 12577) (second 12568) (length 60.440052)) + (spring (first 12563) (second 12577) (length 18.110771)) + (spring (first 12563) (second 12573) (length 17.804493)) + (spring (first 12573) (second 12577) (length 17.464249)) + (spring (first 12577) (second 12575) (length 29.068884)) + (spring (first 12574) (second 12576) (length 29.529646)) + (spring (first 12577) (second 12574) (length 30.149628)) + (spring (first 12573) (second 12575) (length 26.683329)) + (spring (first 12576) (second 12573) (length 26.832815)) + (spring (first 8942) (second 13724) (length 16.124516)) + (spring (first 13724) (second 8941) (length 33.060551)) + (spring (first 8944) (second 13725) (length 15.556349)) + (spring (first 13725) (second 8943) (length 29.427877)) + (spring (first 10245) (second 13726) (length 16.401220)) + (spring (first 13726) (second 10490) (length 29.614185)) + (spring (first 10489) (second 13727) (length 16.278820)) + (spring (first 13727) (second 10488) (length 30.675724)) + (spring (first 8521) (second 13848) (length 15.033297)) + (spring (first 13848) (second 8520) (length 30.232433)) + (spring (first 8523) (second 13849) (length 18.788294)) + (spring (first 13849) (second 8522) (length 35.014282)) + )) + +;; EOF ;; diff --git a/examples/choh2/quicksave6.construo b/examples/choh2/quicksave6.construo new file mode 100644 index 0000000..36253a7 --- /dev/null +++ b/examples/choh2/quicksave6.construo @@ -0,0 +1,390 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 3696) (pos 279.000000 466.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3697) (pos 370.000000 466.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3698) (pos 463.000000 466.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3699) (pos 549.000000 466.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3701) (pos 191.000000 431.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3705) (pos 277.000000 430.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3706) (pos 368.000000 431.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3707) (pos 460.000000 432.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3708) (pos 548.000000 433.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3815) (pos 190.000000 466.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3852) (pos 354.000000 464.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3853) (pos 369.000000 451.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3854) (pos 384.000000 458.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3855) (pos 402.000000 512.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3857) (pos 451.000000 454.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3858) (pos 466.000000 449.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3859) (pos 477.000000 460.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3903) (pos 420.000000 555.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3904) (pos 401.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3905) (pos 376.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3906) (pos 392.000000 586.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3907) (pos 438.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3908) (pos 459.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3909) (pos 448.000000 586.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4042) (pos 419.000000 513.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4043) (pos 438.000000 512.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4086) (pos 434.000000 488.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4087) (pos 417.000000 474.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4088) (pos 401.000000 487.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4137) (pos 688.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4138) (pos 700.000000 549.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4139) (pos 720.000000 523.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4140) (pos 754.000000 516.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4141) (pos 782.000000 531.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4142) (pos 790.000000 562.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4143) (pos 794.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4234) (pos 97.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4235) (pos 89.000000 558.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4236) (pos 70.000000 520.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4237) (pos 37.000000 506.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4238) (pos 11.000000 535.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4239) (pos 5.000000 572.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4240) (pos 3.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4321) (pos 650.000000 467.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4322) (pos 650.000000 433.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4361) (pos 191.000000 245.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4362) (pos 265.000000 275.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4363) (pos 286.000000 338.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4364) (pos 253.000000 405.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4365) (pos 212.000000 405.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4366) (pos 211.000000 276.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4367) (pos 251.000000 292.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4368) (pos 270.000000 341.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4427) (pos 368.000000 398.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4428) (pos 402.000000 398.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4429) (pos 403.000000 282.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4435) (pos 460.000000 399.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4436) (pos 428.000000 399.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4437) (pos 427.000000 283.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4438) (pos 368.000000 282.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4439) (pos 463.000000 284.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4440) (pos 368.000000 251.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4441) (pos 464.000000 252.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4906) (pos 547.000000 253.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4908) (pos 649.000000 400.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4909) (pos 579.000000 400.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4910) (pos 579.000000 356.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4911) (pos 626.000000 357.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4912) (pos 626.000000 327.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4913) (pos 577.000000 326.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4914) (pos 577.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4915) (pos 649.000000 279.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4916) (pos 650.000000 254.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5199) (pos 179.000000 454.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5200) (pos 194.000000 450.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5201) (pos 205.000000 461.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5202) (pos 266.000000 457.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5203) (pos 278.000000 448.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5204) (pos 291.000000 456.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5205) (pos 215.000000 509.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5206) (pos 252.000000 511.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5207) (pos 234.000000 510.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5208) (pos 233.000000 554.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5209) (pos 212.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5210) (pos 186.000000 597.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5211) (pos 201.000000 586.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5212) (pos 253.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5213) (pos 277.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5214) (pos 263.000000 586.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5271) (pos 248.000000 490.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5272) (pos 232.000000 472.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5273) (pos 219.000000 487.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5340) (pos 534.000000 461.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5341) (pos 548.000000 450.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5342) (pos 562.000000 458.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5343) (pos 638.000000 456.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5344) (pos 653.000000 452.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5345) (pos 665.000000 463.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5346) (pos 585.000000 509.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5347) (pos 621.000000 512.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5348) (pos 605.000000 512.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5349) (pos 605.000000 555.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5350) (pos 579.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5351) (pos 553.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5352) (pos 568.000000 587.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5353) (pos 628.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5354) (pos 652.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5355) (pos 639.000000 588.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5356) (pos 619.000000 488.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5357) (pos 603.000000 473.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5358) (pos 590.000000 486.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 3696) (second 3697) (length 91.000000)) + (spring (first 3697) (second 3698) (length 93.000000)) + (spring (first 3698) (second 3699) (length 86.000000)) + (spring (first 3701) (second 3705) (length 86.005814)) + (spring (first 3705) (second 3706) (length 91.005493)) + (spring (first 3706) (second 3707) (length 92.005432)) + (spring (first 3705) (second 3696) (length 36.055511)) + (spring (first 3706) (second 3697) (length 35.057095)) + (spring (first 3707) (second 3698) (length 34.132095)) + (spring (first 3707) (second 3708) (length 88.005684)) + (spring (first 3708) (second 3699) (length 33.015148)) + (spring (first 3696) (second 3701) (length 94.704803)) + (spring (first 3696) (second 3706) (length 95.634720)) + (spring (first 3705) (second 3697) (length 99.724625)) + (spring (first 3697) (second 3707) (length 96.208107)) + (spring (first 3706) (second 3698) (length 101.242287)) + (spring (first 3698) (second 3708) (length 91.181137)) + (spring (first 3707) (second 3699) (length 95.273293)) + (spring (first 3701) (second 3697) (length 182.389694)) + (spring (first 3697) (second 3708) (length 181.033142)) + (spring (first 3706) (second 3699) (length 184.352921)) + (spring (first 3696) (second 3707) (length 184.165680)) + (spring (first 3705) (second 3698) (length 189.451843)) + (spring (first 3696) (second 3815) (length 89.000000)) + (spring (first 3815) (second 3701) (length 35.014282)) + (spring (first 3815) (second 3705) (length 94.154129)) + (spring (first 3815) (second 3706) (length 181.408386)) + (spring (first 3697) (second 3852) (length 16.124516)) + (spring (first 3852) (second 3853) (length 19.849434)) + (spring (first 3853) (second 3697) (length 15.033297)) + (spring (first 3853) (second 3697) (length 15.033297)) + (spring (first 3853) (second 3854) (length 16.552946)) + (spring (first 3854) (second 3697) (length 16.124516)) + (spring (first 3697) (second 3855) (length 56.035702)) + (spring (first 3698) (second 3857) (length 16.970562)) + (spring (first 3857) (second 3858) (length 15.811388)) + (spring (first 3858) (second 3859) (length 15.556349)) + (spring (first 3859) (second 3698) (length 15.231546)) + (spring (first 3698) (second 3858) (length 17.262676)) + (spring (first 3697) (second 3853) (length 15.033297)) + (spring (first 3903) (second 3904) (length 47.010635)) + (spring (first 3904) (second 3905) (length 25.000000)) + (spring (first 3905) (second 3906) (length 20.000000)) + (spring (first 3906) (second 3904) (length 15.000000)) + (spring (first 3903) (second 3907) (length 46.615448)) + (spring (first 3907) (second 3908) (length 21.023796)) + (spring (first 3908) (second 3907) (length 21.023796)) + (spring (first 3908) (second 3909) (length 17.029387)) + (spring (first 3909) (second 3907) (length 15.620500)) + (spring (first 3855) (second 3903) (length 46.615448)) + (spring (first 3855) (second 4042) (length 17.029387)) + (spring (first 4042) (second 3903) (length 42.011902)) + (spring (first 4042) (second 4043) (length 19.026299)) + (spring (first 4043) (second 3698) (length 52.354561)) + (spring (first 4043) (second 3903) (length 46.615448)) + (spring (first 4042) (second 3904) (length 86.884979)) + (spring (first 4042) (second 3907) (length 87.097649)) + (spring (first 3855) (second 4086) (length 40.000000)) + (spring (first 4086) (second 4087) (length 22.022715)) + (spring (first 4087) (second 4088) (length 20.615528)) + (spring (first 4088) (second 4043) (length 44.654228)) + (spring (first 4042) (second 4087) (length 39.051247)) + (spring (first 4088) (second 4086) (length 33.015148)) + (spring (first 3908) (second 4137) (length 229.000000)) + (spring (first 4137) (second 4138) (length 51.419842)) + (spring (first 4138) (second 4139) (length 32.802441)) + (spring (first 4139) (second 4140) (length 34.713108)) + (spring (first 4140) (second 4141) (length 31.764761)) + (spring (first 4141) (second 4142) (length 32.015621)) + (spring (first 4142) (second 4143) (length 36.221542)) + (spring (first 4143) (second 4137) (length 106.004715)) + (spring (first 4137) (second 4142) (length 108.503456)) + (spring (first 4143) (second 4138) (length 106.004715)) + (spring (first 4137) (second 4141) (length 116.017242)) + (spring (first 4143) (second 4139) (length 105.361282)) + (spring (first 4137) (second 4140) (length 106.042442)) + (spring (first 4143) (second 4140) (length 91.235954)) + (spring (first 4137) (second 4139) (length 82.462112)) + (spring (first 4143) (second 4141) (length 68.066147)) + (spring (first 4142) (second 4138) (length 90.934044)) + (spring (first 4142) (second 4139) (length 80.131142)) + (spring (first 4142) (second 4140) (length 58.412327)) + (spring (first 4141) (second 4139) (length 62.514000)) + (spring (first 4141) (second 4138) (length 83.952370)) + (spring (first 4141) (second 4137) (length 116.017242)) + (spring (first 4140) (second 4138) (length 63.285069)) + (spring (first 3905) (second 4234) (length 279.000000)) + (spring (first 4234) (second 4235) (length 40.792156)) + (spring (first 4235) (second 4236) (length 42.485291)) + (spring (first 4236) (second 4237) (length 35.846897)) + (spring (first 4237) (second 4238) (length 38.948685)) + (spring (first 4238) (second 4239) (length 37.483330)) + (spring (first 4239) (second 4240) (length 27.073973)) + (spring (first 4240) (second 4234) (length 94.005318)) + (spring (first 4234) (second 4239) (length 95.603348)) + (spring (first 4240) (second 4235) (length 95.273293)) + (spring (first 4239) (second 4236) (length 83.240616)) + (spring (first 4235) (second 4238) (length 81.320351)) + (spring (first 4234) (second 4236) (length 82.540901)) + (spring (first 4234) (second 4237) (length 109.836243)) + (spring (first 4234) (second 4238) (length 106.606750)) + (spring (first 4234) (second 4239) (length 95.603348)) + (spring (first 4240) (second 4236) (length 103.585716)) + (spring (first 4240) (second 4237) (length 99.020203)) + (spring (first 4240) (second 4238) (length 64.498062)) + (spring (first 4239) (second 4235) (length 85.158676)) + (spring (first 4239) (second 4236) (length 83.240616)) + (spring (first 4239) (second 4237) (length 73.348480)) + (spring (first 4238) (second 4236) (length 60.876926)) + (spring (first 4238) (second 4240) (length 64.498062)) + (spring (first 4237) (second 4235) (length 73.539108)) + (spring (first 4236) (second 4234) (length 82.540901)) + (spring (first 3699) (second 4321) (length 101.004951)) + (spring (first 3708) (second 4322) (length 102.000000)) + (spring (first 4322) (second 4321) (length 34.000000)) + (spring (first 3699) (second 4322) (length 106.254410)) + (spring (first 4321) (second 3708) (length 107.517441)) + (spring (first 4321) (second 3707) (length 193.196793)) + (spring (first 3698) (second 4322) (length 189.889435)) + (spring (first 4321) (second 3701) (length 460.409607)) + (spring (first 3815) (second 4322) (length 461.182190)) + (spring (first 3701) (second 4361) (length 186.000000)) + (spring (first 4361) (second 4362) (length 79.849861)) + (spring (first 4362) (second 4363) (length 66.407829)) + (spring (first 4363) (second 3705) (length 92.439171)) + (spring (first 3705) (second 4364) (length 34.655445)) + (spring (first 4364) (second 4365) (length 41.000000)) + (spring (first 4365) (second 3701) (length 33.421551)) + (spring (first 4365) (second 4366) (length 129.003876)) + (spring (first 4366) (second 4367) (length 43.081318)) + (spring (first 4367) (second 4368) (length 52.554733)) + (spring (first 4368) (second 4364) (length 66.219330)) + (spring (first 4366) (second 4361) (length 36.891735)) + (spring (first 4367) (second 4362) (length 22.022715)) + (spring (first 4368) (second 4363) (length 16.278820)) + (spring (first 3706) (second 4427) (length 33.000000)) + (spring (first 4427) (second 4428) (length 34.000000)) + (spring (first 4428) (second 4429) (length 116.004311)) + (spring (first 3707) (second 4435) (length 33.000000)) + (spring (first 4435) (second 4436) (length 32.000000)) + (spring (first 4436) (second 4437) (length 116.004311)) + (spring (first 4429) (second 4438) (length 35.000000)) + (spring (first 4437) (second 4439) (length 36.013885)) + (spring (first 4438) (second 4440) (length 31.000000)) + (spring (first 4440) (second 4441) (length 96.005211)) + (spring (first 4441) (second 4439) (length 32.015621)) + (spring (first 4438) (second 4441) (length 100.578331)) + (spring (first 4439) (second 4440) (length 100.568382)) + (spring (first 4429) (second 4437) (length 24.020824)) + (spring (first 4428) (second 4436) (length 26.019224)) + (spring (first 3706) (second 4435) (length 97.406364)) + (spring (first 4427) (second 3707) (length 98.081596)) + (spring (first 4429) (second 4441) (length 67.977936)) + (spring (first 4437) (second 4440) (length 67.119293)) + (spring (first 4428) (second 3706) (length 47.381432)) + (spring (first 4428) (second 3707) (length 67.230942)) + (spring (first 4436) (second 3706) (length 68.000000)) + (spring (first 4436) (second 3707) (length 45.967381)) + (spring (first 4429) (second 4440) (length 46.754681)) + (spring (first 4437) (second 4441) (length 48.270073)) + (spring (first 4366) (second 4362) (length 54.009258)) + (spring (first 4367) (second 4361) (length 76.216797)) + (spring (first 4367) (second 4363) (length 57.801384)) + (spring (first 4368) (second 4362) (length 66.189125)) + (spring (first 4368) (second 3705) (length 89.274857)) + (spring (first 4363) (second 4364) (length 74.686012)) + (spring (first 4364) (second 3701) (length 67.230942)) + (spring (first 4365) (second 3705) (length 69.641945)) + (spring (first 4365) (second 4361) (length 161.372238)) + (spring (first 4366) (second 3701) (length 156.285004)) + (spring (first 4429) (second 4436) (length 119.641129)) + (spring (first 4437) (second 4428) (length 117.686020)) + (spring (first 3708) (second 4906) (length 180.002777)) + (spring (first 3708) (second 4322) (length 102.000000)) + (spring (first 4322) (second 4908) (length 33.015148)) + (spring (first 4908) (second 4909) (length 70.000000)) + (spring (first 4909) (second 4910) (length 44.000000)) + (spring (first 4910) (second 4911) (length 47.010635)) + (spring (first 4911) (second 4912) (length 30.000000)) + (spring (first 4912) (second 4913) (length 49.010204)) + (spring (first 4913) (second 4914) (length 46.000000)) + (spring (first 4914) (second 4915) (length 72.006943)) + (spring (first 4915) (second 4916) (length 25.019993)) + (spring (first 4916) (second 4906) (length 103.004852)) + (spring (first 3708) (second 4909) (length 45.276924)) + (spring (first 4322) (second 4909) (length 78.294319)) + (spring (first 3708) (second 4908) (length 106.254410)) + (spring (first 3708) (second 4910) (length 83.006027)) + (spring (first 4909) (second 4906) (length 150.442673)) + (spring (first 4910) (second 4906) (length 107.856384)) + (spring (first 4913) (second 4910) (length 30.066593)) + (spring (first 4914) (second 4906) (length 40.360870)) + (spring (first 4916) (second 4914) (length 77.491936)) + (spring (first 4915) (second 4906) (length 105.261581)) + (spring (first 4914) (second 3708) (length 155.724121)) + (spring (first 4913) (second 3708) (length 110.860275)) + (spring (first 4910) (second 4912) (length 55.226807)) + (spring (first 4911) (second 4913) (length 57.982758)) + (spring (first 3815) (second 5199) (length 16.278820)) + (spring (first 5199) (second 5200) (length 15.524175)) + (spring (first 5200) (second 5201) (length 15.556349)) + (spring (first 5201) (second 3815) (length 15.811388)) + (spring (first 3696) (second 5202) (length 15.811388)) + (spring (first 5202) (second 5203) (length 15.000000)) + (spring (first 5203) (second 5204) (length 15.264338)) + (spring (first 5204) (second 3696) (length 15.620500)) + (spring (first 5203) (second 3696) (length 18.027756)) + (spring (first 5200) (second 3815) (length 16.492422)) + (spring (first 3815) (second 5205) (length 49.739319)) + (spring (first 3696) (second 5206) (length 52.478565)) + (spring (first 5205) (second 5207) (length 19.026299)) + (spring (first 5207) (second 5206) (length 18.027756)) + (spring (first 5207) (second 5208) (length 44.011364)) + (spring (first 5208) (second 5209) (length 48.754486)) + (spring (first 5209) (second 5210) (length 26.019224)) + (spring (first 5210) (second 5211) (length 18.601076)) + (spring (first 5211) (second 5209) (length 16.278820)) + (spring (first 5208) (second 5212) (length 48.332184)) + (spring (first 5212) (second 5213) (length 24.000000)) + (spring (first 5213) (second 5212) (length 24.000000)) + (spring (first 5213) (second 5214) (length 18.439089)) + (spring (first 5214) (second 5212) (length 15.620500)) + (spring (first 5210) (second 4234) (length 89.005615)) + (spring (first 5213) (second 3905) (length 99.000000)) + (spring (first 5205) (second 5208) (length 48.466484)) + (spring (first 5206) (second 5208) (length 47.010635)) + (spring (first 5207) (second 5209) (length 90.708321)) + (spring (first 5207) (second 5212) (length 90.027771)) + (spring (first 5205) (second 5271) (length 38.078865)) + (spring (first 5271) (second 5272) (length 24.083189)) + (spring (first 5272) (second 5273) (length 19.849434)) + (spring (first 5273) (second 5206) (length 40.804413)) + (spring (first 5207) (second 5272) (length 38.052597)) + (spring (first 5273) (second 5271) (length 29.154760)) + (spring (first 3699) (second 5340) (length 15.811388)) + (spring (first 5340) (second 5341) (length 17.804493)) + (spring (first 5341) (second 5342) (length 16.124516)) + (spring (first 5342) (second 3699) (length 15.264338)) + (spring (first 5341) (second 3699) (length 16.031219)) + (spring (first 4321) (second 5343) (length 16.278820)) + (spring (first 5343) (second 5344) (length 15.524175)) + (spring (first 5344) (second 5345) (length 16.278820)) + (spring (first 5345) (second 4321) (length 15.524175)) + (spring (first 5344) (second 4321) (length 15.297058)) + (spring (first 3699) (second 5346) (length 56.080299)) + (spring (first 4321) (second 5347) (length 53.535034)) + (spring (first 5347) (second 5348) (length 16.000000)) + (spring (first 5348) (second 5346) (length 20.223749)) + (spring (first 5348) (second 5349) (length 43.000000)) + (spring (first 5349) (second 5350) (length 51.107731)) + (spring (first 5350) (second 5351) (length 26.000000)) + (spring (first 5351) (second 5352) (length 19.209373)) + (spring (first 5352) (second 5350) (length 16.278820)) + (spring (first 5349) (second 5353) (length 49.648766)) + (spring (first 5353) (second 5354) (length 24.000000)) + (spring (first 5354) (second 5355) (length 17.029387)) + (spring (first 5355) (second 5353) (length 15.556349)) + (spring (first 5349) (second 5346) (length 50.159744)) + (spring (first 5349) (second 5347) (length 45.880280)) + (spring (first 5346) (second 5356) (length 39.962482)) + (spring (first 5356) (second 5357) (length 21.931713)) + (spring (first 5357) (second 5358) (length 18.384777)) + (spring (first 5358) (second 5347) (length 40.459858)) + (spring (first 5348) (second 5357) (length 39.051247)) + (spring (first 5358) (second 5356) (length 29.068884)) + (spring (first 5348) (second 5350) (length 90.801979)) + (spring (first 5348) (second 5353) (length 89.988892)) + (spring (first 5354) (second 4137) (length 36.000000)) + (spring (first 5351) (second 3908) (length 94.000000)) + (spring (first 4361) (second 4440) (length 177.101669)) + (spring (first 4441) (second 4906) (length 83.006027)) + )) + +;; EOF ;; diff --git a/examples/choh2/quicksave7.construo b/examples/choh2/quicksave7.construo new file mode 100644 index 0000000..cd5af21 --- /dev/null +++ b/examples/choh2/quicksave7.construo @@ -0,0 +1,236 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 6017) (pos 483.000000 366.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6019) (pos 564.000000 304.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6020) (pos 618.000000 296.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6021) (pos 669.000000 304.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6022) (pos 716.000000 328.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6023) (pos 755.000000 364.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6024) (pos 775.000000 410.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6025) (pos 775.000000 454.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6026) (pos 765.000000 499.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6033) (pos 744.000000 536.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6034) (pos 713.000000 568.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6035) (pos 672.000000 590.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6036) (pos 627.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6037) (pos 577.000000 589.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6038) (pos 535.000000 565.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6042) (pos 474.000000 392.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6043) (pos 497.000000 530.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6044) (pos 474.000000 479.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6045) (pos 470.000000 432.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6046) (pos 629.000000 443.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6049) (pos 456.000000 449.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6050) (pos 455.000000 434.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6051) (pos 462.000000 409.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6052) (pos 472.000000 377.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6054) (pos 487.000000 407.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6058) (pos 507.000000 385.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6059) (pos 515.000000 400.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6065) (pos 476.000000 418.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6066) (pos 491.000000 422.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6067) (pos 524.000000 388.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6068) (pos 530.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6069) (pos 521.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6070) (pos 502.000000 411.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6283) (pos 531.000000 321.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6285) (pos 502.000000 342.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6319) (pos 510.000000 356.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6320) (pos 498.000000 367.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6321) (pos 487.000000 340.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6322) (pos 477.000000 352.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6471) (pos 505.000000 324.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6472) (pos 518.000000 312.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6473) (pos 545.000000 302.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6474) (pos 591.000000 290.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6475) (pos 492.000000 385.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6477) (pos 594.000000 306.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6478) (pos 550.000000 320.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6479) (pos 553.000000 343.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6480) (pos 538.000000 346.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6481) (pos 538.000000 361.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6542) (pos 635.000000 288.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6544) (pos 636.000000 309.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6625) (pos 648.000000 299.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6782) (pos 612.000000 277.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6783) (pos 648.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7028) (pos 597.000000 326.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7029) (pos 594.000000 348.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7030) (pos 605.000000 360.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7031) (pos 588.000000 362.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7032) (pos 579.000000 349.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7159) (pos 445.000000 405.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7160) (pos 440.000000 433.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7161) (pos 436.000000 449.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7492) (pos 624.000000 427.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7493) (pos 639.000000 428.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7494) (pos 647.000000 441.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7495) (pos 639.000000 484.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7496) (pos 629.000000 520.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7497) (pos 601.000000 542.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7498) (pos 588.000000 532.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7499) (pos 576.000000 541.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7500) (pos 636.000000 549.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7501) (pos 651.000000 546.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7502) (pos 659.000000 560.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7503) (pos 657.000000 518.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7504) (pos 660.000000 533.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7505) (pos 672.000000 524.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7506) (pos 670.000000 509.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7655) (pos 633.000000 466.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7656) (pos 648.000000 459.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7657) (pos 653.000000 475.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 6019) (second 6020) (length 54.589375)) + (spring (first 6020) (second 6021) (length 51.623638)) + (spring (first 6021) (second 6022) (length 52.773098)) + (spring (first 6022) (second 6023) (length 53.075417)) + (spring (first 6023) (second 6024) (length 50.159744)) + (spring (first 6024) (second 6025) (length 44.000000)) + (spring (first 6025) (second 6026) (length 46.097721)) + (spring (first 6026) (second 6033) (length 42.544094)) + (spring (first 6033) (second 6034) (length 44.553337)) + (spring (first 6034) (second 6035) (length 46.529560)) + (spring (first 6035) (second 6036) (length 45.705578)) + (spring (first 6036) (second 6037) (length 50.803543)) + (spring (first 6037) (second 6038) (length 48.373547)) + (spring (first 6042) (second 6017) (length 27.513634)) + (spring (first 6038) (second 6043) (length 51.662365)) + (spring (first 6043) (second 6044) (length 55.946404)) + (spring (first 6044) (second 6045) (length 47.169907)) + (spring (first 6045) (second 6042) (length 40.199501)) + (spring (first 6046) (second 6021) (length 144.640930)) + (spring (first 6046) (second 6020) (length 147.410995)) + (spring (first 6046) (second 6019) (length 153.447052)) + (spring (first 6046) (second 6017) (length 165.060593)) + (spring (first 6046) (second 6042) (length 163.174759)) + (spring (first 6046) (second 6045) (length 159.380051)) + (spring (first 6046) (second 6044) (length 159.125732)) + (spring (first 6046) (second 6043) (length 158.091751)) + (spring (first 6046) (second 6038) (length 154.012985)) + (spring (first 6046) (second 6037) (length 154.983871)) + (spring (first 6046) (second 6036) (length 155.012909)) + (spring (first 6046) (second 6035) (length 153.160049)) + (spring (first 6046) (second 6034) (length 150.602127)) + (spring (first 6046) (second 6033) (length 147.898621)) + (spring (first 6046) (second 6026) (length 147.078217)) + (spring (first 6046) (second 6025) (length 146.413803)) + (spring (first 6046) (second 6024) (length 149.682999)) + (spring (first 6046) (second 6023) (length 148.717850)) + (spring (first 6046) (second 6022) (length 144.201248)) + (spring (first 6045) (second 6049) (length 22.022715)) + (spring (first 6049) (second 6050) (length 15.033297)) + (spring (first 6050) (second 6045) (length 15.132746)) + (spring (first 6045) (second 6051) (length 24.351591)) + (spring (first 6051) (second 6042) (length 20.808653)) + (spring (first 6042) (second 6052) (length 15.132746)) + (spring (first 6052) (second 6017) (length 15.556349)) + (spring (first 6017) (second 6058) (length 30.610456)) + (spring (first 6058) (second 6059) (length 17.000000)) + (spring (first 6054) (second 6065) (length 15.556349)) + (spring (first 6054) (second 6066) (length 15.524175)) + (spring (first 6059) (second 6067) (length 15.000000)) + (spring (first 6059) (second 6068) (length 15.132746)) + (spring (first 6059) (second 6069) (length 15.231546)) + (spring (first 6054) (second 6070) (length 15.524175)) + (spring (first 6019) (second 6283) (length 37.121422)) + (spring (first 6046) (second 6283) (length 156.486420)) + (spring (first 6283) (second 6285) (length 35.805027)) + (spring (first 6285) (second 6017) (length 30.610456)) + (spring (first 6046) (second 6285) (length 162.265213)) + (spring (first 6285) (second 6319) (length 16.124516)) + (spring (first 6319) (second 6320) (length 16.278820)) + (spring (first 6320) (second 6017) (length 15.033297)) + (spring (first 6285) (second 6321) (length 15.132746)) + (spring (first 6321) (second 6322) (length 15.620500)) + (spring (first 6322) (second 6017) (length 15.231546)) + (spring (first 6017) (second 6319) (length 28.792360)) + (spring (first 6017) (second 6285) (length 30.610456)) + (spring (first 6017) (second 6321) (length 26.305893)) + (spring (first 6320) (second 6322) (length 25.806976)) + (spring (first 6320) (second 6321) (length 29.154760)) + (spring (first 6320) (second 6285) (length 25.317978)) + (spring (first 6319) (second 6322) (length 33.241539)) + (spring (first 6319) (second 6321) (length 28.017851)) + (spring (first 6285) (second 6322) (length 26.925823)) + (spring (first 6044) (second 6024) (length 308.807373)) + (spring (first 6019) (second 6035) (length 305.712280)) + (spring (first 6020) (second 6036) (length 302.134064)) + (spring (first 6283) (second 6471) (length 26.172504)) + (spring (first 6471) (second 6472) (length 17.691807)) + (spring (first 6472) (second 6283) (length 15.811388)) + (spring (first 6283) (second 6473) (length 23.600847)) + (spring (first 6473) (second 6019) (length 19.104973)) + (spring (first 6019) (second 6474) (length 30.413813)) + (spring (first 6474) (second 6020) (length 27.658634)) + (spring (first 6054) (second 6475) (length 22.561028)) + (spring (first 6475) (second 6017) (length 21.023796)) + (spring (first 6019) (second 6477) (length 30.066593)) + (spring (first 6477) (second 6020) (length 26.000000)) + (spring (first 6474) (second 6477) (length 16.278820)) + (spring (first 6019) (second 6478) (length 21.260292)) + (spring (first 6478) (second 6479) (length 23.194826)) + (spring (first 6479) (second 6480) (length 15.297058)) + (spring (first 6480) (second 6481) (length 15.000000)) + (spring (first 6481) (second 6479) (length 23.430750)) + (spring (first 6020) (second 6542) (length 18.788294)) + (spring (first 6544) (second 6020) (length 22.203604)) + (spring (first 6542) (second 6544) (length 21.023796)) + (spring (first 6542) (second 6625) (length 17.029387)) + (spring (first 6625) (second 6544) (length 15.620500)) + (spring (first 6625) (second 6021) (length 21.587032)) + (spring (first 6474) (second 6782) (length 24.698177)) + (spring (first 6782) (second 6542) (length 25.495098)) + (spring (first 6542) (second 6783) (length 15.264338)) + (spring (first 6034) (second 6283) (length 306.811005)) + (spring (first 6037) (second 6021) (length 299.481232)) + (spring (first 6038) (second 6022) (length 298.211334)) + (spring (first 6043) (second 6023) (length 306.789825)) + (spring (first 6044) (second 6024) (length 308.807373)) + (spring (first 6045) (second 6025) (length 305.792419)) + (spring (first 6042) (second 6026) (length 310.048370)) + (spring (first 6017) (second 6026) (length 311.790009)) + (spring (first 6285) (second 6033) (length 310.161255)) + (spring (first 6477) (second 7028) (length 20.223749)) + (spring (first 7028) (second 7029) (length 22.203604)) + (spring (first 7029) (second 7030) (length 16.278820)) + (spring (first 7029) (second 7031) (length 15.231546)) + (spring (first 7029) (second 7032) (length 15.033297)) + (spring (first 6042) (second 7159) (length 31.780497)) + (spring (first 7159) (second 6050) (length 30.675724)) + (spring (first 6050) (second 7160) (length 15.033297)) + (spring (first 7160) (second 7161) (length 16.492422)) + (spring (first 7161) (second 6050) (length 24.207438)) + (spring (first 6046) (second 7492) (length 16.763054)) + (spring (first 7492) (second 7493) (length 15.033297)) + (spring (first 7493) (second 7494) (length 15.264338)) + (spring (first 7494) (second 6046) (length 18.110771)) + (spring (first 6046) (second 7493) (length 18.027756)) + (spring (first 6046) (second 7495) (length 42.201897)) + (spring (first 7495) (second 7496) (length 37.363083)) + (spring (first 7496) (second 7497) (length 35.608986)) + (spring (first 7497) (second 7498) (length 16.401220)) + (spring (first 7498) (second 7499) (length 15.000000)) + (spring (first 7499) (second 7497) (length 25.019993)) + (spring (first 7496) (second 7500) (length 29.832869)) + (spring (first 7500) (second 7501) (length 15.297058)) + (spring (first 7501) (second 7502) (length 16.124516)) + (spring (first 7502) (second 7500) (length 25.495098)) + (spring (first 7495) (second 7503) (length 38.470768)) + (spring (first 7503) (second 7504) (length 15.297058)) + (spring (first 7503) (second 7505) (length 16.155495)) + (spring (first 7503) (second 7506) (length 15.811388)) + (spring (first 7495) (second 7655) (length 18.973665)) + (spring (first 7655) (second 7656) (length 16.552946)) + (spring (first 7656) (second 7657) (length 16.763054)) + (spring (first 7657) (second 7495) (length 16.643316)) + (spring (first 7495) (second 7656) (length 26.570660)) + (spring (first 7657) (second 7655) (length 21.931713)) + (spring (first 7655) (second 7496) (length 54.147945)) + (spring (first 7657) (second 7496) (length 51.000000)) + (spring (first 7655) (second 6046) (length 23.345236)) + )) + +;; EOF ;; diff --git a/examples/choh2/quicksave8.construo b/examples/choh2/quicksave8.construo new file mode 100644 index 0000000..05a0377 --- /dev/null +++ b/examples/choh2/quicksave8.construo @@ -0,0 +1,238 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 8503) (pos 380.000000 554.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8504) (pos 361.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8505) (pos 346.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8506) (pos 402.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8507) (pos 420.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8509) (pos 365.000000 520.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8533) (pos 393.000000 499.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8536) (pos 352.000000 472.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8537) (pos 341.000000 461.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8542) (pos 417.000000 459.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8543) (pos 379.000000 415.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8552) (pos 400.000000 457.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8553) (pos 366.000000 498.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8578) (pos 380.000000 488.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8580) (pos 396.000000 521.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8581) (pos 381.000000 521.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8600) (pos 358.000000 458.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8757) (pos 379.000000 382.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8758) (pos 364.000000 382.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8760) (pos 394.000000 382.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8833) (pos 2.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8834) (pos 30.000000 531.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8835) (pos 82.000000 532.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8836) (pos 106.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8871) (pos 798.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8872) (pos 766.000000 527.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8873) (pos 704.000000 527.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8874) (pos 676.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8975) (pos 390.000000 365.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8976) (pos 380.000000 353.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8977) (pos 368.000000 365.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9095) (pos 408.000000 472.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9122) (pos 350.000000 333.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9123) (pos 337.000000 324.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9124) (pos 354.000000 318.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9125) (pos 383.000000 270.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9126) (pos 407.000000 320.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9127) (pos 417.000000 335.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9128) (pos 422.000000 320.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9217) (pos 383.000000 234.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9218) (pos 368.000000 234.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9219) (pos 398.000000 234.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9220) (pos 394.000000 218.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9221) (pos 383.000000 207.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9222) (pos 371.000000 217.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9461) (pos 303.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9463) (pos 1.000000 18.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9464) (pos 151.000000 543.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9589) (pos 458.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9590) (pos 799.000000 19.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9591) (pos 632.000000 542.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10292) (pos 353.000000 184.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10295) (pos 343.000000 172.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10297) (pos 411.000000 184.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10298) (pos 403.000000 171.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10299) (pos 420.000000 172.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11268) (pos 359.000000 170.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11917) (pos 14.000000 476.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11918) (pos 26.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11919) (pos 10.000000 347.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11920) (pos 21.000000 284.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11921) (pos 0.000000 205.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11922) (pos 60.000000 205.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11923) (pos 81.000000 284.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11924) (pos 63.000000 349.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11925) (pos 84.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11926) (pos 65.000000 477.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12115) (pos 782.000000 470.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12116) (pos 762.000000 404.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12117) (pos 782.000000 341.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12118) (pos 763.000000 275.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12119) (pos 798.000000 206.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12120) (pos 730.000000 205.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12121) (pos 697.000000 273.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12122) (pos 720.000000 340.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12123) (pos 697.000000 400.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12124) (pos 723.000000 469.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 8503) (second 8504) (length 48.846699)) + (spring (first 8504) (second 8505) (length 15.000000)) + (spring (first 8503) (second 8506) (length 50.089920)) + (spring (first 8506) (second 8507) (length 18.000000)) + (spring (first 8509) (second 8503) (length 37.161808)) + (spring (first 8509) (second 8533) (length 35.000000)) + (spring (first 8509) (second 8536) (length 49.729267)) + (spring (first 8536) (second 8537) (length 15.556349)) + (spring (first 8543) (second 8552) (length 46.957428)) + (spring (first 8552) (second 8542) (length 17.117243)) + (spring (first 8553) (second 8533) (length 27.018513)) + (spring (first 8553) (second 8578) (length 17.204651)) + (spring (first 8578) (second 8533) (length 17.029387)) + (spring (first 8503) (second 8580) (length 36.674240)) + (spring (first 8580) (second 8553) (length 37.802116)) + (spring (first 8509) (second 8581) (length 16.031219)) + (spring (first 8581) (second 8580) (length 15.000000)) + (spring (first 8503) (second 8581) (length 33.015148)) + (spring (first 8581) (second 8578) (length 33.015148)) + (spring (first 8537) (second 8600) (length 17.262676)) + (spring (first 8600) (second 8543) (length 47.853943)) + (spring (first 8536) (second 8600) (length 15.231546)) + (spring (first 8581) (second 8504) (length 80.523285)) + (spring (first 8581) (second 8506) (length 80.777473)) + (spring (first 8543) (second 8757) (length 33.000000)) + (spring (first 8757) (second 8758) (length 15.000000)) + (spring (first 8758) (second 8543) (length 36.249138)) + (spring (first 8757) (second 8760) (length 15.000000)) + (spring (first 8760) (second 8543) (length 36.249138)) + (spring (first 8757) (second 8552) (length 77.884529)) + (spring (first 8757) (second 8600) (length 78.847954)) + (spring (first 8505) (second 8833) (length 344.001465)) + (spring (first 8833) (second 8834) (length 72.615425)) + (spring (first 8834) (second 8835) (length 52.009613)) + (spring (first 8835) (second 8836) (length 70.228203)) + (spring (first 8836) (second 8834) (length 101.316338)) + (spring (first 8835) (second 8833) (length 103.711136)) + (spring (first 8507) (second 8871) (length 378.000000)) + (spring (first 8871) (second 8872) (length 78.790863)) + (spring (first 8872) (second 8873) (length 62.000000)) + (spring (first 8873) (second 8874) (length 77.252831)) + (spring (first 8874) (second 8872) (length 115.256233)) + (spring (first 8873) (second 8871) (length 118.406082)) + (spring (first 8581) (second 8536) (length 56.938564)) + (spring (first 8758) (second 8975) (length 31.064449)) + (spring (first 8975) (second 8976) (length 15.620500)) + (spring (first 8976) (second 8977) (length 16.970562)) + (spring (first 8977) (second 8760) (length 31.064449)) + (spring (first 8977) (second 8975) (length 22.000000)) + (spring (first 8976) (second 8757) (length 29.017237)) + (spring (first 8543) (second 8536) (length 63.071388)) + (spring (first 8552) (second 9095) (length 17.000000)) + (spring (first 9095) (second 8542) (length 15.811388)) + (spring (first 9095) (second 8581) (length 55.946404)) + (spring (first 9095) (second 8580) (length 50.447994)) + (spring (first 8758) (second 9122) (length 50.960770)) + (spring (first 9122) (second 9123) (length 15.811388)) + (spring (first 9122) (second 9124) (length 15.524175)) + (spring (first 9123) (second 9124) (length 18.027756)) + (spring (first 9124) (second 9125) (length 56.080299)) + (spring (first 9125) (second 9126) (length 55.461697)) + (spring (first 8760) (second 9127) (length 52.325901)) + (spring (first 9127) (second 9126) (length 18.027756)) + (spring (first 9127) (second 9128) (length 15.811388)) + (spring (first 9128) (second 9126) (length 15.000000)) + (spring (first 9125) (second 9217) (length 36.000000)) + (spring (first 9217) (second 9218) (length 15.000000)) + (spring (first 9217) (second 9219) (length 15.000000)) + (spring (first 9218) (second 9125) (length 39.000000)) + (spring (first 9219) (second 9125) (length 39.000000)) + (spring (first 9218) (second 9220) (length 30.528675)) + (spring (first 9220) (second 9221) (length 15.556349)) + (spring (first 9221) (second 9222) (length 15.620500)) + (spring (first 9222) (second 9219) (length 31.906113)) + (spring (first 9217) (second 9221) (length 27.000000)) + (spring (first 9222) (second 9220) (length 23.021729)) + (spring (first 9461) (second 9463) (length 654.801514)) + (spring (first 9463) (second 8836) (length 589.427673)) + (spring (first 8836) (second 9461) (length 197.002533)) + (spring (first 8836) (second 9464) (length 71.063354)) + (spring (first 9464) (second 9463) (length 546.008240)) + (spring (first 9461) (second 9464) (length 161.987656)) + (spring (first 9589) (second 9590) (length 672.815735)) + (spring (first 9590) (second 8874) (length 592.898804)) + (spring (first 8874) (second 9589) (length 218.000000)) + (spring (first 9589) (second 9591) (length 183.098328)) + (spring (first 9591) (second 9590) (length 549.015503)) + (spring (first 8874) (second 9591) (length 72.006943)) + (spring (first 8507) (second 9589) (length 38.000000)) + (spring (first 8505) (second 9461) (length 43.000000)) + (spring (first 9218) (second 10292) (length 52.201534)) + (spring (first 10292) (second 10295) (length 15.620500)) + (spring (first 9219) (second 10297) (length 51.662365)) + (spring (first 10297) (second 10298) (length 15.264338)) + (spring (first 10298) (second 10299) (length 17.029387)) + (spring (first 10299) (second 10297) (length 15.000000)) + (spring (first 10292) (second 11268) (length 15.231546)) + (spring (first 11268) (second 10295) (length 16.124516)) + (spring (first 11268) (second 9463) (length 388.931885)) + (spring (first 10298) (second 9590) (length 424.169769)) + (spring (first 10298) (second 11268) (length 44.011364)) + (spring (first 9590) (second 8872) (length 509.070709)) + (spring (first 9463) (second 8834) (length 513.819031)) + (spring (first 8834) (second 11917) (length 57.280014)) + (spring (first 11917) (second 11918) (length 63.150612)) + (spring (first 11918) (second 11919) (length 68.883957)) + (spring (first 11919) (second 11920) (length 63.953106)) + (spring (first 11920) (second 11921) (length 81.743500)) + (spring (first 11921) (second 11922) (length 60.000000)) + (spring (first 11922) (second 11923) (length 81.743500)) + (spring (first 11923) (second 11924) (length 67.446274)) + (spring (first 11924) (second 11925) (length 68.308128)) + (spring (first 11925) (second 11926) (length 65.802734)) + (spring (first 11926) (second 8835) (length 57.567352)) + (spring (first 11917) (second 11926) (length 51.009804)) + (spring (first 11918) (second 11925) (length 58.000000)) + (spring (first 11919) (second 11924) (length 53.037724)) + (spring (first 11920) (second 11923) (length 60.000000)) + (spring (first 11920) (second 11922) (length 88.102211)) + (spring (first 11923) (second 11921) (length 113.145920)) + (spring (first 11919) (second 11923) (length 94.921021)) + (spring (first 11924) (second 11920) (length 77.388626)) + (spring (first 11925) (second 11919) (length 99.824844)) + (spring (first 11918) (second 11924) (length 74.793045)) + (spring (first 11926) (second 11918) (length 74.094536)) + (spring (first 11917) (second 11925) (length 93.509361)) + (spring (first 8835) (second 11917) (length 88.090858)) + (spring (first 8834) (second 11926) (length 64.350601)) + (spring (first 8872) (second 12115) (length 59.203041)) + (spring (first 12115) (second 12116) (length 68.963760)) + (spring (first 12116) (second 12117) (length 66.098412)) + (spring (first 12117) (second 12118) (length 68.680420)) + (spring (first 12118) (second 12119) (length 77.369247)) + (spring (first 12119) (second 12120) (length 68.007355)) + (spring (first 12120) (second 12121) (length 75.584389)) + (spring (first 12121) (second 12122) (length 70.837845)) + (spring (first 12122) (second 12123) (length 64.257294)) + (spring (first 12123) (second 12124) (length 73.736015)) + (spring (first 12124) (second 8873) (length 61.032780)) + (spring (first 12124) (second 12115) (length 59.008472)) + (spring (first 12123) (second 12116) (length 65.122963)) + (spring (first 12122) (second 12117) (length 62.008064)) + (spring (first 12121) (second 12118) (length 66.030296)) + (spring (first 8873) (second 12115) (length 96.607452)) + (spring (first 8872) (second 12124) (length 72.201111)) + (spring (first 12124) (second 12116) (length 75.802376)) + (spring (first 12115) (second 12123) (length 110.113579)) + (spring (first 12123) (second 12117) (length 103.469803)) + (spring (first 12116) (second 12122) (length 76.550636)) + (spring (first 12122) (second 12118) (length 77.935867)) + (spring (first 12117) (second 12121) (length 108.853111)) + (spring (first 12121) (second 12119) (length 121.202309)) + (spring (first 12118) (second 12120) (length 77.388626)) + )) + +;; EOF ;; diff --git a/examples/choh2/quicksave9.construo b/examples/choh2/quicksave9.construo new file mode 100644 index 0000000..fddc3d5 --- /dev/null +++ b/examples/choh2/quicksave9.construo @@ -0,0 +1,406 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 1) (pos 184.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos 199.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 216.000000 561.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 232.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 247.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 216.000000 531.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 201.000000 531.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 231.000000 531.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 227.000000 514.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 217.000000 502.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos 206.000000 513.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos 192.000000 561.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos 195.000000 576.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos 180.000000 571.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 254.000000 489.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 250.000000 474.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos 265.000000 474.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 58) (pos 307.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 59) (pos 322.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 60) (pos 340.000000 563.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 61) (pos 357.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 62) (pos 373.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 63) (pos 340.000000 533.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 64) (pos 325.000000 533.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 65) (pos 355.000000 532.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 66) (pos 351.000000 515.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 67) (pos 340.000000 504.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 68) (pos 329.000000 515.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 105) (pos 302.000000 490.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 107) (pos 292.000000 475.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 108) (pos 308.000000 476.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 109) (pos 279.000000 435.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 170) (pos 437.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 171) (pos 452.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 172) (pos 468.000000 564.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 173) (pos 484.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 174) (pos 499.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 175) (pos 468.000000 535.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 176) (pos 453.000000 535.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 177) (pos 483.000000 534.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 178) (pos 497.000000 563.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 179) (pos 489.000000 576.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 180) (pos 506.000000 575.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 873) (pos 477.000000 517.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 874) (pos 468.000000 505.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 876) (pos 459.000000 517.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1139) (pos 383.000000 491.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1140) (pos 375.000000 477.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1141) (pos 393.000000 478.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1142) (pos 426.000000 492.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1143) (pos 417.000000 479.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1144) (pos 435.000000 480.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1183) (pos 406.000000 437.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1206) (pos 279.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1207) (pos 405.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1208) (pos 264.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1209) (pos 294.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1262) (pos 390.000000 401.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1263) (pos 420.000000 402.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1398) (pos 248.000000 435.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1399) (pos 237.000000 446.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1400) (pos 252.000000 451.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1401) (pos 438.000000 437.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1402) (pos 447.000000 450.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1403) (pos 432.000000 453.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1754) (pos 366.000000 358.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1755) (pos 357.000000 346.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1756) (pos 375.000000 346.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1757) (pos 417.000000 383.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1759) (pos 395.000000 382.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1760) (pos 290.000000 385.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1763) (pos 269.000000 384.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1877) (pos 316.000000 358.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1878) (pos 306.000000 345.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1879) (pos 325.000000 346.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1880) (pos 342.000000 308.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2047) (pos 341.000000 274.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2048) (pos 326.000000 273.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2049) (pos 356.000000 274.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3905) (pos 354.000000 255.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3906) (pos 342.000000 241.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3909) (pos 329.000000 254.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4506) (pos 311.000000 306.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4507) (pos 300.000000 317.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4508) (pos 316.000000 321.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4509) (pos 374.000000 307.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4510) (pos 368.000000 321.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4511) (pos 386.000000 317.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5642) (pos 342.000000 476.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6565) (pos 2.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6566) (pos 683.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7357) (pos 406.000000 371.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7358) (pos 280.000000 373.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7705) (pos 279.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7706) (pos 402.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9097) (pos 501.000000 195.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9098) (pos 498.000000 210.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9099) (pos 502.000000 225.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9100) (pos 516.000000 187.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9101) (pos 534.000000 188.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9102) (pos 546.000000 200.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9103) (pos 544.000000 216.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9104) (pos 535.000000 230.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9105) (pos 520.000000 231.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9126) (pos 509.000000 258.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9127) (pos 486.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9128) (pos 453.000000 299.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9150) (pos 423.000000 304.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9151) (pos 384.000000 292.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 1) (second 2) (length 15.000000)) + (spring (first 2) (second 3) (length 41.629318)) + (spring (first 3) (second 4) (length 41.231056)) + (spring (first 4) (second 5) (length 15.000000)) + (spring (first 3) (second 6) (length 30.000000)) + (spring (first 6) (second 7) (length 15.000000)) + (spring (first 6) (second 8) (length 15.000000)) + (spring (first 7) (second 3) (length 33.541019)) + (spring (first 8) (second 3) (length 33.541019)) + (spring (first 7) (second 9) (length 31.064449)) + (spring (first 9) (second 10) (length 15.620500)) + (spring (first 10) (second 11) (length 15.556349)) + (spring (first 11) (second 8) (length 30.805843)) + (spring (first 6) (second 10) (length 29.017237)) + (spring (first 11) (second 9) (length 21.023796)) + (spring (first 7) (second 12) (length 31.320919)) + (spring (first 12) (second 19) (length 15.297058)) + (spring (first 19) (second 20) (length 15.811388)) + (spring (first 20) (second 12) (length 15.620500)) + (spring (first 8) (second 21) (length 47.885281)) + (spring (first 21) (second 22) (length 15.524175)) + (spring (first 22) (second 23) (length 15.000000)) + (spring (first 23) (second 21) (length 18.601076)) + (spring (first 6) (second 2) (length 70.092796)) + (spring (first 6) (second 4) (length 69.856995)) + (spring (first 58) (second 59) (length 15.000000)) + (spring (first 59) (second 60) (length 40.249222)) + (spring (first 60) (second 61) (length 39.812057)) + (spring (first 61) (second 62) (length 16.000000)) + (spring (first 60) (second 63) (length 30.000000)) + (spring (first 63) (second 64) (length 15.000000)) + (spring (first 63) (second 65) (length 15.033297)) + (spring (first 64) (second 60) (length 33.541019)) + (spring (first 65) (second 60) (length 34.438351)) + (spring (first 64) (second 66) (length 31.622776)) + (spring (first 66) (second 67) (length 15.556349)) + (spring (first 67) (second 68) (length 15.556349)) + (spring (first 68) (second 65) (length 31.064449)) + (spring (first 63) (second 67) (length 29.000000)) + (spring (first 68) (second 66) (length 22.000000)) + (spring (first 63) (second 59) (length 68.410522)) + (spring (first 63) (second 61) (length 68.154236)) + (spring (first 64) (second 105) (length 48.764740)) + (spring (first 105) (second 107) (length 18.027756)) + (spring (first 107) (second 108) (length 16.031219)) + (spring (first 108) (second 105) (length 15.231546)) + (spring (first 23) (second 109) (length 41.436699)) + (spring (first 109) (second 107) (length 42.059483)) + (spring (first 6) (second 21) (length 56.639210)) + (spring (first 63) (second 105) (length 57.384666)) + (spring (first 170) (second 171) (length 15.000000)) + (spring (first 171) (second 172) (length 38.483765)) + (spring (first 172) (second 173) (length 38.483765)) + (spring (first 173) (second 174) (length 15.000000)) + (spring (first 172) (second 175) (length 29.000000)) + (spring (first 175) (second 176) (length 15.000000)) + (spring (first 175) (second 177) (length 15.033297)) + (spring (first 176) (second 172) (length 32.649654)) + (spring (first 177) (second 172) (length 33.541019)) + (spring (first 175) (second 171) (length 65.969688)) + (spring (first 175) (second 173) (length 65.969688)) + (spring (first 177) (second 178) (length 32.202484)) + (spring (first 178) (second 179) (length 15.264338)) + (spring (first 179) (second 180) (length 17.029387)) + (spring (first 180) (second 178) (length 15.000000)) + (spring (first 6) (second 12) (length 38.418747)) + (spring (first 176) (second 873) (length 30.000000)) + (spring (first 873) (second 874) (length 15.000000)) + (spring (first 874) (second 876) (length 15.000000)) + (spring (first 876) (second 177) (length 29.410883)) + (spring (first 175) (second 874) (length 30.000000)) + (spring (first 876) (second 873) (length 18.000000)) + (spring (first 65) (second 1139) (length 49.648766)) + (spring (first 63) (second 1139) (length 60.108234)) + (spring (first 1139) (second 1140) (length 16.124516)) + (spring (first 1140) (second 1141) (length 18.027756)) + (spring (first 1141) (second 1139) (length 16.401220)) + (spring (first 176) (second 1142) (length 50.774010)) + (spring (first 1142) (second 1143) (length 15.811388)) + (spring (first 1143) (second 1144) (length 18.027756)) + (spring (first 1144) (second 1142) (length 15.000000)) + (spring (first 175) (second 1142) (length 60.108234)) + (spring (first 175) (second 178) (length 40.311287)) + (spring (first 1141) (second 1183) (length 43.011627)) + (spring (first 1183) (second 1143) (length 43.416588)) + (spring (first 109) (second 1206) (length 33.000000)) + (spring (first 1183) (second 1207) (length 35.014282)) + (spring (first 1206) (second 1208) (length 15.000000)) + (spring (first 1206) (second 1209) (length 15.000000)) + (spring (first 1208) (second 109) (length 36.249138)) + (spring (first 1209) (second 109) (length 36.249138)) + (spring (first 1206) (second 23) (length 73.348480)) + (spring (first 1206) (second 107) (length 74.148499)) + (spring (first 1207) (second 1262) (length 15.033297)) + (spring (first 1207) (second 1263) (length 15.000000)) + (spring (first 1262) (second 1183) (length 39.395432)) + (spring (first 1263) (second 1183) (length 37.696156)) + (spring (first 1207) (second 1141) (length 76.941536)) + (spring (first 1207) (second 1143) (length 77.929459)) + (spring (first 1208) (second 1398) (length 36.674240)) + (spring (first 1398) (second 1399) (length 15.556349)) + (spring (first 1399) (second 1400) (length 15.811388)) + (spring (first 1400) (second 1398) (length 16.492422)) + (spring (first 1398) (second 1206) (length 45.276924)) + (spring (first 1263) (second 1401) (length 39.357338)) + (spring (first 1401) (second 1402) (length 15.811388)) + (spring (first 1402) (second 1403) (length 15.297058)) + (spring (first 1403) (second 1401) (length 17.088007)) + (spring (first 1401) (second 1207) (length 48.104053)) + (spring (first 1262) (second 1754) (length 49.244289)) + (spring (first 1754) (second 1755) (length 15.000000)) + (spring (first 1755) (second 1756) (length 18.000000)) + (spring (first 1756) (second 1754) (length 15.000000)) + (spring (first 1262) (second 1757) (length 32.449963)) + (spring (first 1759) (second 1263) (length 32.015621)) + (spring (first 1759) (second 1757) (length 22.022715)) + (spring (first 1207) (second 1754) (length 58.796257)) + (spring (first 1208) (second 1760) (length 31.064449)) + (spring (first 1763) (second 1209) (length 30.805843)) + (spring (first 1763) (second 1760) (length 21.023796)) + (spring (first 1209) (second 1877) (length 49.193497)) + (spring (first 1877) (second 1878) (length 16.401220)) + (spring (first 1878) (second 1879) (length 19.026299)) + (spring (first 1879) (second 1877) (length 15.000000)) + (spring (first 1879) (second 1880) (length 41.629318)) + (spring (first 1880) (second 1755) (length 40.853397)) + (spring (first 1880) (second 2047) (length 34.014702)) + (spring (first 2047) (second 2048) (length 15.033297)) + (spring (first 2047) (second 2049) (length 15.000000)) + (spring (first 2048) (second 1880) (length 38.483765)) + (spring (first 2049) (second 1880) (length 36.769554)) + (spring (first 2047) (second 1879) (length 73.756355)) + (spring (first 2047) (second 1755) (length 73.756355)) + (spring (first 1206) (second 1877) (length 57.489128)) + (spring (first 2048) (second 3905) (length 33.286633)) + (spring (first 3905) (second 3906) (length 18.439089)) + (spring (first 3906) (second 3909) (length 18.384777)) + (spring (first 3909) (second 2049) (length 33.600594)) + (spring (first 2047) (second 3906) (length 33.015148)) + (spring (first 3909) (second 3905) (length 25.019993)) + (spring (first 2048) (second 4506) (length 36.249138)) + (spring (first 4506) (second 4507) (length 15.556349)) + (spring (first 4507) (second 4508) (length 16.492422)) + (spring (first 4508) (second 4506) (length 15.811388)) + (spring (first 4506) (second 2047) (length 43.863426)) + (spring (first 2049) (second 4509) (length 37.589893)) + (spring (first 4509) (second 4510) (length 15.231546)) + (spring (first 4510) (second 4511) (length 18.439089)) + (spring (first 4511) (second 4509) (length 15.620500)) + (spring (first 4509) (second 2047) (length 46.669048)) + (spring (first 3906) (second 5642) (length 235.000000)) + (spring (first 6565) (second 3906) (length 493.724609)) + (spring (first 3906) (second 6566) (length 494.413788)) + (spring (first 6566) (second 6565) (length 681.000000)) + (spring (first 5642) (second 6565) (length 361.564667)) + (spring (first 5642) (second 6566) (length 362.505157)) + (spring (first 1759) (second 7357) (length 15.556349)) + (spring (first 7357) (second 1757) (length 16.278820)) + (spring (first 7357) (second 1207) (length 31.016125)) + (spring (first 1763) (second 7358) (length 15.556349)) + (spring (first 7358) (second 1760) (length 15.620500)) + (spring (first 7358) (second 1206) (length 29.017237)) + (spring (first 7705) (second 5642) (length 138.195511)) + (spring (first 5642) (second 7706) (length 136.853943)) + (spring (first 7706) (second 7705) (length 123.000000)) + (spring (first 64) (second 108) (length 59.481091)) + (spring (first 8) (second 22) (length 60.083275)) + (spring (first 65) (second 1140) (length 58.523499)) + (spring (first 1144) (second 176) (length 57.870544)) + (spring (first 1262) (second 1756) (length 57.008770)) + (spring (first 1209) (second 1878) (length 58.249462)) + (spring (first 2049) (second 4510) (length 48.507732)) + (spring (first 2048) (second 4508) (length 49.030602)) + (spring (first 1208) (second 1400) (length 50.447994)) + (spring (first 1263) (second 1403) (length 52.392746)) + (spring (first 7) (second 19) (length 45.398239)) + (spring (first 177) (second 179) (length 42.426407)) + (spring (first 7705) (second 7357) (length 260.984680)) + (spring (first 7357) (second 6566) (length 358.765930)) + (spring (first 7706) (second 7358) (length 256.826782)) + (spring (first 7358) (second 6565) (length 358.273651)) + (spring (first 6) (second 11) (length 20.591261)) + (spring (first 6) (second 9) (length 20.248457)) + (spring (first 63) (second 68) (length 21.095022)) + (spring (first 63) (second 66) (length 21.095022)) + (spring (first 175) (second 876) (length 20.124611)) + (spring (first 175) (second 873) (length 20.124611)) + (spring (first 1207) (second 1759) (length 22.360680)) + (spring (first 1207) (second 1757) (length 22.472204)) + (spring (first 1206) (second 1763) (length 20.591261)) + (spring (first 1206) (second 1760) (length 20.248457)) + (spring (first 2047) (second 3909) (length 23.323807)) + (spring (first 2047) (second 3905) (length 23.021729)) + (spring (first 3906) (second 9097) (length 165.520386)) + (spring (first 3906) (second 9097) (length 165.520386)) + (spring (first 3906) (second 9098) (length 159.050308)) + (spring (first 3906) (second 9099) (length 160.798004)) + (spring (first 9099) (second 9098) (length 15.524175)) + (spring (first 9098) (second 9097) (length 15.297058)) + (spring (first 9097) (second 9100) (length 17.000000)) + (spring (first 9100) (second 9101) (length 18.027756)) + (spring (first 9101) (second 9102) (length 16.970562)) + (spring (first 9102) (second 9103) (length 16.124516)) + (spring (first 9103) (second 9104) (length 16.643316)) + (spring (first 9104) (second 9105) (length 15.033297)) + (spring (first 9105) (second 9099) (length 18.973665)) + (spring (first 9099) (second 9104) (length 33.376640)) + (spring (first 9099) (second 9103) (length 42.953465)) + (spring (first 9099) (second 9102) (length 50.606323)) + (spring (first 9099) (second 9101) (length 48.918301)) + (spring (first 9099) (second 9100) (length 40.496914)) + (spring (first 9099) (second 9097) (length 30.016663)) + (spring (first 9105) (second 9103) (length 28.301943)) + (spring (first 9105) (second 9102) (length 40.459858)) + (spring (first 9105) (second 9101) (length 45.221676)) + (spring (first 9105) (second 9100) (length 44.181442)) + (spring (first 9105) (second 9097) (length 40.706264)) + (spring (first 9105) (second 9098) (length 30.413813)) + (spring (first 9104) (second 9102) (length 31.953091)) + (spring (first 9104) (second 9101) (length 42.011902)) + (spring (first 9104) (second 9100) (length 47.010635)) + (spring (first 9104) (second 9097) (length 48.795490)) + (spring (first 9104) (second 9098) (length 42.059483)) + (spring (first 9104) (second 9099) (length 33.376640)) + (spring (first 9103) (second 9101) (length 29.732138)) + (spring (first 9103) (second 9100) (length 40.311287)) + (spring (first 9103) (second 9097) (length 47.853943)) + (spring (first 9103) (second 9098) (length 46.389652)) + (spring (first 9103) (second 9099) (length 42.953465)) + (spring (first 9103) (second 9105) (length 28.301943)) + (spring (first 9102) (second 9100) (length 32.695564)) + (spring (first 9102) (second 9097) (length 45.276924)) + (spring (first 9102) (second 9098) (length 49.030602)) + (spring (first 9102) (second 9099) (length 50.606323)) + (spring (first 9102) (second 9105) (length 40.459858)) + (spring (first 9102) (second 9104) (length 31.953091)) + (spring (first 9101) (second 9103) (length 29.732138)) + (spring (first 9101) (second 9104) (length 42.011902)) + (spring (first 9101) (second 9105) (length 45.221676)) + (spring (first 9101) (second 9099) (length 48.918301)) + (spring (first 9101) (second 9098) (length 42.190044)) + (spring (first 9101) (second 9097) (length 33.734257)) + (spring (first 9100) (second 9102) (length 32.695564)) + (spring (first 9100) (second 9103) (length 40.311287)) + (spring (first 9100) (second 9104) (length 47.010635)) + (spring (first 9100) (second 9105) (length 44.181442)) + (spring (first 9100) (second 9099) (length 40.496914)) + (spring (first 9100) (second 9098) (length 29.206163)) + (spring (first 9097) (second 9101) (length 33.734257)) + (spring (first 9097) (second 9102) (length 45.276924)) + (spring (first 9097) (second 9103) (length 47.853943)) + (spring (first 9097) (second 9104) (length 48.795490)) + (spring (first 9097) (second 9105) (length 40.706264)) + (spring (first 9097) (second 9099) (length 30.016663)) + (spring (first 9097) (second 9104) (length 48.795490)) + (spring (first 9097) (second 9104) (length 48.795490)) + (spring (first 9097) (second 9103) (length 47.853943)) + (spring (first 9097) (second 9102) (length 45.276924)) + (spring (first 9097) (second 9101) (length 33.734257)) + (spring (first 9097) (second 9102) (length 45.276924)) + (spring (first 9097) (second 9103) (length 47.853943)) + (spring (first 9097) (second 9104) (length 48.795490)) + (spring (first 9097) (second 9104) (length 48.795490)) + (spring (first 9097) (second 9105) (length 40.706264)) + (spring (first 9097) (second 9099) (length 30.016663)) + (spring (first 9098) (second 9100) (length 29.206163)) + (spring (first 9098) (second 9101) (length 42.190044)) + (spring (first 9098) (second 9102) (length 49.030602)) + (spring (first 9098) (second 9103) (length 46.389652)) + (spring (first 9098) (second 9104) (length 42.059483)) + (spring (first 9098) (second 9105) (length 30.413813)) + (spring (first 9099) (second 9097) (length 30.016663)) + (spring (first 9099) (second 9100) (length 40.496914)) + (spring (first 9099) (second 9101) (length 48.918301)) + (spring (first 9099) (second 9102) (length 50.606323)) + (spring (first 9099) (second 9103) (length 42.953465)) + (spring (first 9099) (second 9104) (length 33.376640)) + (spring (first 9105) (second 9098) (length 30.413813)) + (spring (first 9105) (second 9097) (length 40.706264)) + (spring (first 9105) (second 9100) (length 44.181442)) + (spring (first 9105) (second 9101) (length 45.221676)) + (spring (first 9105) (second 9102) (length 40.459858)) + (spring (first 9105) (second 9103) (length 28.301943)) + (spring (first 9105) (second 9126) (length 29.154760)) + (spring (first 9126) (second 9127) (length 31.827662)) + (spring (first 9127) (second 9128) (length 38.078865)) + (spring (first 9128) (second 9150) (length 30.413813)) + (spring (first 9150) (second 9151) (length 40.804413)) + (spring (first 9151) (second 2047) (length 46.615448)) + )) + +;; EOF ;; diff --git a/examples/colido.construo b/examples/colido.construo new file mode 100644 index 0000000..d215c34 --- /dev/null +++ b/examples/colido.construo @@ -0,0 +1,238 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 2) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos -146.292892 243.231781) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1) (pos -92.292847 243.231781) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos -78.292854 159.231873) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos -22.292839 76.231865) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 85.707146 12.231809) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 200.707092 -9.768106) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 316.707245 14.231808) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 396.707214 95.231888) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 433.707275 169.231781) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 451.707275 247.231781) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 509.707214 247.231781) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos 486.707306 159.231873) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos 445.707275 70.231865) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 338.707214 -35.768082) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos 200.707092 -59.768055) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 69.707153 -37.768085) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos -45.292839 33.231808) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 17) (pos -122.292877 142.231873) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 135.707138 -83.768036) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos 268.707275 -83.768036) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos 157.707092 -135.768066) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 250.707138 -136.768066) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 244.707092 -186.768158) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos 165.707092 -187.768143) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 187.707092 -228.768127) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 25) (pos 224.707092 -228.768127) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 191.707092 -275.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27) (pos 222.707092 -275.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos 185.707092 -313.768158) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 227.707092 -312.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos 149.707108 -299.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos 140.707108 -331.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 32) (pos 269.707275 -326.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 33) (pos 266.707245 -294.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 34) (pos 87.707146 -332.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 35) (pos 89.707146 -306.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos 329.707214 -301.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos 331.707214 -330.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos 23.707153 -312.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 39) (pos 23.707153 -338.768158) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 40) (pos 391.707214 -330.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 41) (pos 387.707214 -305.768188) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 42) (pos 184.707092 -337.768158) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 43) (pos 222.707092 -337.768158) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 45) (pos 53.787170 -78.127998) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 46) (pos 354.787231 -62.127979) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 47) (pos 197.787109 27.871872) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 48) (pos 91.787163 46.871918) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 49) (pos 307.787292 46.871918) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 50) (pos 136.000000 90.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 51) (pos 197.000000 91.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 52) (pos 256.000000 91.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 53) (pos 184.000000 -378.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 54) (pos 185.000000 -358.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 55) (pos 223.000000 -359.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 56) (pos 225.000000 -379.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 57) (pos 195.000000 -393.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 58) (pos 213.000000 -393.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 59) (pos 208.000000 -349.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 0) (second 1) (length 54.000046)) + (spring (first 1) (second 2) (length 85.158585)) + (spring (first 2) (second 3) (length 100.124939)) + (spring (first 3) (second 4) (length 125.538857)) + (spring (first 4) (second 5) (length 117.085373)) + (spring (first 5) (second 6) (length 118.456879)) + (spring (first 6) (second 7) (length 113.846420)) + (spring (first 7) (second 8) (length 82.734444)) + (spring (first 8) (second 9) (length 80.049988)) + (spring (first 9) (second 10) (length 57.999939)) + (spring (first 10) (second 11) (length 90.955925)) + (spring (first 11) (second 12) (length 97.989815)) + (spring (first 12) (second 13) (length 150.615417)) + (spring (first 13) (second 14) (length 140.071533)) + (spring (first 14) (second 15) (length 132.834412)) + (spring (first 15) (second 16) (length 135.151703)) + (spring (first 16) (second 17) (length 133.454193)) + (spring (first 17) (second 0) (length 103.812248)) + (spring (first 17) (second 2) (length 47.169926)) + (spring (first 16) (second 3) (length 48.764793)) + (spring (first 4) (second 15) (length 52.497517)) + (spring (first 5) (second 14) (length 49.999947)) + (spring (first 6) (second 13) (length 54.625889)) + (spring (first 7) (second 12) (length 55.009155)) + (spring (first 8) (second 11) (length 53.935158)) + (spring (first 0) (second 2) (length 108.074005)) + (spring (first 17) (second 3) (length 119.816559)) + (spring (first 16) (second 4) (length 132.672516)) + (spring (first 15) (second 5) (length 133.958878)) + (spring (first 5) (second 13) (length 140.428040)) + (spring (first 6) (second 12) (length 140.630768)) + (spring (first 7) (second 11) (length 110.435570)) + (spring (first 8) (second 10) (length 108.903587)) + (spring (first 15) (second 18) (length 80.448700)) + (spring (first 18) (second 19) (length 133.000137)) + (spring (first 19) (second 13) (length 84.876305)) + (spring (first 19) (second 14) (length 72.111191)) + (spring (first 14) (second 18) (length 69.289200)) + (spring (first 18) (second 20) (length 56.462387)) + (spring (first 20) (second 21) (length 93.005424)) + (spring (first 21) (second 19) (length 55.973282)) + (spring (first 21) (second 22) (length 50.358810)) + (spring (first 22) (second 23) (length 79.006332)) + (spring (first 23) (second 20) (length 52.611862)) + (spring (first 18) (second 21) (length 126.625443)) + (spring (first 20) (second 19) (length 122.576683)) + (spring (first 23) (second 21) (length 99.126259)) + (spring (first 22) (second 20) (length 100.846466)) + (spring (first 23) (second 24) (length 46.529549)) + (spring (first 24) (second 25) (length 37.000000)) + (spring (first 25) (second 22) (length 46.518787)) + (spring (first 25) (second 23) (length 71.847054)) + (spring (first 24) (second 22) (length 70.802521)) + (spring (first 24) (second 26) (length 47.169968)) + (spring (first 26) (second 27) (length 31.000000)) + (spring (first 27) (second 25) (length 47.042595)) + (spring (first 27) (second 24) (length 58.600391)) + (spring (first 26) (second 25) (length 57.428265)) + (spring (first 26) (second 23) (length 91.760605)) + (spring (first 27) (second 22) (length 91.678818)) + (spring (first 26) (second 28) (length 38.470737)) + (spring (first 28) (second 29) (length 42.011902)) + (spring (first 29) (second 27) (length 37.336308)) + (spring (first 28) (second 27) (length 53.037701)) + (spring (first 26) (second 29) (length 51.623638)) + (spring (first 26) (second 30) (length 48.373531)) + (spring (first 30) (second 31) (length 33.241539)) + (spring (first 31) (second 28) (length 48.466480)) + (spring (first 28) (second 30) (length 38.626392)) + (spring (first 31) (second 26) (length 75.742973)) + (spring (first 29) (second 32) (length 44.272060)) + (spring (first 32) (second 33) (length 32.140320)) + (spring (first 33) (second 27) (length 47.927170)) + (spring (first 29) (second 33) (length 42.953602)) + (spring (first 32) (second 27) (length 69.354286)) + (spring (first 31) (second 34) (length 53.009396)) + (spring (first 34) (second 35) (length 26.076809)) + (spring (first 35) (second 30) (length 60.406914)) + (spring (first 33) (second 36) (length 63.387665)) + (spring (first 36) (second 37) (length 29.068884)) + (spring (first 37) (second 32) (length 62.128838)) + (spring (first 32) (second 36) (length 64.999947)) + (spring (first 37) (second 33) (length 74.303406)) + (spring (first 34) (second 30) (length 70.235283)) + (spring (first 31) (second 35) (length 56.797852)) + (spring (first 35) (second 38) (length 66.272156)) + (spring (first 38) (second 39) (length 25.999969)) + (spring (first 39) (second 34) (length 64.280624)) + (spring (first 34) (second 38) (length 67.052208)) + (spring (first 39) (second 35) (length 73.348465)) + (spring (first 37) (second 40) (length 60.000000)) + (spring (first 40) (second 41) (length 25.317978)) + (spring (first 41) (second 36) (length 58.137768)) + (spring (first 37) (second 41) (length 61.326992)) + (spring (first 36) (second 40) (length 68.447060)) + (spring (first 31) (second 42) (length 44.407188)) + (spring (first 42) (second 43) (length 38.000000)) + (spring (first 43) (second 32) (length 48.270245)) + (spring (first 43) (second 29) (length 25.495068)) + (spring (first 42) (second 28) (length 24.020824)) + (spring (first 28) (second 43) (length 44.102154)) + (spring (first 42) (second 29) (length 49.739304)) + (spring (first 3) (second 15) (length 146.492279)) + (spring (first 7) (second 13) (length 143.265457)) + (spring (first 4) (second 18) (length 108.240334)) + (spring (first 18) (second 5) (length 98.493568)) + (spring (first 5) (second 19) (length 100.498825)) + (spring (first 19) (second 6) (length 109.123627)) + (spring (first 1) (second 17) (length 105.361206)) + (spring (first 2) (second 16) (length 130.249832)) + (spring (first 8) (second 12) (length 99.724541)) + (spring (first 11) (second 9) (length 94.704727)) + (spring (first 15) (second 45) (length 43.386269)) + (spring (first 45) (second 18) (length 82.113892)) + (spring (first 45) (second 16) (length 149.056549)) + (spring (first 19) (second 46) (length 88.758385)) + (spring (first 46) (second 13) (length 30.877357)) + (spring (first 46) (second 12) (length 160.578903)) + (spring (first 4) (second 47) (length 113.165939)) + (spring (first 47) (second 6) (length 119.699829)) + (spring (first 47) (second 5) (length 37.753071)) + (spring (first 3) (second 48) (length 117.797508)) + (spring (first 48) (second 4) (length 35.169643)) + (spring (first 48) (second 47) (length 107.689323)) + (spring (first 47) (second 49) (length 111.629036)) + (spring (first 49) (second 6) (length 33.836998)) + (spring (first 49) (second 7) (length 101.219757)) + (spring (first 1) (second 3) (length 181.077255)) + (spring (first 7) (second 9) (length 161.644592)) + (spring (first 8) (second 49) (length 175.578415)) + (spring (first 2) (second 48) (length 203.843002)) + (spring (first 15) (second 20) (length 131.711746)) + (spring (first 21) (second 13) (length 133.958984)) + (spring (first 48) (second 50) (length 61.764118)) + (spring (first 50) (second 51) (length 61.008198)) + (spring (first 51) (second 47) (length 63.133034)) + (spring (first 51) (second 52) (length 59.000000)) + (spring (first 52) (second 49) (length 68.038307)) + (spring (first 52) (second 47) (length 85.871422)) + (spring (first 50) (second 47) (length 87.621635)) + (spring (first 50) (second 5) (length 118.914604)) + (spring (first 5) (second 52) (length 114.941360)) + (spring (first 52) (second 14) (length 160.587402)) + (spring (first 14) (second 50) (length 163.148636)) + (spring (first 53) (second 54) (length 20.024984)) + (spring (first 54) (second 55) (length 38.013157)) + (spring (first 55) (second 56) (length 20.099751)) + (spring (first 56) (second 53) (length 41.012192)) + (spring (first 53) (second 55) (length 43.382023)) + (spring (first 56) (second 54) (length 45.177429)) + (spring (first 53) (second 57) (length 18.601076)) + (spring (first 57) (second 58) (length 18.000000)) + (spring (first 58) (second 56) (length 18.439089)) + (spring (first 55) (second 59) (length 18.027756)) + (spring (first 59) (second 54) (length 24.698177)) + (spring (first 59) (second 42) (length 25.859501)) + (spring (first 59) (second 43) (length 18.505482)) + (spring (first 29) (second 59) (length 41.244560)) + (spring (first 59) (second 28) (length 41.692402)) + (spring (first 56) (second 42) (length 57.650528)) + (spring (first 53) (second 43) (length 55.828667)) + (spring (first 57) (second 56) (length 33.105892)) + (spring (first 58) (second 53) (length 32.649654)) + (spring (first 57) (second 43) (length 61.791904)) + (spring (first 58) (second 42) (length 62.056789)) + (spring (first 48) (second 52) (length 170.038651)) + (spring (first 49) (second 50) (length 177.118332)) + (spring (first 51) (second 4) (length 136.347092)) + (spring (first 6) (second 51) (length 142.208221)) + )) + +;; EOF ;; diff --git a/examples/complex.construo b/examples/complex.construo new file mode 100644 index 0000000..288c376 --- /dev/null +++ b/examples/complex.construo @@ -0,0 +1,724 @@ + +(construo-scene + (particles + (particle (id 1) (pos 0 600 0 ) (velocity 21.4383 -20.226 0 ) ) + (particle (id 2) (pos 304.425 200.009 0 ) (velocity -300.199 -170.811 0 ) ) + (particle (id 3) (pos 279.238 405.26 0 ) (velocity -1051.21 -759.716 0 ) ) + (particle (id 4) (pos 515.625 264.869 0 ) (velocity -303.354 -325.517 0 ) ) + (particle (id 5) (pos 502.529 440.343 0 ) (velocity 1061.98 -889.051 0 ) ) + (particle (id 6) (pos 486.313 253.441 0 ) (velocity 1032.11 -177.311 0 ) ) + (particle (id 7) (pos 0 600 0 ) (velocity 26.0769 -9.94746 0 ) ) + (particle (id 8) (pos 800 600 0 ) (velocity -38.858 -28.5178 0 ) ) + (particle (id 255) (pos 547.631 458.954 0 ) (velocity 204.476 348.621 0 ) ) + (particle (id 256) (pos 260.171 228.314 0 ) (velocity 301.892 -10.4807 0 ) ) + (particle (id 257) (pos 253.816 265.424 0 ) (velocity -113.555 -438.753 0 ) ) + (particle (id 258) (pos 268.157 296.486 0 ) (velocity -630.202 -196.34 0 ) ) + (particle (id 259) (pos 236.177 321.454 0 ) (velocity 146.22 39.8539 0 ) ) + (particle (id 260) (pos 288.11 234.679 0 ) (velocity -286.747 -581.142 0 ) ) + (particle (id 261) (pos 265.881 333.589 0 ) (velocity -78.8015 -572.489 0 ) ) + (particle (id 262) (pos 362.686 166.203 0 ) (velocity 692.698 276.941 0 ) ) + (particle (id 263) (pos 375.255 199.345 0 ) (velocity 440.672 652.269 0 ) ) + (particle (id 264) (pos 434.567 173.023 0 ) (velocity -580.108 -89.4578 0 ) ) + (particle (id 265) (pos 439.134 209.532 0 ) (velocity 247.199 -543.324 0 ) ) + (particle (id 266) (pos 475.059 180.629 0 ) (velocity 386.258 33.6568 0 ) ) + (particle (id 267) (pos 483.119 223.349 0 ) (velocity 29.2114 -300.934 0 ) ) + (particle (id 268) (pos 519.608 190.638 0 ) (velocity 458.467 -525.106 0 ) ) + (particle (id 269) (pos 526.936 233.749 0 ) (velocity 310.92 -184.807 0 ) ) + (particle (id 270) (pos 554.422 270.438 0 ) (velocity 969.961 -617.178 0 ) ) + (particle (id 271) (pos 592.687 236.472 0 ) (velocity 56.6366 -51.9778 0 ) ) + (particle (id 272) (pos 562.812 203.962 0 ) (velocity -435.806 422.07 0 ) ) + (particle (id 273) (pos 557.32 301.739 0 ) (velocity 59.1563 -806.206 0 ) ) + (particle (id 274) (pos 611.113 300.78 0 ) (velocity -204.83 80.3128 0 ) ) + (particle (id 275) (pos 538.848 350.737 0 ) (velocity -275.153 165.026 0 ) ) + (particle (id 276) (pos 589.023 358.508 0 ) (velocity 414.407 204.194 0 ) ) + (particle (id 277) (pos 544.159 383.214 0 ) (velocity 428.933 586.376 0 ) ) + (particle (id 278) (pos 579.283 393.971 0 ) (velocity -147.142 640.878 0 ) ) + (particle (id 279) (pos 555.395 422.975 0 ) (velocity 519.015 -162.8 0 ) ) + (particle (id 313) (pos 581.334 433.235 0 ) (velocity -280.179 252.603 0 ) ) + (particle (id 314) (pos 610.368 406.174 0 ) (velocity -32.4588 136.337 0 ) ) + (particle (id 315) (pos 626.534 440.507 0 ) (velocity 373.167 965.374 0 ) ) + (particle (id 316) (pos 675.44 407.452 0 ) (velocity 301.504 -475.198 0 ) ) + (particle (id 317) (pos 651.265 442.11 0 ) (velocity -183.164 -348.066 0 ) ) + (particle (id 318) (pos 699.268 443.321 0 ) (velocity 113.024 498.537 0 ) ) + (particle (id 319) (pos 735.02 399.12 0 ) (velocity 265.531 -531.311 0 ) ) + (particle (id 320) (pos 739.236 419.314 0 ) (velocity 226.024 577.023 0 ) ) + (particle (id 536) (pos 582.051 437.409 0 ) (velocity -438.737 486.365 0 ) ) + (particle (id 843) (pos 529.37 152.296 0 ) (velocity 848.231 -69.7732 0 ) ) + (particle (id 844) (pos 586.274 179.117 0 ) (velocity 243.2 370.619 0 ) ) + (particle (id 1973) (pos 688.869 351.167 0 ) (velocity -668.101 466.189 0 ) ) + (particle (id 1974) (pos 726.29 333.677 0 ) (velocity 765.557 62.2285 0 ) ) + (particle (id 1975) (pos 692.934 289.678 0 ) (velocity -18.7577 -56.0383 0 ) ) + (particle (id 1976) (pos 716.688 250.447 0 ) (velocity 631.952 -467.637 0 ) ) + (particle (id 1977) (pos 693.442 218.4 0 ) (velocity 94.0563 103.903 0 ) ) + (particle (id 1978) (pos 718.686 174.808 0 ) (velocity 298.867 -1309.47 0 ) ) + (particle (id 1979) (pos 673.805 128.894 0 ) (velocity 209.611 619.208 0 ) ) + (particle (id 1980) (pos 706.964 98.4553 0 ) (velocity 815.003 894.319 0 ) ) + (particle (id 2353) (pos 620.06 128.056 0 ) (velocity 492.247 -391.64 0 ) ) + (particle (id 2354) (pos 631.936 89.731 0 ) (velocity 520.49 436.046 0 ) ) + (particle (id 2355) (pos 662.265 100.062 0 ) (velocity -638.814 733.455 0 ) ) + (particle (id 2356) (pos 560.644 100.479 0 ) (velocity -1359.05 78.1399 0 ) ) + (particle (id 2357) (pos 504.983 94.145 0 ) (velocity 218.55 -276.736 0 ) ) + (particle (id 2358) (pos 533.68 64.5419 0 ) (velocity 178.473 -77.1395 0 ) ) + (particle (id 2359) (pos 430.573 66.7756 0 ) (velocity 1300.44 -196.213 0 ) ) + (particle (id 2360) (pos 454.815 75.0333 0 ) (velocity -863.015 909.658 0 ) ) + (particle (id 2361) (pos 411.167 91.2202 0 ) (velocity 755.165 -101.961 0 ) ) + (particle (id 2362) (pos 362.285 91.1109 0 ) (velocity -96.4117 -1.99168 0 ) ) + (particle (id 2363) (pos 364.485 58.3313 0 ) (velocity 215.389 305.771 0 ) ) + (particle (id 2364) (pos 296.993 58.6276 0 ) (velocity -474.057 -184.074 0 ) ) + (particle (id 2365) (pos 312.009 91.499 0 ) (velocity 112.252 963.719 0 ) ) + (particle (id 3151) (pos 620.891 372.499 0 ) (velocity -241.419 -59.9848 0 ) ) + (particle (id 3152) (pos 645.178 335.934 0 ) (velocity 597.872 -514.214 0 ) ) + (particle (id 3153) (pos 647.102 265.544 0 ) (velocity 589.6 -310.818 0 ) ) + (particle (id 3154) (pos 641.561 226.231 0 ) (velocity 59.2453 48.5058 0 ) ) + (particle (id 3155) (pos 631.42 169.922 0 ) (velocity 1169.23 -653.992 0 ) ) + (particle (id 3656) (pos 434.893 128.078 0 ) (velocity -416.512 -330.936 0 ) ) + (particle (id 3657) (pos 491.755 123.955 0 ) (velocity 1013.94 211.75 0 ) ) + (particle (id 3658) (pos 569.431 134.367 0 ) (velocity -919.386 506.903 0 ) ) + (particle (id 3659) (pos 608.284 159.275 0 ) (velocity 81.2505 143.287 0 ) ) + (particle (id 4845) (pos 316.335 136.431 0 ) (velocity -179.886 334.113 0 ) ) + (particle (id 4846) (pos 270.776 106.069 0 ) (velocity 406.061 396.236 0 ) ) + (particle (id 4847) (pos 234.167 67.8834 0 ) (velocity -908.635 401.936 0 ) ) + (particle (id 4848) (pos 212.381 132.039 0 ) (velocity 14.1553 128.129 0 ) ) + (particle (id 4849) (pos 221.666 229.038 0 ) (velocity -183.913 -249.983 0 ) ) + (particle (id 4850) (pos 203.173 268.855 0 ) (velocity 210.921 829.638 0 ) ) + (particle (id 5626) (pos 524.594 415.799 0 ) (velocity -1389.17 -390.569 0 ) ) + (particle (id 6793) (pos 145.745 91.1333 0 ) (velocity 892.678 163.176 0 ) ) + (particle (id 6794) (pos 156.455 165.288 0 ) (velocity 600.72 -400.717 0 ) ) + (particle (id 6795) (pos 168.909 253.401 0 ) (velocity 1033.17 -12.9099 0 ) ) + (particle (id 6796) (pos 181.572 336 0 ) (velocity -488.656 -835 0 ) ) + (particle (id 6797) (pos 239.007 379.215 0 ) (velocity 771.591 357.213 0 ) ) + (particle (id 6798) (pos 171.669 400.53 0 ) (velocity 828.27 -100.247 0 ) ) + (particle (id 6799) (pos 104.145 402.548 0 ) (velocity 216.069 776.116 0 ) ) + (particle (id 6800) (pos 117.512 323.005 0 ) (velocity 176.438 -122.029 0 ) ) + (particle (id 6801) (pos 118.428 256.598 0 ) (velocity -536.663 -485.898 0 ) ) + (particle (id 6802) (pos 105.583 203.18 0 ) (velocity 497.532 670.13 0 ) ) + (particle (id 6803) (pos 95.7195 163.473 0 ) (velocity 667.084 491.662 0 ) ) + (particle (id 6804) (pos 107.706 233.441 0 ) (velocity -876.637 1077.23 0 ) ) + (particle (id 7868) (pos 376.357 279.388 0 ) (velocity 580.458 -1110.87 0 ) ) + (particle (id 7869) (pos 356.465 303.222 0 ) (velocity -216.029 1599.19 0 ) ) + (particle (id 7870) (pos 467.682 318.363 0 ) (velocity -687.856 35.3209 0 ) ) + (particle (id 7871) (pos 409.546 308.853 0 ) (velocity -618.194 -1077.55 0 ) ) + (particle (id 10455) (pos 155.257 447.785 0 ) (velocity -824.755 20.7439 0 ) ) + (particle (id 10722) (pos 700.842 474.534 0 ) (velocity -185.785 -221.37 0 ) ) + (particle (id 14671) (pos 570.699 508.521 0 ) (velocity 140.529 -645.405 0 ) ) + (particle (id 14672) (pos 533.784 535.009 0 ) (velocity -236.616 -203.883 0 ) ) + (particle (id 14673) (pos 581.85 577.339 0 ) (velocity 164.325 -5.64906 0 ) ) + (particle (id 14674) (pos 644.772 524.36 0 ) (velocity -53.2514 -108.899 0 ) ) + (particle (id 14675) (pos 689.394 552.351 0 ) (velocity -396.925 831.239 0 ) ) + (particle (id 14676) (pos 746.076 514.564 0 ) (velocity 507.879 -840.5 0 ) ) + (particle (id 19714) (pos 228.503 349.513 0 ) (velocity -339.625 1047 0 ) ) + (particle (id 19715) (pos 205.935 360.452 0 ) (velocity -1258.27 -1726.91 0 ) ) + (particle (id 19716) (pos 310.281 411.191 0 ) (velocity -677.364 622.06 0 ) ) + (particle (id 19717) (pos 288.934 457.978 0 ) (velocity 765.957 1108.77 0 ) ) + (particle (id 19718) (pos 221.981 490.067 0 ) (velocity 313.802 487.112 0 ) ) + (particle (id 19719) (pos 161.448 511.706 0 ) (velocity -1655.08 1014.5 0 ) ) + (particle (id 19720) (pos 256.214 527.367 0 ) (velocity 295.935 -445.731 0 ) ) + (particle (id 19721) (pos 158.85 557.618 0 ) (velocity 413.951 -175.327 0 ) ) + (particle (id 19722) (pos 332.367 493.786 0 ) (velocity -355.643 694.33 0 ) ) + (particle (id 19723) (pos 348.317 443.083 0 ) (velocity -1277.9 -949.554 0 ) ) + (particle (id 19724) (pos 91.0341 526.436 0 ) (velocity 323.651 -1264.36 0 ) ) + (particle (id 19725) (pos 374.165 600 0 ) (velocity 5.07771 -8.9977 0 ) ) + (particle (id 19726) (pos 325.326 202.601 0 ) (velocity -665.538 -171.222 0 ) ) + (particle (id 19727) (pos 558.974 172.622 0 ) (velocity -152.417 536.206 0 ) ) + (particle (id 19847) (pos 715.065 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 19848) (pos 722.533 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 19849) (pos 732.471 373.195 0 ) (velocity 590.781 -718.205 0 ) ) + (particle (id 19850) (pos 731.022 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 19851) (pos 738.49 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 19852) (pos 704.969 112.253 0 ) (velocity 1129.35 -183.269 0 ) ) + (particle (id 19853) (pos 731.71 134.021 0 ) (velocity -2133.28 904.574 0 ) ) + (particle (id 19854) (pos 781.792 300.556 0 ) (velocity -2021.43 2820.66 0 ) ) + (particle (id 19855) (pos 773.015 330.978 0 ) (velocity -1081.65 1195.12 0 ) ) + (particle (id 19856) (pos 717.565 426.657 0 ) (velocity 1329.43 1664.93 0 ) ) + (particle (id 19857) (pos 800 356.276 0 ) (velocity -10.9715 -15.6932 0 ) ) + (particle (id 19858) (pos 683.244 288.375 0 ) (velocity -1495.7 -423.294 0 ) ) + (particle (id 19859) (pos 775.337 186.995 0 ) (velocity 51.1814 -1183.13 0 ) ) + (particle (id 19860) (pos 757.64 91.0205 0 ) (velocity -1609.05 -241.902 0 ) ) + (particle (id 19861) (pos 672.105 220.619 0 ) (velocity -2441.57 -2998.39 0 ) ) + (particle (id 19862) (pos 633.462 104.647 0 ) (velocity -325.9 1307.35 0 ) ) + (particle (id 19863) (pos 661.804 176.047 0 ) (velocity 262.774 74.9223 0 ) ) + (particle (id 19864) (pos 759.685 73.8169 0 ) (velocity 197.213 -402.909 0 ) ) + (particle (id 19865) (pos 788.181 117.855 0 ) (velocity 1632 4379.57 0 ) ) + (particle (id 19866) (pos 663.902 213.307 0 ) (velocity 1410.28 -69.0867 0 ) ) + (particle (id 19867) (pos 745 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 19868) (pos 636.943 101.221 0 ) (velocity 512.033 -351.901 0 ) ) + (particle (id 19869) (pos 599.304 142.444 0 ) (velocity 1611.82 1052.92 0 ) ) + (particle (id 19870) (pos 746.968 69.268 0 ) (velocity 158.419 -2095.41 0 ) ) + (particle (id 19871) (pos 726.264 232.786 0 ) (velocity -152.56 3309.08 0 ) ) + (particle (id 19872) (pos 439.151 164.715 0 ) (velocity -765.761 355.213 0 ) ) + (particle (id 19873) (pos 675.089 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 19874) (pos 673.599 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 19875) (pos 657.872 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 19876) (pos 675.124 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 19877) (pos 514.446 189.761 0 ) (velocity -1151.33 1205.58 0 ) ) + (particle (id 19878) (pos 800 149.786 0 ) (velocity -20.1567 -6.08694 0 ) ) + (particle (id 19879) (pos 559.873 48.6304 0 ) (velocity 1317.15 947.517 0 ) ) + (particle (id 19880) (pos 744.165 149.987 0 ) (velocity 499.408 -280.497 0 ) ) + (particle (id 19881) (pos 154.756 132.55 0 ) (velocity 2147.91 -782.738 0 ) ) + (particle (id 19882) (pos 218.643 164.988 0 ) (velocity -883.343 1921.45 0 ) ) + (particle (id 19883) (pos 119.524 121.512 0 ) (velocity -557.888 -1140.86 0 ) ) + (particle (id 19884) (pos 69.2702 119.176 0 ) (velocity -1133.12 -2993.87 0 ) ) + (particle (id 19885) (pos 94.5984 26.3866 0 ) (velocity 1196.73 -2514.58 0 ) ) + (particle (id 19886) (pos 71.6692 44.5988 0 ) (velocity -295.257 379.991 0 ) ) + (particle (id 19887) (pos 69.7331 57.1708 0 ) (velocity -96.9003 -471.203 0 ) ) + (particle (id 19888) (pos 217.918 98.5464 0 ) (velocity 946.151 -3525.9 0 ) ) + (particle (id 19889) (pos 69.0757 255.723 0 ) (velocity -208.449 -204.595 0 ) ) + (particle (id 20052) (pos 345.427 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 20053) (pos 204.529 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 20054) (pos 437.799 404.669 0 ) (velocity -273.382 948.395 0 ) ) + (particle (id 20055) (pos 213.094 335.656 0 ) (velocity -1034.11 468.796 0 ) ) + (particle (id 20056) (pos 246.575 24.8201 0 ) (velocity -278.906 247.857 0 ) ) + (particle (id 20057) (pos 288.652 29.127 0 ) (velocity -322.632 66.9866 0 ) ) + (particle (id 20058) (pos 356.306 29.6223 0 ) (velocity 159.711 252.147 0 ) ) + (particle (id 20059) (pos 466.407 40.3433 0 ) (velocity 118.361 -761.869 0 ) ) + (particle (id 20060) (pos 654.237 38.4023 0 ) (velocity 339.917 -827.566 0 ) ) + (particle (id 20061) (pos 749.529 39.4776 0 ) (velocity 592.066 469.124 0 ) ) + (particle (id 20062) (pos 104.139 21.0225 0 ) (velocity 742.693 -1656.39 0 ) ) + (particle (id 20063) (pos 60.5155 17.2755 0 ) (velocity -119.755 149.303 0 ) ) + (particle (id 20064) (pos 16.4807 33.567 0 ) (velocity -883.307 -221.759 0 ) ) + (particle (id 20065) (pos 13.8837 79.9392 0 ) (velocity 742.143 -34.7809 0 ) ) + (particle (id 20066) (pos 21.6803 143.676 0 ) (velocity 165.61 679.234 0 ) ) + (particle (id 20067) (pos 53.6382 137.851 0 ) (velocity 572.724 1147.11 0 ) ) + (particle (id 20068) (pos 49.4293 88.502 0 ) (velocity 908.486 176.423 0 ) ) + (particle (id 20248) (pos 745.232 241.551 0 ) (velocity 221.533 46.3339 0 ) ) + (particle (id 20249) (pos 777.655 270.276 0 ) (velocity 232.845 -24.6112 0 ) ) + (particle (id 20250) (pos 756.813 323.352 0 ) (velocity 346.249 347.975 0 ) ) + (particle (id 20251) (pos 777.698 223.017 0 ) (velocity 338.692 500.882 0 ) ) + (particle (id 20252) (pos 743.602 206.155 0 ) (velocity 55.5301 -537.94 0 ) ) + (particle (id 20253) (pos 737.718 411.801 0 ) (velocity 144.801 323.107 0 ) ) + (particle (id 20254) (pos 728.866 427.109 0 ) (velocity 842.379 1168.29 0 ) ) + (particle (id 20255) (pos 719.416 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 20256) (pos 665.03 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 20257) (pos 527.059 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 20258) (pos 518.723 600 0 ) (velocity 0.00102073 -1.66667 0 ) ) + (particle (id 20259) (pos 557.093 431.091 0 ) (velocity 1982.91 -691.532 0 ) ) + (particle (id 20260) (pos 525.439 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 20261) (pos 522.693 422.746 0 ) (velocity -1187.39 -548.902 0 ) ) + (particle (id 20262) (pos 511.483 600 0 ) (velocity -0.00102073 -1.66667 0 ) ) + (particle (id 20263) (pos 691.73 586.359 0 ) (velocity -125.906 6331.42 0 ) ) + (particle (id 20264) (pos 708.487 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 20265) (pos 695.598 481.131 0 ) (velocity -1028.38 -1212.28 0 ) ) + (particle (id 20266) (pos 654.384 600 0 ) (velocity 0 -1.66667 0 ) ) + (particle (id 20267) (pos 663.964 443.405 0 ) (velocity 874.063 -1176.47 0 ) ) + (particle (id 20268) (pos 614.209 438.434 0 ) (velocity -502.174 -285.751 0 ) ) + (particle (id 20269) (pos 697.298 448.17 0 ) (velocity -155.03 283.889 0 ) ) + (particle (id 20270) (pos 690.599 581.273 0 ) (velocity -143.332 6632.94 0 ) ) + (particle (id 20271) (pos 23 198 0 ) (velocity 0 0 0 ) ) + (particle (id 20272) (pos 69 205 0 ) (velocity 0 0 0 ) ) + (particle (id 20273) (pos 39 243 0 ) (velocity 0 0 0 ) ) + (particle (id 20274) (pos 44 294 0 ) (velocity 0 0 0 ) ) + (particle (id 20275) (pos 19 270 0 ) (velocity 0 0 0 ) ) + (particle (id 20276) (pos 24 336 0 ) (velocity 0 0 0 ) ) + (particle (id 20277) (pos 56 325 0 ) (velocity 0 0 0 ) ) + (particle (id 20278) (pos 98 297 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 2)(second 3)) + (spring (first 4)(second 5)) + (spring (first 2)(second 6)) + (spring (first 6)(second 4)) + (spring (first 3)(second 7)) + (spring (first 5)(second 8)) + (spring (first 7)(second 8)) + (spring (first 3)(second 5)) + (spring (first 6)(second 3)) + (spring (first 2)(second 6)) + (spring (first 5)(second 6)) + (spring (first 255)(second 5)) + (spring (first 255)(second 8)) + (spring (first 2)(second 256)) + (spring (first 256)(second 257)) + (spring (first 257)(second 258)) + (spring (first 258)(second 259)) + (spring (first 259)(second 3)) + (spring (first 259)(second 257)) + (spring (first 256)(second 258)) + (spring (first 256)(second 260)) + (spring (first 260)(second 258)) + (spring (first 260)(second 2)) + (spring (first 258)(second 261)) + (spring (first 261)(second 3)) + (spring (first 261)(second 259)) + (spring (first 2)(second 262)) + (spring (first 262)(second 263)) + (spring (first 263)(second 264)) + (spring (first 264)(second 265)) + (spring (first 265)(second 266)) + (spring (first 266)(second 267)) + (spring (first 267)(second 268)) + (spring (first 268)(second 269)) + (spring (first 269)(second 4)) + (spring (first 269)(second 267)) + (spring (first 267)(second 265)) + (spring (first 265)(second 263)) + (spring (first 263)(second 2)) + (spring (first 262)(second 264)) + (spring (first 264)(second 266)) + (spring (first 268)(second 266)) + (spring (first 5)(second 7)) + (spring (first 3)(second 8)) + (spring (first 269)(second 270)) + (spring (first 270)(second 271)) + (spring (first 271)(second 269)) + (spring (first 269)(second 272)) + (spring (first 272)(second 268)) + (spring (first 272)(second 271)) + (spring (first 270)(second 273)) + (spring (first 273)(second 274)) + (spring (first 274)(second 271)) + (spring (first 270)(second 274)) + (spring (first 273)(second 275)) + (spring (first 275)(second 274)) + (spring (first 275)(second 276)) + (spring (first 276)(second 274)) + (spring (first 276)(second 277)) + (spring (first 277)(second 275)) + (spring (first 277)(second 278)) + (spring (first 278)(second 276)) + (spring (first 278)(second 279)) + (spring (first 279)(second 277)) + (spring (first 279)(second 313)) + (spring (first 313)(second 278)) + (spring (first 313)(second 314)) + (spring (first 314)(second 278)) + (spring (first 314)(second 315)) + (spring (first 313)(second 315)) + (spring (first 314)(second 316)) + (spring (first 316)(second 317)) + (spring (first 317)(second 314)) + (spring (first 315)(second 316)) + (spring (first 317)(second 318)) + (spring (first 318)(second 316)) + (spring (first 318)(second 319)) + (spring (first 319)(second 316)) + (spring (first 320)(second 318)) + (spring (first 5)(second 536)) + (spring (first 536)(second 8)) + (spring (first 536)(second 7)) + (spring (first 5)(second 255)) + (spring (first 255)(second 536)) + (spring (first 255)(second 7)) + (spring (first 266)(second 843)) + (spring (first 843)(second 268)) + (spring (first 843)(second 272)) + (spring (first 843)(second 844)) + (spring (first 844)(second 271)) + (spring (first 844)(second 272)) + (spring (first 316)(second 1973)) + (spring (first 1973)(second 319)) + (spring (first 1973)(second 1974)) + (spring (first 1974)(second 319)) + (spring (first 1974)(second 1975)) + (spring (first 1975)(second 1973)) + (spring (first 1975)(second 1976)) + (spring (first 1976)(second 1974)) + (spring (first 1976)(second 1977)) + (spring (first 1977)(second 1975)) + (spring (first 1977)(second 1978)) + (spring (first 1978)(second 1979)) + (spring (first 1979)(second 1977)) + (spring (first 1979)(second 1980)) + (spring (first 1980)(second 1978)) + (spring (first 1978)(second 1976)) + (spring (first 1979)(second 2353)) + (spring (first 2353)(second 2354)) + (spring (first 1980)(second 2355)) + (spring (first 2355)(second 2354)) + (spring (first 2354)(second 1979)) + (spring (first 2354)(second 2356)) + (spring (first 2356)(second 2353)) + (spring (first 2356)(second 2357)) + (spring (first 2357)(second 2358)) + (spring (first 2358)(second 2356)) + (spring (first 2358)(second 2354)) + (spring (first 2356)(second 2358)) + (spring (first 2358)(second 2359)) + (spring (first 2357)(second 2360)) + (spring (first 2360)(second 2359)) + (spring (first 2360)(second 2359)) + (spring (first 2359)(second 2361)) + (spring (first 2361)(second 2357)) + (spring (first 2360)(second 2361)) + (spring (first 2361)(second 2362)) + (spring (first 2362)(second 2363)) + (spring (first 2361)(second 2363)) + (spring (first 2359)(second 2363)) + (spring (first 2363)(second 2364)) + (spring (first 2364)(second 2362)) + (spring (first 2364)(second 2365)) + (spring (first 2362)(second 2365)) + (spring (first 276)(second 3151)) + (spring (first 3151)(second 314)) + (spring (first 3151)(second 316)) + (spring (first 3151)(second 3152)) + (spring (first 3152)(second 1973)) + (spring (first 3152)(second 274)) + (spring (first 1975)(second 3153)) + (spring (first 3153)(second 3152)) + (spring (first 3153)(second 274)) + (spring (first 3153)(second 3154)) + (spring (first 3154)(second 271)) + (spring (first 1977)(second 3154)) + (spring (first 3154)(second 3155)) + (spring (first 3155)(second 844)) + (spring (first 3155)(second 1979)) + (spring (first 2362)(second 262)) + (spring (first 2361)(second 3656)) + (spring (first 3656)(second 264)) + (spring (first 2357)(second 3657)) + (spring (first 3657)(second 843)) + (spring (first 3657)(second 3656)) + (spring (first 2353)(second 3658)) + (spring (first 3658)(second 843)) + (spring (first 3658)(second 2356)) + (spring (first 3658)(second 3659)) + (spring (first 3659)(second 3155)) + (spring (first 3659)(second 1979)) + (spring (first 2365)(second 4845)) + (spring (first 4845)(second 262)) + (spring (first 4845)(second 2)) + (spring (first 4845)(second 256)) + (spring (first 4845)(second 4846)) + (spring (first 4846)(second 256)) + (spring (first 4846)(second 2365)) + (spring (first 2364)(second 4846)) + (spring (first 2364)(second 4847)) + (spring (first 4847)(second 4846)) + (spring (first 4847)(second 4848)) + (spring (first 4848)(second 256)) + (spring (first 4848)(second 4849)) + (spring (first 4849)(second 257)) + (spring (first 4849)(second 4850)) + (spring (first 4850)(second 259)) + (spring (first 536)(second 5)) + (spring (first 5626)(second 536)) + (spring (first 5626)(second 5)) + (spring (first 5626)(second 269)) + (spring (first 3)(second 269)) + (spring (first 3)(second 5626)) + (spring (first 5626)(second 1)) + (spring (first 5626)(second 8)) + (spring (first 4847)(second 6793)) + (spring (first 6793)(second 4848)) + (spring (first 6793)(second 6794)) + (spring (first 6794)(second 4848)) + (spring (first 6794)(second 4849)) + (spring (first 6794)(second 6795)) + (spring (first 6795)(second 4850)) + (spring (first 6795)(second 4849)) + (spring (first 6795)(second 6796)) + (spring (first 261)(second 259)) + (spring (first 6796)(second 259)) + (spring (first 6796)(second 6797)) + (spring (first 6797)(second 3)) + (spring (first 6796)(second 6798)) + (spring (first 6797)(second 6798)) + (spring (first 6798)(second 3)) + (spring (first 6798)(second 6799)) + (spring (first 6799)(second 6796)) + (spring (first 6799)(second 6800)) + (spring (first 6796)(second 6800)) + (spring (first 6800)(second 6801)) + (spring (first 6801)(second 6795)) + (spring (first 6801)(second 6802)) + (spring (first 6794)(second 6802)) + (spring (first 6803)(second 6793)) + (spring (first 6803)(second 6804)) + (spring (first 6802)(second 6804)) + (spring (first 2)(second 7868)) + (spring (first 7868)(second 269)) + (spring (first 7868)(second 3)) + (spring (first 7869)(second 7868)) + (spring (first 5626)(second 7868)) + (spring (first 269)(second 7870)) + (spring (first 7870)(second 5626)) + (spring (first 7870)(second 7871)) + (spring (first 7871)(second 7868)) + (spring (first 275)(second 7870)) + (spring (first 7870)(second 273)) + (spring (first 3)(second 10455)) + (spring (first 10455)(second 1)) + (spring (first 10455)(second 6798)) + (spring (first 10455)(second 6799)) + (spring (first 315)(second 255)) + (spring (first 318)(second 255)) + (spring (first 320)(second 10722)) + (spring (first 10722)(second 255)) + (spring (first 10722)(second 8)) + (spring (first 320)(second 8)) + (spring (first 6799)(second 1)) + (spring (first 536)(second 314)) + (spring (first 536)(second 278)) + (spring (first 255)(second 14671)) + (spring (first 14671)(second 14672)) + (spring (first 14672)(second 14673)) + (spring (first 14673)(second 14674)) + (spring (first 14674)(second 14671)) + (spring (first 14672)(second 14674)) + (spring (first 10722)(second 14674)) + (spring (first 14675)(second 14676)) + (spring (first 10722)(second 14676)) + (spring (first 14675)(second 14674)) + (spring (first 14674)(second 14676)) + (spring (first 6794)(second 4846)) + (spring (first 6803)(second 4850)) + (spring (first 6801)(second 6794)) + (spring (first 6801)(second 6796)) + (spring (first 6795)(second 6799)) + (spring (first 6800)(second 6798)) + (spring (first 10455)(second 259)) + (spring (first 6798)(second 4850)) + (spring (first 262)(second 2361)) + (spring (first 3656)(second 2362)) + (spring (first 3656)(second 268)) + (spring (first 3657)(second 264)) + (spring (first 262)(second 3656)) + (spring (first 2361)(second 3657)) + (spring (first 3657)(second 2357)) + (spring (first 2357)(second 3656)) + (spring (first 2357)(second 843)) + (spring (first 2356)(second 3657)) + (spring (first 3657)(second 3658)) + (spring (first 3658)(second 844)) + (spring (first 3155)(second 271)) + (spring (first 844)(second 3154)) + (spring (first 3154)(second 274)) + (spring (first 271)(second 3153)) + (spring (first 1977)(second 3153)) + (spring (first 3154)(second 1975)) + (spring (first 1979)(second 3154)) + (spring (first 3155)(second 1977)) + (spring (first 265)(second 7868)) + (spring (first 263)(second 7871)) + (spring (first 7871)(second 267)) + (spring (first 7871)(second 260)) + (spring (first 7871)(second 258)) + (spring (first 7871)(second 261)) + (spring (first 7871)(second 19714)) + (spring (first 19715)(second 19714)) + (spring (first 19715)(second 6798)) + (spring (first 19715)(second 6796)) + (spring (first 19715)(second 259)) + (spring (first 19714)(second 259)) + (spring (first 19716)(second 3)) + (spring (first 3)(second 19717)) + (spring (first 19717)(second 10455)) + (spring (first 19717)(second 19718)) + (spring (first 19718)(second 10455)) + (spring (first 19718)(second 19719)) + (spring (first 19719)(second 6799)) + (spring (first 10455)(second 1)) + (spring (first 1)(second 19719)) + (spring (first 1)(second 19718)) + (spring (first 19718)(second 19720)) + (spring (first 19720)(second 19717)) + (spring (first 19720)(second 19719)) + (spring (first 19719)(second 19721)) + (spring (first 19721)(second 19720)) + (spring (first 19720)(second 19722)) + (spring (first 19722)(second 19717)) + (spring (first 19722)(second 19723)) + (spring (first 19723)(second 3)) + (spring (first 19717)(second 19723)) + (spring (first 19721)(second 19724)) + (spring (first 19724)(second 6799)) + (spring (first 19724)(second 19719)) + (spring (first 19724)(second 1)) + (spring (first 14672)(second 255)) + (spring (first 14676)(second 320)) + (spring (first 14674)(second 318)) + (spring (first 14674)(second 3152)) + (spring (first 316)(second 3153)) + (spring (first 274)(second 1975)) + (spring (first 274)(second 1973)) + (spring (first 3)(second 275)) + (spring (first 19725)(second 3)) + (spring (first 3)(second 4846)) + (spring (first 3)(second 6793)) + (spring (first 4849)(second 6793)) + (spring (first 4847)(second 256)) + (spring (first 2364)(second 19726)) + (spring (first 7871)(second 19727)) + (spring (first 7871)(second 269)) + (spring (first 1974)(second 19849)) + (spring (first 19847)(second 19850)) + (spring (first 19848)(second 19851)) + (spring (first 1978)(second 19852)) + (spring (first 1980)(second 19853)) + (spring (first 1976)(second 19854)) + (spring (first 1974)(second 19855)) + (spring (first 319)(second 19856)) + (spring (first 320)(second 19857)) + (spring (first 1976)(second 19858)) + (spring (first 1978)(second 19859)) + (spring (first 1980)(second 19860)) + (spring (first 1978)(second 19861)) + (spring (first 1980)(second 19862)) + (spring (first 2355)(second 19863)) + (spring (first 1980)(second 19864)) + (spring (first 1979)(second 19865)) + (spring (first 1978)(second 19860)) + (spring (first 2353)(second 19866)) + (spring (first 19866)(second 19863)) + (spring (first 2355)(second 19868)) + (spring (first 2353)(second 19869)) + (spring (first 19864)(second 1980)) + (spring (first 19870)(second 2358)) + (spring (first 19871)(second 270)) + (spring (first 19872)(second 270)) + (spring (first 269)(second 270)) + (spring (first 19873)(second 19875)) + (spring (first 19877)(second 270)) + (spring (first 270)(second 19878)) + (spring (first 270)(second 19879)) + (spring (first 270)(second 19880)) + (spring (first 19880)(second 4848)) + (spring (first 19881)(second 6793)) + (spring (first 19882)(second 6793)) + (spring (first 6793)(second 19883)) + (spring (first 6793)(second 19884)) + (spring (first 6793)(second 19885)) + (spring (first 6793)(second 19886)) + (spring (first 6793)(second 19887)) + (spring (first 6793)(second 19888)) + (spring (first 6803)(second 19889)) + (spring (first 6802)(second 19889)) + (spring (first 263)(second 264)) + (spring (first 263)(second 264)) + (spring (first 265)(second 264)) + (spring (first 265)(second 266)) + (spring (first 267)(second 266)) + (spring (first 267)(second 268)) + (spring (first 267)(second 266)) + (spring (first 267)(second 266)) + (spring (first 265)(second 266)) + (spring (first 265)(second 264)) + (spring (first 263)(second 264)) + (spring (first 263)(second 264)) + (spring (first 263)(second 264)) + (spring (first 263)(second 19872)) + (spring (first 263)(second 264)) + (spring (first 263)(second 264)) + (spring (first 263)(second 264)) + (spring (first 263)(second 264)) + (spring (first 263)(second 262)) + (spring (first 263)(second 262)) + (spring (first 263)(second 262)) + (spring (first 263)(second 19872)) + (spring (first 263)(second 262)) + (spring (first 263)(second 19872)) + (spring (first 265)(second 263)) + (spring (first 264)(second 265)) + (spring (first 266)(second 270)) + (spring (first 269)(second 270)) + (spring (first 269)(second 270)) + (spring (first 272)(second 270)) + (spring (first 19727)(second 270)) + (spring (first 271)(second 270)) + (spring (first 271)(second 274)) + (spring (first 273)(second 271)) + (spring (first 273)(second 270)) + (spring (first 278)(second 273)) + (spring (first 275)(second 274)) + (spring (first 20052)(second 20053)) + (spring (first 7871)(second 20054)) + (spring (first 3)(second 6798)) + (spring (first 20055)(second 6797)) + (spring (first 6796)(second 6795)) + (spring (first 259)(second 4850)) + (spring (first 257)(second 4850)) + (spring (first 258)(second 4850)) + (spring (first 6794)(second 6795)) + (spring (first 4847)(second 20056)) + (spring (first 20056)(second 20057)) + (spring (first 20057)(second 2364)) + (spring (first 20056)(second 2364)) + (spring (first 20057)(second 4847)) + (spring (first 20057)(second 20058)) + (spring (first 20058)(second 2363)) + (spring (first 20058)(second 2364)) + (spring (first 20057)(second 2363)) + (spring (first 20058)(second 20059)) + (spring (first 2359)(second 20059)) + (spring (first 20058)(second 2359)) + (spring (first 2363)(second 20059)) + (spring (first 20059)(second 2358)) + (spring (first 20059)(second 19879)) + (spring (first 19879)(second 2358)) + (spring (first 19879)(second 2354)) + (spring (first 19879)(second 20060)) + (spring (first 20060)(second 2354)) + (spring (first 20060)(second 2355)) + (spring (first 20060)(second 1980)) + (spring (first 20060)(second 19860)) + (spring (first 20060)(second 20061)) + (spring (first 20061)(second 19860)) + (spring (first 20061)(second 1980)) + (spring (first 20061)(second 19868)) + (spring (first 19879)(second 19860)) + (spring (first 6793)(second 20062)) + (spring (first 20062)(second 20063)) + (spring (first 20063)(second 20064)) + (spring (first 20064)(second 20065)) + (spring (first 20065)(second 20066)) + (spring (first 20066)(second 20067)) + (spring (first 20067)(second 20068)) + (spring (first 20068)(second 20065)) + (spring (first 20068)(second 20066)) + (spring (first 20065)(second 20067)) + (spring (first 19886)(second 20068)) + (spring (first 19886)(second 20064)) + (spring (first 20064)(second 20068)) + (spring (first 20065)(second 19886)) + (spring (first 20063)(second 19886)) + (spring (first 20062)(second 19886)) + (spring (first 19886)(second 6793)) + (spring (first 20062)(second 6793)) + (spring (first 19886)(second 6803)) + (spring (first 7871)(second 20248)) + (spring (first 20248)(second 20249)) + (spring (first 20249)(second 20250)) + (spring (first 20250)(second 20248)) + (spring (first 20250)(second 7871)) + (spring (first 20248)(second 260)) + (spring (first 20248)(second 20251)) + (spring (first 20251)(second 20249)) + (spring (first 20248)(second 20252)) + (spring (first 20252)(second 20251)) + (spring (first 20252)(second 19878)) + (spring (first 19878)(second 20251)) + (spring (first 20252)(second 19880)) + (spring (first 19880)(second 19878)) + (spring (first 319)(second 20253)) + (spring (first 320)(second 20254)) + (spring (first 279)(second 20259)) + (spring (first 5626)(second 20261)) + (spring (first 20258)(second 20262)) + (spring (first 10722)(second 20265)) + (spring (first 317)(second 20267)) + (spring (first 315)(second 20268)) + (spring (first 318)(second 20269)) + (spring (first 20263)(second 20270)) + (spring (first 20066)(second 20271)) + (spring (first 20271)(second 20067)) + (spring (first 20271)(second 20272)) + (spring (first 20067)(second 20272)) + (spring (first 20271)(second 20273)) + (spring (first 20273)(second 20272)) + (spring (first 20273)(second 20274)) + (spring (first 20274)(second 20272)) + (spring (first 20274)(second 20271)) + (spring (first 20274)(second 20275)) + (spring (first 20275)(second 20271)) + (spring (first 20275)(second 20273)) + (spring (first 20275)(second 20276)) + (spring (first 20276)(second 20277)) + (spring (first 20274)(second 20277)) + (spring (first 20276)(second 20274)) + (spring (first 20275)(second 20277)) + (spring (first 20277)(second 20278)) + (spring (first 20278)(second 20272)) + (spring (first 20274)(second 20278)) + (spring (first 20272)(second 20277)) + ) +) diff --git a/examples/complexus.construo b/examples/complexus.construo new file mode 100644 index 0000000..8d24141 --- /dev/null +++ b/examples/complexus.construo @@ -0,0 +1,357 @@ + +(construo-scene + (particles + (particle (id 1) (pos 0 600 0 ) (velocity 0.812204 -9.71228 0 ) ) + (particle (id 2) (pos 58.0452 598.51 0 ) (velocity -3.49495 41.9562 0 ) ) + (particle (id 3) (pos 54.2366 507.953 0 ) (velocity 430.604 64.8953 0 ) ) + (particle (id 4) (pos 8.18163 509.461 0 ) (velocity 643.773 -169.519 0 ) ) + (particle (id 5) (pos 9.67199 398.743 0 ) (velocity 799.638 -30.6015 0 ) ) + (particle (id 6) (pos 51.7551 397.724 0 ) (velocity 811.354 -140.159 0 ) ) + (particle (id 7) (pos 9.7075 309.173 0 ) (velocity 1080.68 -263.408 0 ) ) + (particle (id 8) (pos 41.9367 308.047 0 ) (velocity 951.792 -264.992 0 ) ) + (particle (id 9) (pos 29.8289 210.172 0 ) (velocity 527.407 -125.775 0 ) ) + (particle (id 10) (pos 59.1946 217.865 0 ) (velocity 497.171 -418.47 0 ) ) + (particle (id 11) (pos 22.5705 130.814 0 ) (velocity 405.996 -2.31134 0 ) ) + (particle (id 12) (pos 57.4572 133.636 0 ) (velocity 384.162 -290.373 0 ) ) + (particle (id 13) (pos 48.7659 17.404 0 ) (velocity -60.3646 -74.0312 0 ) ) + (particle (id 14) (pos 102.472 29.4974 0 ) (velocity -79.8255 -544.32 0 ) ) + (particle (id 15) (pos 83.3139 49.7098 0 ) (velocity 217.419 -158.48 0 ) ) + (particle (id 16) (pos 434.501 600 0 ) (velocity 2.95104 -1.66667 0 ) ) + (particle (id 17) (pos 800 600 0 ) (velocity -1.55041 -10.1857 0 ) ) + (particle (id 18) (pos 730.782 600 0 ) (velocity 0.302346 -10.8205 0 ) ) + (particle (id 19) (pos 730.823 504.258 0 ) (velocity 6.02136 106.958 0 ) ) + (particle (id 20) (pos 770.951 505.661 0 ) (velocity 50.8249 219.553 0 ) ) + (particle (id 21) (pos 762.561 452.942 0 ) (velocity 416.066 -177.672 0 ) ) + (particle (id 22) (pos 726.654 448.162 0 ) (velocity 136.113 46.7626 0 ) ) + (particle (id 23) (pos 727.278 345.851 0 ) (velocity -24.0547 -119.746 0 ) ) + (particle (id 24) (pos 780.477 346.361 0 ) (velocity -144.369 -95.8441 0 ) ) + (particle (id 25) (pos 740.335 234.925 0 ) (velocity 193.242 -207.038 0 ) ) + (particle (id 26) (pos 781.708 226.589 0 ) (velocity 278.207 33.9658 0 ) ) + (particle (id 27) (pos 728.223 100.216 0 ) (velocity 143.647 -85.155 0 ) ) + (particle (id 28) (pos 765.206 90.9923 0 ) (velocity 218.581 37.4824 0 ) ) + (particle (id 29) (pos 719.25 23.163 0 ) (velocity 484.918 19.7504 0 ) ) + (particle (id 30) (pos 758.396 14.9026 0 ) (velocity 409.254 75.9373 0 ) ) + (particle (id 91) (pos 214.089 55.7667 0 ) (velocity 390.569 -1018.36 0 ) ) + (particle (id 92) (pos 200.646 101.051 0 ) (velocity 294.071 -1120.95 0 ) ) + (particle (id 93) (pos 286.594 109.289 0 ) (velocity 399.816 -455.162 0 ) ) + (particle (id 94) (pos 294.588 55.8569 0 ) (velocity 454.656 -614.196 0 ) ) + (particle (id 95) (pos 402.784 71.4161 0 ) (velocity 565.523 -709.63 0 ) ) + (particle (id 96) (pos 394.508 120.874 0 ) (velocity 503.628 -761.976 0 ) ) + (particle (id 97) (pos 422.224 118.171 0 ) (velocity 407.252 -737.574 0 ) ) + (particle (id 98) (pos 440.377 65.19 0 ) (velocity 726.552 -393.841 0 ) ) + (particle (id 99) (pos 512.968 65.5637 0 ) (velocity 530.603 97.5179 0 ) ) + (particle (id 100) (pos 511.497 109.84 0 ) (velocity 420.227 24.15 0 ) ) + (particle (id 101) (pos 619.077 98.4624 0 ) (velocity 344.68 -304.038 0 ) ) + (particle (id 102) (pos 612.514 44.8004 0 ) (velocity 348.332 -388.722 0 ) ) + (particle (id 103) (pos 648.205 82.1127 0 ) (velocity 262.584 -681.802 0 ) ) + (particle (id 104) (pos 586.343 52.8569 0 ) (velocity 354.167 -371.848 0 ) ) + (particle (id 1071) (pos 454.728 191.085 0 ) (velocity -1.20825 94.8598 0 ) ) + (particle (id 1072) (pos 505.692 260.569 0 ) (velocity -2117.11 1424.02 0 ) ) + (particle (id 1073) (pos 574.976 340.542 0 ) (velocity -4252.01 4115.73 0 ) ) + (particle (id 1074) (pos 599.176 302.548 0 ) (velocity -4998.16 3762.04 0 ) ) + (particle (id 1075) (pos 647.501 326.287 0 ) (velocity -4538.74 3868.89 0 ) ) + (particle (id 1076) (pos 622.603 408.73 0 ) (velocity -4461.11 3738.21 0 ) ) + (particle (id 1077) (pos 533.366 398.841 0 ) (velocity -4515.13 4124.14 0 ) ) + (particle (id 1078) (pos 552 432 0 ) (velocity 0 0 0 ) ) + (particle (id 1079) (pos 606 440 0 ) (velocity 0 0 0 ) ) + (particle (id 1080) (pos 641 265 0 ) (velocity 0 0 0 ) ) + (particle (id 1081) (pos 700 298 0 ) (velocity 0 0 0 ) ) + (particle (id 1082) (pos 651 234 0 ) (velocity 0 0 0 ) ) + (particle (id 1083) (pos 474 449 0 ) (velocity 0 0 0 ) ) + (particle (id 1084) (pos 451 382 0 ) (velocity 0 0 0 ) ) + (particle (id 1085) (pos 585 258 0 ) (velocity 0 0 0 ) ) + (particle (id 2208) (pos 472 170 0 ) (velocity 0 0 0 ) ) + (particle (id 2209) (pos 514 224 0 ) (velocity 0 0 0 ) ) + (particle (id 2814) (pos 533 301 0 ) (velocity 0 0 0 ) ) + (particle (id 2891) (pos 400 27 0 ) (velocity 0 0 0 ) ) + (particle (id 2979) (pos 434 164 0 ) (velocity 0 0 0 ) ) + (particle (id 3138) (pos 459 37 0 ) (velocity 0 0 0 ) ) + (particle (id 4791) (pos 97 592 0 ) (velocity 0 0 0 ) ) + (particle (id 4792) (pos 677 594 0 ) (velocity 0 0 0 ) ) + (particle (id 4793) (pos 633 598 0 ) (velocity 0 0 0 ) ) + (particle (id 4794) (pos 146 596 0 ) (velocity 0 0 0 ) ) + (particle (id 7634) (pos 612 356 0 ) (velocity 0 0 0 ) ) + (particle (id 7809) (pos 553 83 0 ) (velocity 0 0 0 ) ) + (particle (id 7810) (pos 568 119 0 ) (velocity 0 0 0 ) ) + (particle (id 7899) (pos 631 300 0 ) (velocity 0 0 0 ) ) + (particle (id 7900) (pos 608 274 0 ) (velocity 0 0 0 ) ) + (particle (id 8335) (pos 431 7 0 ) (velocity 0 0 0 ) ) + (particle (id 11329) (pos 544 258 0 ) (velocity 0 0 0 ) ) + (particle (id 18270) (pos 724 71 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 1)(second 2)) + (spring (first 2)(second 3)) + (spring (first 3)(second 4)) + (spring (first 4)(second 1)) + (spring (first 4)(second 2)) + (spring (first 3)(second 1)) + (spring (first 4)(second 5)) + (spring (first 5)(second 6)) + (spring (first 6)(second 3)) + (spring (first 6)(second 4)) + (spring (first 5)(second 3)) + (spring (first 5)(second 7)) + (spring (first 7)(second 8)) + (spring (first 8)(second 6)) + (spring (first 8)(second 5)) + (spring (first 7)(second 9)) + (spring (first 9)(second 10)) + (spring (first 10)(second 8)) + (spring (first 9)(second 8)) + (spring (first 10)(second 7)) + (spring (first 9)(second 11)) + (spring (first 11)(second 12)) + (spring (first 12)(second 10)) + (spring (first 12)(second 9)) + (spring (first 11)(second 10)) + (spring (first 11)(second 13)) + (spring (first 13)(second 14)) + (spring (first 14)(second 12)) + (spring (first 13)(second 12)) + (spring (first 15)(second 11)) + (spring (first 15)(second 12)) + (spring (first 14)(second 15)) + (spring (first 15)(second 13)) + (spring (first 16)(second 17)) + (spring (first 17)(second 18)) + (spring (first 18)(second 19)) + (spring (first 19)(second 20)) + (spring (first 20)(second 17)) + (spring (first 20)(second 18)) + (spring (first 19)(second 17)) + (spring (first 20)(second 21)) + (spring (first 21)(second 22)) + (spring (first 22)(second 19)) + (spring (first 22)(second 20)) + (spring (first 21)(second 19)) + (spring (first 22)(second 23)) + (spring (first 23)(second 24)) + (spring (first 24)(second 21)) + (spring (first 21)(second 23)) + (spring (first 24)(second 22)) + (spring (first 23)(second 25)) + (spring (first 25)(second 26)) + (spring (first 26)(second 24)) + (spring (first 25)(second 27)) + (spring (first 27)(second 28)) + (spring (first 28)(second 26)) + (spring (first 27)(second 26)) + (spring (first 28)(second 25)) + (spring (first 27)(second 29)) + (spring (first 29)(second 30)) + (spring (first 30)(second 28)) + (spring (first 30)(second 27)) + (spring (first 29)(second 28)) + (spring (first 25)(second 24)) + (spring (first 26)(second 23)) + (spring (first 14)(second 91)) + (spring (first 91)(second 92)) + (spring (first 92)(second 12)) + (spring (first 12)(second 91)) + (spring (first 14)(second 92)) + (spring (first 92)(second 93)) + (spring (first 93)(second 94)) + (spring (first 94)(second 91)) + (spring (first 94)(second 95)) + (spring (first 95)(second 96)) + (spring (first 96)(second 93)) + (spring (first 97)(second 96)) + (spring (first 97)(second 98)) + (spring (first 98)(second 95)) + (spring (first 98)(second 99)) + (spring (first 99)(second 100)) + (spring (first 100)(second 97)) + (spring (first 100)(second 101)) + (spring (first 101)(second 102)) + (spring (first 102)(second 99)) + (spring (first 102)(second 29)) + (spring (first 101)(second 28)) + (spring (first 27)(second 101)) + (spring (first 103)(second 101)) + (spring (first 103)(second 29)) + (spring (first 103)(second 27)) + (spring (first 102)(second 103)) + (spring (first 101)(second 99)) + (spring (first 104)(second 100)) + (spring (first 104)(second 102)) + (spring (first 104)(second 101)) + (spring (first 104)(second 99)) + (spring (first 99)(second 97)) + (spring (first 98)(second 100)) + (spring (first 97)(second 95)) + (spring (first 96)(second 98)) + (spring (first 94)(second 96)) + (spring (first 95)(second 93)) + (spring (first 91)(second 93)) + (spring (first 94)(second 92)) + (spring (first 101)(second 25)) + (spring (first 10)(second 92)) + (spring (first 96)(second 1071)) + (spring (first 1071)(second 1072)) + (spring (first 1072)(second 1073)) + (spring (first 1073)(second 1074)) + (spring (first 1074)(second 1075)) + (spring (first 1075)(second 1076)) + (spring (first 1076)(second 1077)) + (spring (first 1077)(second 1073)) + (spring (first 1073)(second 1076)) + (spring (first 1077)(second 1075)) + (spring (first 1074)(second 1076)) + (spring (first 1077)(second 1078)) + (spring (first 1078)(second 1079)) + (spring (first 1079)(second 1076)) + (spring (first 1074)(second 1080)) + (spring (first 1080)(second 1081)) + (spring (first 1075)(second 1080)) + (spring (first 1075)(second 1081)) + (spring (first 1078)(second 1076)) + (spring (first 1080)(second 1082)) + (spring (first 1082)(second 1081)) + (spring (first 1077)(second 1083)) + (spring (first 1083)(second 1078)) + (spring (first 1083)(second 1079)) + (spring (first 1083)(second 1084)) + (spring (first 1084)(second 1077)) + (spring (first 1084)(second 1074)) + (spring (first 1084)(second 1085)) + (spring (first 1085)(second 1074)) + (spring (first 1085)(second 1077)) + (spring (first 1085)(second 1080)) + (spring (first 1085)(second 1082)) + (spring (first 97)(second 1071)) + (spring (first 97)(second 2208)) + (spring (first 2208)(second 2209)) + (spring (first 2209)(second 1072)) + (spring (first 2209)(second 1085)) + (spring (first 1071)(second 2209)) + (spring (first 1072)(second 1085)) + (spring (first 2209)(second 2814)) + (spring (first 2814)(second 1084)) + (spring (first 2814)(second 1072)) + (spring (first 2814)(second 1085)) + (spring (first 98)(second 2891)) + (spring (first 2891)(second 95)) + (spring (first 2891)(second 94)) + (spring (first 93)(second 1071)) + (spring (first 96)(second 1071)) + (spring (first 96)(second 1071)) + (spring (first 97)(second 2979)) + (spring (first 97)(second 2979)) + (spring (first 2979)(second 1071)) + (spring (first 1071)(second 2979)) + (spring (first 96)(second 2979)) + (spring (first 1071)(second 2979)) + (spring (first 97)(second 2208)) + (spring (first 2208)(second 1071)) + (spring (first 2208)(second 2209)) + (spring (first 2209)(second 1071)) + (spring (first 1071)(second 2209)) + (spring (first 2209)(second 2208)) + (spring (first 2208)(second 1071)) + (spring (first 1071)(second 2208)) + (spring (first 97)(second 2891)) + (spring (first 2891)(second 3138)) + (spring (first 3138)(second 99)) + (spring (first 3138)(second 98)) + (spring (first 3138)(second 102)) + (spring (first 3138)(second 29)) + (spring (first 2891)(second 91)) + (spring (first 2891)(second 14)) + (spring (first 13)(second 2891)) + (spring (first 2891)(second 29)) + (spring (first 2891)(second 30)) + (spring (first 1071)(second 1072)) + (spring (first 1071)(second 2209)) + (spring (first 2208)(second 1085)) + (spring (first 1071)(second 1074)) + (spring (first 96)(second 97)) + (spring (first 96)(second 97)) + (spring (first 95)(second 98)) + (spring (first 95)(second 98)) + (spring (first 98)(second 3138)) + (spring (first 98)(second 3138)) + (spring (first 98)(second 95)) + (spring (first 97)(second 100)) + (spring (first 97)(second 100)) + (spring (first 95)(second 99)) + (spring (first 98)(second 99)) + (spring (first 93)(second 96)) + (spring (first 94)(second 95)) + (spring (first 97)(second 2208)) + (spring (first 2208)(second 96)) + (spring (first 93)(second 2208)) + (spring (first 92)(second 93)) + (spring (first 10)(second 91)) + (spring (first 3)(second 4791)) + (spring (first 4791)(second 2)) + (spring (first 19)(second 4792)) + (spring (first 4792)(second 18)) + (spring (first 4792)(second 4793)) + (spring (first 4793)(second 19)) + (spring (first 3)(second 4794)) + (spring (first 4794)(second 4791)) + (spring (first 98)(second 2208)) + (spring (first 2208)(second 98)) + (spring (first 1083)(second 7634)) + (spring (first 7634)(second 1074)) + (spring (first 1075)(second 7634)) + (spring (first 7634)(second 1079)) + (spring (first 7634)(second 1077)) + (spring (first 1076)(second 1079)) + (spring (first 1076)(second 1081)) + (spring (first 100)(second 101)) + (spring (first 100)(second 7809)) + (spring (first 7809)(second 101)) + (spring (first 100)(second 7810)) + (spring (first 7810)(second 101)) + (spring (first 1074)(second 7899)) + (spring (first 7899)(second 1080)) + (spring (first 1080)(second 7900)) + (spring (first 7900)(second 1074)) + (spring (first 7900)(second 7899)) + (spring (first 1073)(second 7634)) + (spring (first 1073)(second 1085)) + (spring (first 7900)(second 1085)) + (spring (first 7899)(second 1075)) + (spring (first 2891)(second 3138)) + (spring (first 2891)(second 8335)) + (spring (first 8335)(second 3138)) + (spring (first 8335)(second 94)) + (spring (first 4794)(second 4793)) + (spring (first 2)(second 18)) + (spring (first 4792)(second 4791)) + (spring (first 2814)(second 11329)) + (spring (first 11329)(second 1085)) + (spring (first 11329)(second 2209)) + (spring (first 11329)(second 1084)) + (spring (first 11329)(second 1082)) + (spring (first 103)(second 29)) + (spring (first 103)(second 27)) + (spring (first 103)(second 29)) + (spring (first 30)(second 103)) + (spring (first 28)(second 103)) + (spring (first 103)(second 99)) + (spring (first 102)(second 30)) + (spring (first 102)(second 28)) + (spring (first 97)(second 7810)) + (spring (first 7810)(second 27)) + (spring (first 7810)(second 25)) + (spring (first 94)(second 10)) + (spring (first 4792)(second 22)) + (spring (first 17)(second 21)) + (spring (first 4792)(second 23)) + (spring (first 24)(second 17)) + (spring (first 7)(second 6)) + (spring (first 6)(second 10)) + (spring (first 6)(second 4791)) + (spring (first 4791)(second 7)) + (spring (first 11)(second 7)) + (spring (first 23)(second 18270)) + (spring (first 24)(second 27)) + (spring (first 27)(second 23)) + (spring (first 101)(second 26)) + (spring (first 18270)(second 30)) + (spring (first 18270)(second 102)) + ) +) diff --git a/examples/crashtest.construo b/examples/crashtest.construo new file mode 100644 index 0000000..453349a --- /dev/null +++ b/examples/crashtest.construo @@ -0,0 +1,104 @@ +;; Written by construo 0.1.0pre2 +(construo-scene + (particles + (particle (id 2) (pos 115.000000 30.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 205.000000 47.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 291.000000 62.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 389.000000 77.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 488.000000 90.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 531.000000 56.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 513.000000 137.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 582.000000 66.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 567.000000 147.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos 512.000000 196.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos 531.000000 228.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 567.000000 199.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos 550.000000 28.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 580.000000 34.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 592.000000 134.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 320) (pos 513.000000 227.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 321) (pos 558.000000 231.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 322) (pos 532.000000 244.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 497) (pos 86.000000 13.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #t) (mass 10.000000)) + (particle (id 498) (pos 162.000000 30.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 499) (pos 254.000000 43.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 500) (pos 352.000000 58.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 501) (pos 451.000000 75.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 584) (pos 111.000000 14.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 699) (pos 94.000000 31.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 700) (pos 151.000000 47.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 701) (pos 251.000000 67.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 703) (pos 344.000000 80.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 704) (pos 447.000000 97.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 2) (second 3) (length 91.591484)) + (spring (first 3) (second 4) (length 87.298340)) + (spring (first 4) (second 5) (length 99.141312)) + (spring (first 5) (second 6) (length 99.849884)) + (spring (first 6) (second 7) (length 54.817879)) + (spring (first 7) (second 8) (length 82.975899)) + (spring (first 8) (second 6) (length 53.235325)) + (spring (first 7) (second 9) (length 51.971146)) + (spring (first 9) (second 10) (length 82.377182)) + (spring (first 10) (second 8) (length 54.918121)) + (spring (first 8) (second 11) (length 59.008472)) + (spring (first 11) (second 12) (length 37.215588)) + (spring (first 12) (second 13) (length 46.227695)) + (spring (first 13) (second 10) (length 52.000000)) + (spring (first 10) (second 11) (length 73.661385)) + (spring (first 8) (second 13) (length 82.219215)) + (spring (first 13) (second 11) (length 55.081757)) + (spring (first 7) (second 10) (length 97.862144)) + (spring (first 8) (second 9) (length 99.005051)) + (spring (first 7) (second 14) (length 33.837849)) + (spring (first 14) (second 15) (length 30.594116)) + (spring (first 15) (second 9) (length 32.062439)) + (spring (first 11) (second 6) (length 108.683022)) + (spring (first 6) (second 14) (length 87.681244)) + (spring (first 14) (second 9) (length 49.678970)) + (spring (first 15) (second 7) (length 53.712196)) + (spring (first 24) (second 13) (length 69.641945)) + (spring (first 24) (second 9) (length 68.731361)) + (spring (first 10) (second 24) (length 28.178005)) + (spring (first 24) (second 7) (length 99.020203)) + (spring (first 5) (second 14) (length 168.291412)) + (spring (first 5) (second 11) (length 171.143219)) + (spring (first 11) (second 320) (length 31.016125)) + (spring (first 320) (second 12) (length 18.027756)) + (spring (first 12) (second 321) (length 27.166155)) + (spring (first 321) (second 13) (length 33.241539)) + (spring (first 321) (second 322) (length 29.068884)) + (spring (first 322) (second 320) (length 25.495098)) + (spring (first 12) (second 322) (length 16.031219)) + (spring (first 497) (second 2) (length 33.615471)) + (spring (first 2) (second 498) (length 47.000000)) + (spring (first 498) (second 3) (length 46.238514)) + (spring (first 3) (second 499) (length 49.162994)) + (spring (first 499) (second 4) (length 41.593269)) + (spring (first 500) (second 4) (length 61.131008)) + (spring (first 500) (second 5) (length 41.593269)) + (spring (first 5) (second 501) (length 62.032249)) + (spring (first 501) (second 6) (length 39.924931)) + (spring (first 497) (second 584) (length 25.019993)) + (spring (first 584) (second 2) (length 16.492422)) + (spring (first 497) (second 699) (length 19.697716)) + (spring (first 699) (second 2) (length 21.023796)) + (spring (first 699) (second 584) (length 24.041630)) + (spring (first 2) (second 700) (length 39.812057)) + (spring (first 700) (second 3) (length 54.000000)) + (spring (first 700) (second 498) (length 20.248457)) + (spring (first 3) (second 701) (length 50.159744)) + (spring (first 4) (second 701) (length 40.311287)) + (spring (first 701) (second 499) (length 24.186773)) + (spring (first 4) (second 703) (length 55.973209)) + (spring (first 703) (second 5) (length 45.099888)) + (spring (first 703) (second 500) (length 23.409399)) + (spring (first 5) (second 704) (length 61.351448)) + (spring (first 704) (second 6) (length 41.593269)) + (spring (first 704) (second 501) (length 22.360680)) + (spring (first 14) (second 322) (length 216.748703)) + (spring (first 15) (second 322) (length 215.415878)) + )) + +;; EOF ;; diff --git a/examples/dancing.construo b/examples/dancing.construo new file mode 100644 index 0000000..766de05 --- /dev/null +++ b/examples/dancing.construo @@ -0,0 +1,243 @@ +;; Written by construo 0.2.2 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 700.043030 365.534302) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos 723.650269 591.966309) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 746.936646 369.141479) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 753.149170 245.028595) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 1271.443970 253.711075) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 1324.069092 407.017090) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 1377.195190 407.999084) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 1329.319580 590.984314) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 755.954651 172.549057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 847.938293 172.549057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos 1167.175537 185.174271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 1271.784302 183.370667) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 1168.979126 116.637451) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 1282.605957 118.441055) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 850.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 900.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 970.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 1040.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 1110.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 1170.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 900.000000 40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 970.000000 40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 1040.000000 40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 1110.000000 40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 970.000000 0.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 1040.000000 0.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos 1240.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 1200.000000 50.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 1250.000000 50.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 1280.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 1230.000000 30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 1340.000000 -20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 1468.424683 -17.037605) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 1350.000000 20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 41) (pos 730.000000 340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 720.000000 400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 43) (pos 1541.570190 -43.635811) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 44) (pos 1622.394531 -35.923653) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 45) (pos 1548.219360 -17.037605) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 46) (pos 1676.685913 -44.972321) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 1740.026489 -31.399319) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 1676.685913 -22.350658) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 851.649536 118.425133) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos 752.538452 116.965103) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 51) (pos 814.534302 70.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 764.534302 70.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 784.534302 50.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 674.534302 0.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 546.109619 2.962402) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 664.534302 40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 58) (pos 472.964081 -23.635803) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 392.139740 -15.923645) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 60) (pos 466.314911 2.962402) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 61) (pos 337.848358 -24.972321) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 274.507782 -11.399323) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 337.848358 -2.350662) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 920.000000 -100.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 920.000000 -160.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 970.000000 -210.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 1050.000000 -210.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 70) (pos 1090.000000 -170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 71) (pos 1090.000000 -90.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 990.000000 -100.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 1030.000000 -100.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 74) (pos 1040.000000 -160.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 75) (pos 980.000000 -160.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 77) (pos 1005.222717 -67.224411) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 78) (pos 1013.955566 -232.859238) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 79) (pos 1028.855591 -253.346741) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 80) (pos 1058.655518 -266.384247) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 81) (pos 1098.699341 -263.590485) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 82) (pos 1122.911865 -274.765503) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 83) (pos 1129.430542 -301.771759) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 227.659302) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 224.038300) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 0) (length 47.032146) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 3) (length 131.688599) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 2) (length 124.268272) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 5) (length 162.086823) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 6) (length 53.135174) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 4) (length 187.051086) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 7) (length 184.042130) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 6) (length 189.144577) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 8) (length 72.533813) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 91.983643) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 3) (length 119.324188) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 11) (length 124.776596) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 12) (length 104.624313) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 4) (length 70.341232) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 9) (length 319.486786) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 50) (length 56.027843) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 49) (length 99.214394) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 9) (length 54.228107) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 49) (length 109.842072) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 9) (length 110.741646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 16) (length 317.438782) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 16) (length 68.560547) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 113.641144) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 12) (length 65.825241) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 11) (length 133.332306) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 12) (length 122.565193) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 16) (length 325.873169) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 11) (length 322.607605) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 19) (length 38.472111) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 20) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 21) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 22) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 24) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 16) (length 36.651672) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 20) (length 61.851082) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 16) (length 69.432274) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 20) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 19) (length 64.031242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 27) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 21) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 28) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 28) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 23) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 29) (length 72.111023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 22) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 27) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 20) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 30) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 27) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 28) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 30) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 29) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 27) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 33) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 17) (length 57.384514) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 16) (length 79.914124) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 34) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 33) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 33) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 36) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 17) (length 38.529285) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 33) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 35) (length 85.440041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 37) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 35) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 33) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 38) (length 120.830460) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 39) (length 128.458847) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 40) (length 124.081383) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 38) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 40) (length 120.415947) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 39) (length 276.669220) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 41) (length 39.362682) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 2) (length 33.705723) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 42) (length 40.961338) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 0) (length 39.826687) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 42) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 2) (length 221.020172) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 5) (length 229.676773) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 43) (length 77.831421) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 44) (length 81.191452) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 45) (length 76.541748) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 45) (second 39) (length 79.794678) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 45) (length 27.416710) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 43) (length 201.862961) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 46) (length 55.040279) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 47) (length 64.778503) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 48) (length 63.983646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 44) (length 55.962311) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 48) (length 22.621662) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 45) (second 46) (length 131.468643) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 51) (length 61.063309) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 50) (length 77.823135) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 52) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 50) (length 48.743809) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 52) (length 99.752983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 54) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 52) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 50) (length 74.430244) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 55) (length 120.830460) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 56) (length 128.458847) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 57) (length 124.081383) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 55) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 57) (length 120.415947) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 56) (length 276.669220) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 58) (length 77.831451) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 59) (length 81.191452) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 60) (length 76.541748) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 56) (length 79.794708) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 60) (length 27.416710) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 58) (length 201.862991) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 61) (length 55.040283) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 62) (length 64.778503) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 63.983646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 59) (length 55.962307) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 63) (length 22.621658) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 61) (length 131.468643) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 67) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 68) (length 70.710678) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 69) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 70) (length 56.568542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 71) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 72) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 71) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 74) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 73) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 75) (length 60.827625) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 67) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 75) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 74) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 74) (length 50.990196) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 72) (length 78.102493) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 73) (length 78.102493) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 71) (length 86.023254) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 66) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 74) (length 86.023254) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 75) (length 86.023254) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 77) (length 87.783340) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 66) (length 91.307999) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 77) (length 36.138210) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 77) (length 41.087139) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 30) (length 75.893089) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 32) (length 75.687386) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 32) (length 111.803398) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 30) (length 116.619041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 78) (length 49.544289) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 69) (length 42.681915) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 79) (length 25.332756) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 80) (length 32.527100) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 81) (length 40.141163) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 81) (second 82) (length 26.666971) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 83) (length 27.781847) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + )) + +;; EOF ;; diff --git a/examples/dodge.construo b/examples/dodge.construo new file mode 100644 index 0000000..8893533 --- /dev/null +++ b/examples/dodge.construo @@ -0,0 +1,366 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 2) + (author "Stefan Ruhnke,,," "") + (particles + (particle (id 0) (pos 57.000000 77.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1) (pos -64.345154 -1630.691528) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos -130.080353 -1703.623291) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos -129.456741 -1597.123413) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos -148.712921 -1699.770752) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos -206.785248 -1709.131104) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos -66.206383 -1815.520508) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos -183.228302 -1806.793457) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos -149.795013 -1755.928345) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos -114.763710 -601.379517) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos -99.519966 -602.057007) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos -107.551208 -617.893250) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos -43.866280 -603.665771) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos -28.283775 -603.665771) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos -36.075008 -616.538208) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos -12.701336 -604.004517) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos -130.684921 -602.395752) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 17) (pos -130.586227 -621.619507) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos -13.040081 -620.264465) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos 7.962420 -617.554504) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos 16.769924 -605.020752) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 1357.390137 -888.281677) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 1288.361450 -731.359253) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos -164.836578 -603.503235) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos -154.499023 -620.703247) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 25) (pos -147.074036 -679.553223) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos -109.399040 -680.653198) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27) (pos -130.849045 -653.703247) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos -37.928829 -682.217773) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 7.004228 -683.400208) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos -15.462321 -650.291626) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos -15.462321 -685.765137) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 32) (pos -128.977402 -679.852905) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 33) (pos -140.801880 -755.529602) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 34) (pos -124.247597 -751.982300) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 35) (pos -107.693291 -749.617371) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos -59.212879 -759.076965) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos -39.111271 -756.712097) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos -17.827185 -755.529602) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 39) (pos -146.714172 -878.504456) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 40) (pos -118.335304 -877.322021) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 41) (pos -93.503914 -878.504456) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 42) (pos -60.395374 -878.504456) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 43) (pos -33.199039 -878.504456) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 44) (pos -16.644751 -876.139587) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 45) (pos -105.328430 -847.760742) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 46) (pos -78.132103 -824.111755) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 47) (pos -156.173782 -926.984924) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 48) (pos -202.289413 -876.139587) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 49) (pos -177.457870 -850.125671) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 50) (pos -186.917557 -788.638245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 51) (pos -220.026230 -804.010132) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 52) (pos -199.924484 -750.799805) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 53) (pos -230.668243 -757.894531) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 54) (pos -2.956767 -931.203918) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 55) (pos 37.908688 -892.381714) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 56) (pos 13.389427 -849.472961) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 57) (pos 62.427971 -829.040222) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 58) (pos 31.778872 -804.520935) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 59) (pos 66.514519 -780.001648) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 60) (pos 35.865417 -753.439087) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 61) (pos -51.995319 -927.117371) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 62) (pos -103.077026 -927.117371) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 63) (pos 3.173054 -914.857727) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 64) (pos 11.346151 -865.819153) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 65) (pos -68.341469 -927.117371) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 66) (pos -80.601044 -902.598083) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 67) (pos -74.471207 -951.636658) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 68) (pos -101.033760 -955.723206) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 69) (pos -43.822212 -957.766479) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 70) (pos -127.596283 -963.896301) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 71) (pos -135.769394 -992.502136) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 72) (pos -137.812668 -1023.151367) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 73) (pos -125.553017 -1055.843872) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 74) (pos -84.687584 -1057.887085) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 75) (pos -58.125118 -1057.887085) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 76) (pos -33.605843 -1037.454346) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 77) (pos -27.476036 -1002.718567) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 78) (pos -113.293373 -1023.151367) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 79) (pos -96.947212 -1023.151367) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 80) (pos -80.601044 -1023.151367) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 81) (pos -62.211658 -1023.151367) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 82) (pos -88.774132 -1002.718567) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 83) (pos -88.774132 -984.329041) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 84) (pos -103.077026 -972.069397) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 85) (pos -72.428001 -972.069397) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 86) (pos -115.934006 -991.069885) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 87) (pos -54.200748 -995.700012) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 88) (pos -34.780331 -979.710266) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 89) (pos -241.218460 -601.467590) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 90) (pos -222.918793 -600.808411) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 91) (pos -224.317123 -681.521912) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 92) (pos -207.415695 -681.521912) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 93) (pos -219.488190 -741.883850) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 94) (pos -167.576691 -683.936340) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 95) (pos -169.991180 -668.242249) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 96) (pos -233.975052 -700.837708) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 97) (pos -255.705338 -699.630432) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 98) (pos -258.119843 -671.863953) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 99) (pos -240.011246 -668.242249) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 100) (pos -225.524399 -660.998779) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 101) (pos -106.652771 -1008.559631) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 102) (pos -122.707809 -1008.348328) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 103) (pos -70.951569 -1010.460938) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 104) (pos -52.995365 -1010.672119) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 1) (second 2) (length 98.184311)) + (spring (first 3) (second 4) (length 104.437904)) + (spring (first 5) (second 4) (length 58.821861)) + (spring (first 2) (second 6) (length 128.844376)) + (spring (first 6) (second 7) (length 117.346886)) + (spring (first 7) (second 5) (length 100.463249)) + (spring (first 2) (second 4) (length 19.026684)) + (spring (first 3) (second 1) (length 73.255287)) + (spring (first 1) (second 4) (length 109.040634)) + (spring (first 3) (second 2) (length 106.501701)) + (spring (first 2) (second 7) (length 116.055107)) + (spring (first 6) (second 5) (length 176.298386)) + (spring (first 8) (second 4) (length 56.168018)) + (spring (first 9) (second 10) (length 15.258792)) + (spring (first 10) (second 11) (length 17.756334)) + (spring (first 9) (second 11) (length 18.020088)) + (spring (first 12) (second 13) (length 15.582504)) + (spring (first 13) (second 14) (length 15.046692)) + (spring (first 14) (second 12) (length 15.046712)) + (spring (first 13) (second 15) (length 15.586121)) + (spring (first 9) (second 16) (length 15.953611)) + (spring (first 16) (second 17) (length 19.224009)) + (spring (first 17) (second 11) (length 23.334461)) + (spring (first 15) (second 18) (length 16.263477)) + (spring (first 18) (second 14) (length 23.334372)) + (spring (first 18) (second 19) (length 21.176613)) + (spring (first 19) (second 15) (length 24.710178)) + (spring (first 15) (second 19) (length 24.710178)) + (spring (first 15) (second 20) (length 29.488775)) + (spring (first 20) (second 19) (length 15.318848)) + (spring (first 16) (second 9) (length 15.953611)) + (spring (first 21) (second 22) (length 171.433975)) + (spring (first 16) (second 23) (length 34.169609)) + (spring (first 17) (second 24) (length 23.930344)) + (spring (first 24) (second 23) (length 20.067522)) + (spring (first 24) (second 25) (length 59.316525)) + (spring (first 25) (second 26) (length 37.691051)) + (spring (first 26) (second 11) (length 62.787144)) + (spring (first 11) (second 25) (length 73.239372)) + (spring (first 26) (second 24) (length 75.020035)) + (spring (first 27) (second 17) (length 32.084816)) + (spring (first 27) (second 26) (length 34.444195)) + (spring (first 27) (second 25) (length 30.520020)) + (spring (first 14) (second 28) (length 65.705719)) + (spring (first 28) (second 29) (length 44.948612)) + (spring (first 29) (second 19) (length 65.852676)) + (spring (first 19) (second 28) (length 79.292778)) + (spring (first 29) (second 14) (length 79.538338)) + (spring (first 18) (second 30) (length 30.124701)) + (spring (first 30) (second 29) (length 40.011547)) + (spring (first 30) (second 28) (length 39.038734)) + (spring (first 30) (second 31) (length 35.473511)) + (spring (first 32) (second 27) (length 26.216553)) + (spring (first 25) (second 33) (length 76.234833)) + (spring (first 33) (second 34) (length 16.930080)) + (spring (first 34) (second 35) (length 16.722378)) + (spring (first 35) (second 26) (length 68.985268)) + (spring (first 26) (second 33) (length 81.194916)) + (spring (first 35) (second 25) (length 80.373055)) + (spring (first 34) (second 32) (length 72.284302)) + (spring (first 28) (second 36) (length 79.751778)) + (spring (first 36) (second 37) (length 20.240238)) + (spring (first 37) (second 38) (length 21.316910)) + (spring (first 38) (second 29) (length 76.283997)) + (spring (first 31) (second 37) (length 74.784653)) + (spring (first 36) (second 29) (length 100.556831)) + (spring (first 38) (second 28) (length 76.017761)) + (spring (first 36) (second 35) (length 49.394680)) + (spring (first 33) (second 39) (length 123.116898)) + (spring (first 39) (second 40) (length 28.403492)) + (spring (first 40) (second 41) (length 24.859528)) + (spring (first 41) (second 42) (length 33.108540)) + (spring (first 42) (second 43) (length 27.196335)) + (spring (first 43) (second 44) (length 16.722353)) + (spring (first 44) (second 38) (length 120.615784)) + (spring (first 44) (second 37) (length 121.522301)) + (spring (first 36) (second 43) (length 122.227844)) + (spring (first 42) (second 37) (length 123.638145)) + (spring (first 36) (second 41) (length 124.252968)) + (spring (first 40) (second 35) (length 128.147293)) + (spring (first 39) (second 34) (length 128.501373)) + (spring (first 33) (second 41) (length 131.757019)) + (spring (first 40) (second 36) (length 132.201950)) + (spring (first 42) (second 35) (length 137.291565)) + (spring (first 45) (second 46) (length 36.040459)) + (spring (first 47) (second 39) (length 49.394737)) + (spring (first 47) (second 48) (length 68.643280)) + (spring (first 48) (second 49) (length 35.962887)) + (spring (first 39) (second 49) (length 41.839340)) + (spring (first 49) (second 50) (length 62.210846)) + (spring (first 48) (second 51) (length 74.278214)) + (spring (first 51) (second 50) (length 36.503139)) + (spring (first 50) (second 52) (length 40.011593)) + (spring (first 52) (second 53) (length 31.551765)) + (spring (first 53) (second 51) (length 47.327595)) + (spring (first 44) (second 54) (length 56.740124)) + (spring (first 54) (second 55) (length 56.366203)) + (spring (first 55) (second 56) (length 49.420189)) + (spring (first 44) (second 56) (length 40.164173)) + (spring (first 55) (second 57) (length 67.921570)) + (spring (first 57) (second 58) (length 39.250004)) + (spring (first 58) (second 56) (length 48.568058)) + (spring (first 57) (second 59) (length 49.208553)) + (spring (first 59) (second 60) (length 40.557823)) + (spring (first 58) (second 60) (length 51.245049)) + (spring (first 54) (second 47) (length 153.275085)) + (spring (first 47) (second 40) (length 62.435200)) + (spring (first 41) (second 40) (length 24.859528)) + (spring (first 41) (second 61) (length 63.923225)) + (spring (first 41) (second 62) (length 49.546543)) + (spring (first 62) (second 61) (length 51.081707)) + (spring (first 42) (second 54) (length 77.951439)) + (spring (first 43) (second 47) (length 132.186020)) + (spring (first 62) (second 39) (length 65.325462)) + (spring (first 40) (second 54) (length 127.339958)) + (spring (first 47) (second 49) (length 79.751846)) + (spring (first 39) (second 48) (length 55.625534)) + (spring (first 63) (second 64) (length 49.715000)) + (spring (first 44) (second 55) (length 56.919983)) + (spring (first 55) (second 58) (length 88.074348)) + (spring (first 56) (second 57) (length 53.125095)) + (spring (first 57) (second 60) (length 80.131775)) + (spring (first 58) (second 59) (length 42.517769)) + (spring (first 53) (second 50) (length 53.472408)) + (spring (first 51) (second 52) (length 56.880745)) + (spring (first 51) (second 49) (length 62.759129)) + (spring (first 48) (second 50) (length 88.841316)) + (spring (first 44) (second 61) (length 62.035450)) + (spring (first 61) (second 62) (length 51.081707)) + (spring (first 65) (second 39) (length 92.225250)) + (spring (first 63) (second 54) (length 17.457739)) + (spring (first 63) (second 54) (length 17.457739)) + (spring (first 63) (second 43) (length 51.424599)) + (spring (first 63) (second 44) (length 43.495285)) + (spring (first 65) (second 61) (length 16.346149)) + (spring (first 61) (second 54) (length 49.208530)) + (spring (first 61) (second 65) (length 16.346149)) + (spring (first 61) (second 65) (length 16.346149)) + (spring (first 61) (second 65) (length 16.346149)) + (spring (first 65) (second 62) (length 34.735558)) + (spring (first 65) (second 66) (length 27.413366)) + (spring (first 65) (second 67) (length 25.273882)) + (spring (first 62) (second 68) (length 28.678715)) + (spring (first 68) (second 67) (length 26.875065)) + (spring (first 67) (second 69) (length 31.255968)) + (spring (first 68) (second 70) (length 27.791494)) + (spring (first 70) (second 71) (length 29.750521)) + (spring (first 71) (second 72) (length 30.717264)) + (spring (first 72) (second 73) (length 34.915596)) + (spring (first 73) (second 74) (length 40.916481)) + (spring (first 74) (second 75) (length 26.562466)) + (spring (first 75) (second 76) (length 31.916950)) + (spring (first 76) (second 77) (length 35.272495)) + (spring (first 77) (second 69) (length 47.831867)) + (spring (first 78) (second 79) (length 16.346161)) + (spring (first 80) (second 81) (length 18.389385)) + (spring (first 82) (second 83) (length 18.389526)) + (spring (first 84) (second 85) (length 30.649025)) + (spring (first 84) (second 86) (length 22.941675)) + (spring (first 85) (second 87) (length 29.843571)) + (spring (first 86) (second 84) (length 22.941675)) + (spring (first 87) (second 85) (length 29.843571)) + (spring (first 87) (second 85) (length 29.843571)) + (spring (first 87) (second 85) (length 29.843571)) + (spring (first 84) (second 86) (length 22.941675)) + (spring (first 84) (second 86) (length 22.941675)) + (spring (first 84) (second 86) (length 22.941675)) + (spring (first 84) (second 86) (length 22.941675)) + (spring (first 84) (second 86) (length 22.941675)) + (spring (first 84) (second 68) (length 16.473400)) + (spring (first 85) (second 67) (length 20.534641)) + (spring (first 84) (second 83) (length 18.838037)) + (spring (first 83) (second 85) (length 20.432690)) + (spring (first 80) (second 75) (length 41.373146)) + (spring (first 79) (second 73) (length 43.440670)) + (spring (first 70) (second 86) (length 29.570465)) + (spring (first 87) (second 69) (length 39.327686)) + (spring (first 87) (second 77) (length 27.630968)) + (spring (first 87) (second 82) (length 35.278591)) + (spring (first 82) (second 86) (length 29.552505)) + (spring (first 82) (second 84) (length 33.822247)) + (spring (first 82) (second 85) (length 34.735683)) + (spring (first 84) (second 67) (length 35.153801)) + (spring (first 68) (second 85) (length 32.946735)) + (spring (first 70) (second 84) (length 25.845570)) + (spring (first 86) (second 69) (length 79.430649)) + (spring (first 85) (second 69) (length 31.982254)) + (spring (first 85) (second 86) (length 47.474110)) + (spring (first 87) (second 85) (length 29.843571)) + (spring (first 86) (second 71) (length 19.887030)) + (spring (first 85) (second 69) (length 31.982254)) + (spring (first 88) (second 85) (length 38.415230)) + (spring (first 88) (second 77) (length 24.139896)) + (spring (first 88) (second 69) (length 23.733635)) + (spring (first 62) (second 67) (length 37.676098)) + (spring (first 65) (second 68) (length 43.440529)) + (spring (first 61) (second 67) (length 33.262005)) + (spring (first 52) (second 53) (length 31.551765)) + (spring (first 53) (second 89) (length 156.782318)) + (spring (first 89) (second 90) (length 18.311535)) + (spring (first 90) (second 91) (length 80.725616)) + (spring (first 91) (second 92) (length 16.901428)) + (spring (first 92) (second 93) (length 61.557362)) + (spring (first 93) (second 52) (length 21.499599)) + (spring (first 92) (second 94) (length 39.912102)) + (spring (first 94) (second 95) (length 15.878736)) + (spring (first 95) (second 91) (length 55.925465)) + (spring (first 96) (second 97) (length 21.763796)) + (spring (first 97) (second 98) (length 27.871262)) + (spring (first 99) (second 98) (length 18.467215)) + (spring (first 99) (second 53) (length 90.137802)) + (spring (first 96) (second 89) (length 99.633766)) + (spring (first 99) (second 96) (length 33.149654)) + (spring (first 99) (second 89) (length 66.785568)) + (spring (first 96) (second 53) (length 57.152569)) + (spring (first 98) (second 96) (length 37.715374)) + (spring (first 99) (second 97) (length 35.093056)) + (spring (first 89) (second 93) (length 142.087753)) + (spring (first 53) (second 90) (length 157.277161)) + (spring (first 93) (second 53) (length 19.527813)) + (spring (first 93) (second 52) (length 21.499599)) + (spring (first 93) (second 91) (length 60.554787)) + (spring (first 92) (second 96) (length 32.840515)) + (spring (first 91) (second 99) (length 20.558573)) + (spring (first 92) (second 53) (length 79.833939)) + (spring (first 91) (second 94) (length 56.791779)) + (spring (first 95) (second 92) (length 39.710751)) + (spring (first 91) (second 100) (length 20.558611)) + (spring (first 100) (second 95) (length 56.003628)) + (spring (first 100) (second 99) (length 16.196808)) + (spring (first 100) (second 94) (length 62.322296)) + (spring (first 90) (second 53) (length 157.277161)) + (spring (first 81) (second 76) (length 31.982306)) + (spring (first 78) (second 72) (length 24.519295)) + (spring (first 79) (second 80) (length 16.346169)) + (spring (first 81) (second 77) (length 40.299664)) + (spring (first 78) (second 71) (length 38.007195)) + (spring (first 80) (second 74) (length 34.975277)) + (spring (first 79) (second 74) (length 36.835697)) + (spring (first 81) (second 75) (length 34.975277)) + (spring (first 78) (second 73) (length 34.915596)) + (spring (first 101) (second 102) (length 16.056429)) + (spring (first 103) (second 104) (length 17.957445)) + ) +(colliders +(rect (pos1 100 100) (pos2 300 300)) +(rect (pos1 500 100) (pos2 800 300)) +(rect (pos1 -300 -600) (pos2 -100 -550)) +(rect (pos1 -100 -150) (pos2 50 -50)) +) + +) + +;; EOF ;; diff --git a/examples/explosion.construo b/examples/explosion.construo new file mode 100644 index 0000000..52f4245 --- /dev/null +++ b/examples/explosion.construo @@ -0,0 +1,114 @@ +;; Written by construo 0.1.0pre3 +(construo-scene + (particles + (particle (id 1) (pos 0.125474 599.942993 0.000000) (velocity -43.681702 -86.762497 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos 58.154202 600.000000 0.000000) (velocity 2.196280 -25.741699 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 21.681700 398.420990 0.000000) (velocity 115.185997 125.639000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 63.663799 399.696991 0.000000) (velocity -134.106003 135.585999 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 28.169800 310.101990 0.000000) (velocity 260.842010 241.570007 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 44.181599 211.460999 0.000000) (velocity 444.001007 46.135899 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 74.001900 217.115997 0.000000) (velocity 497.372009 26.436800 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 44.104000 18.027800 0.000000) (velocity -581.718018 -566.950989 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos 98.549004 24.798800 0.000000) (velocity -1087.430054 -256.911987 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 81.730301 46.948002 0.000000) (velocity -570.255981 245.585007 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos 433.660004 600.000000 0.000000) (velocity 3.283110 -1.666670 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 17) (pos 799.023010 600.000000 0.000000) (velocity 2.214690 -15.474200 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 729.924011 600.000000 0.000000) (velocity 3.186150 -0.577663 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 759.989014 452.022003 0.000000) (velocity 185.876007 176.434006 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 724.106995 448.175995 0.000000) (velocity 87.231003 -487.127991 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 773.752014 344.398010 0.000000) (velocity -512.437012 -148.625000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 771.846985 225.798996 0.000000) (velocity -731.513977 416.627014 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos 766.049988 14.043600 0.000000) (velocity -50.999401 486.001007 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 91) (pos 212.651993 39.263100 0.000000) (velocity -685.893005 -514.221985 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 93) (pos 288.962006 86.951797 0.000000) (velocity -196.380005 -2057.449951 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 94) (pos 293.778015 33.109501 0.000000) (velocity 691.030029 -568.708008 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 99) (pos 516.370972 42.391800 0.000000) (velocity -147.487000 -603.614014 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 102) (pos 617.773010 30.821800 0.000000) (velocity -2.840920 10.592100 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 104) (pos 590.986023 36.442299 0.000000) (velocity -39.502499 -372.925995 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27883) (pos 153.000000 364.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27884) (pos 198.000000 370.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27885) (pos 148.000000 416.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27886) (pos 195.000000 416.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27887) (pos 154.000000 391.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27888) (pos 193.000000 392.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27889) (pos 230.000000 385.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27890) (pos 253.000000 423.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27891) (pos 214.000000 414.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27892) (pos 267.000000 388.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27893) (pos 291.000000 390.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27894) (pos 284.000000 456.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27895) (pos 319.000000 410.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27896) (pos 294.000000 420.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27897) (pos 353.000000 371.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27898) (pos 338.000000 418.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27899) (pos 373.000000 420.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27900) (pos 433.000000 400.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27901) (pos 393.000000 401.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27902) (pos 394.000000 419.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27903) (pos 425.000000 421.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27904) (pos 473.000000 399.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27905) (pos 465.000000 420.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27906) (pos 441.000000 429.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27907) (pos 496.000000 403.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27908) (pos 490.000000 427.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27909) (pos 523.000000 396.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27910) (pos 552.000000 416.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27911) (pos 526.000000 430.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27912) (pos 512.000000 421.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27913) (pos 573.000000 400.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27914) (pos 577.000000 431.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27915) (pos 605.000000 432.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27916) (pos 596.000000 375.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 1) (second 2) (length 58.028755)) + (spring (first 5) (second 6) (length 42.001488)) + (spring (first 5) (second 7) (length 88.556992)) + (spring (first 7) (second 9) (length 99.932091)) + (spring (first 9) (second 10) (length 30.351761)) + (spring (first 10) (second 7) (length 103.667625)) + (spring (first 13) (second 14) (length 54.864422)) + (spring (first 14) (second 15) (length 27.811075)) + (spring (first 15) (second 13) (length 47.456470)) + (spring (first 16) (second 17) (length 365.363007)) + (spring (first 17) (second 18) (length 69.098999)) + (spring (first 21) (second 22) (length 36.087547)) + (spring (first 24) (second 21) (length 108.500435)) + (spring (first 24) (second 22) (length 115.041290)) + (spring (first 26) (second 24) (length 118.614311)) + (spring (first 14) (second 91) (length 115.016121)) + (spring (first 93) (second 94) (length 54.057255)) + (spring (first 94) (second 91) (length 81.359070)) + (spring (first 102) (second 99) (length 102.059975)) + (spring (first 104) (second 102) (length 27.370289)) + (spring (first 104) (second 99) (length 74.851868)) + (spring (first 91) (second 93) (length 89.985718)) + (spring (first 27883) (second 27884) (length 45.398239)) + (spring (first 27883) (second 27885) (length 52.239830)) + (spring (first 27885) (second 27886) (length 47.000000)) + (spring (first 27887) (second 27888) (length 39.012817)) + (spring (first 27889) (second 27890) (length 44.418465)) + (spring (first 27891) (second 27892) (length 59.033890)) + (spring (first 27893) (second 27894) (length 66.370171)) + (spring (first 27893) (second 27895) (length 34.409302)) + (spring (first 27895) (second 27896) (length 26.925823)) + (spring (first 27897) (second 27898) (length 49.335587)) + (spring (first 27898) (second 27899) (length 35.057095)) + (spring (first 27900) (second 27901) (length 40.012497)) + (spring (first 27901) (second 27902) (length 18.027756)) + (spring (first 27902) (second 27903) (length 31.064449)) + (spring (first 27903) (second 27900) (length 22.472204)) + (spring (first 27904) (second 27900) (length 40.012497)) + (spring (first 27900) (second 27905) (length 37.735924)) + (spring (first 27905) (second 27906) (length 25.632011)) + (spring (first 27907) (second 27908) (length 24.738634)) + (spring (first 27909) (second 27910) (length 35.227829)) + (spring (first 27910) (second 27911) (length 29.529646)) + (spring (first 27909) (second 27912) (length 27.313000)) + (spring (first 27912) (second 27911) (length 16.643316)) + (spring (first 27913) (second 27914) (length 31.257000)) + (spring (first 27913) (second 27915) (length 45.254833)) + (spring (first 27915) (second 27916) (length 57.706154)) + )) + +;; EOF ;; diff --git a/examples/galactica.construo b/examples/galactica.construo new file mode 100644 index 0000000..6fc90a9 --- /dev/null +++ b/examples/galactica.construo @@ -0,0 +1,118 @@ +;; Written by construo 0.2.1rc2 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 3223.167236 -104.951569) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos 3192.134521 -86.592133) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 3191.058350 -66.621490) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 3239.912354 -43.963509) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 3459.595215 -32.142616) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 3478.491211 -11.096569) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 3528.419922 -8.410412) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 3412.891602 -94.743317) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 3484.402344 -120.938416) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 3534.331055 -118.251556) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 10) (pos 3536.479004 -158.193817) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos 3547.003418 -167.642548) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 3676.815186 -160.657379) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 3673.052490 -90.758209) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 3533.256348 -98.280426) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 3530.568359 -48.352123) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 3526.269531 31.532143) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 3696.025146 40.666210) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 3700.324951 -39.218178) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 3660.696777 138.909882) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 3730.594238 142.670990) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 3528.104980 -188.687225) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 3529.716797 -218.643890) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 3655.992676 -332.023376) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 3715.905518 -328.799103) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 3707.846436 -179.015900) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 3482.252441 -80.995499) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 3396.519531 -34.922798) (velocity -718.756836 -12.652145) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 36.056877) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 19.999617) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 3) (length 53.852558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 5) (length 28.284180) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 6) (length 50.000916) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 7) (length 189.998795) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 76.157532) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 50.000954) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 10) (length 39.999973) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 11) (length 14.143614) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 12) (length 129.999573) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 13) (length 70.000374) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 139.998383) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 9) (length 20.000027) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 6) (length 39.999451) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 16) (length 40.000397) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 170.001175) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 80.000023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 18) (length 170.002151) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 19) (length 172.048431) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 20) (length 69.998581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 21) (length 28.284790) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 22) (length 29.999996) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 169.707123) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 23) (length 59.999538) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 26) (length 149.999863) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 12) (length 36.055149) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 18) (length 58.310909) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 3) (length 63.245098) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 3) (length 64.030624) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 7) (length 180.278702) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 7) (length 78.102982) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 7) (length 70.710175) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 27) (length 40.000732) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 27) (length 53.853199) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 50.000607) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 14) (length 53.852558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 4) (length 53.851223) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 15) (length 58.309673) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 6) (length 86.023430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 5) (length 70.000046) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 4) (length 247.384995) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 17) (length 187.883499) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 16) (length 187.885330) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 17) (length 174.642563) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 12) (length 172.626419) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 26) (length 182.484375) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 12) (length 151.328766) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 13) (length 152.315063) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 11) (length 147.646774) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 14) (length 156.524841) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 12) (length 172.625870) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 13) (length 141.419662) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 15) (length 148.660706) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 22) (length 53.851315) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 4) (length 92.195923) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 15) (length 72.800652) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 6) (length 72.801498) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 18) (length 174.643799) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 14) (length 177.201202) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 17) (length 214.009003) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 13) (length 191.050171) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 17) (length 254.951538) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 16) (length 244.132751) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 28) (length 156.867920) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 4) (length 63.136925) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 7) (length 62.020473) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 0) (length 186.962692) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 8) (length 122.971848) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 9) (length 161.045639) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 6) (length 144.222610) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 28) (length 134.719833) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 28) (length 150.702179) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 17) (length 107.703278) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 17) (length 104.402641) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 122.571220 -887.634216) (pos2 349.972626 704.175720)) + (rect (pos1 1481.242432 -452.040192) (pos2 2308.607422 -247.885193)) + (rect (pos1 1470.497559 112.072311) (pos2 2410.685059 246.384811)) + )) + +;; EOF ;; diff --git a/examples/hangon.construo b/examples/hangon.construo new file mode 100644 index 0000000..3b34a6e --- /dev/null +++ b/examples/hangon.construo @@ -0,0 +1,158 @@ + +(construo-scene + (particles + (particle (id 1) (pos 0.125474 599.943 0 ) (velocity -43.6817 -86.7625 0 ) ) + (particle (id 2) (pos 58.1542 600 0 ) (velocity 2.19628 -25.7417 0 ) ) + (particle (id 3) (pos 58.0937 509.936 0 ) (velocity -300.743 39.636 0 ) ) + (particle (id 4) (pos 11.9617 508.914 0 ) (velocity -253.926 173.877 0 ) ) + (particle (id 5) (pos 21.6817 398.421 0 ) (velocity 115.186 125.639 0 ) ) + (particle (id 6) (pos 63.6638 399.697 0 ) (velocity -134.106 135.586 0 ) ) + (particle (id 7) (pos 28.1698 310.102 0 ) (velocity 260.842 241.57 0 ) ) + (particle (id 8) (pos 60.3656 309.073 0 ) (velocity 198.172 -264.085 0 ) ) + (particle (id 9) (pos 44.1816 211.461 0 ) (velocity 444.001 46.1359 0 ) ) + (particle (id 10) (pos 74.0019 217.116 0 ) (velocity 497.372 26.4368 0 ) ) + (particle (id 11) (pos 29.5707 133.434 0 ) (velocity -729.831 86.8976 0 ) ) + (particle (id 12) (pos 64.6143 133.046 0 ) (velocity -727.725 42.6112 0 ) ) + (particle (id 13) (pos 44.104 18.0278 0 ) (velocity -581.718 -566.951 0 ) ) + (particle (id 14) (pos 98.549 24.7988 0 ) (velocity -1087.43 -256.912 0 ) ) + (particle (id 15) (pos 81.7303 46.948 0 ) (velocity -570.256 245.585 0 ) ) + (particle (id 16) (pos 433.66 600 0 ) (velocity 3.28311 -1.66667 0 ) ) + (particle (id 17) (pos 799.023 600 0 ) (velocity 2.21469 -15.4742 0 ) ) + (particle (id 18) (pos 729.924 600 0 ) (velocity 3.18615 -0.577663 0 ) ) + (particle (id 19) (pos 729.595 504.222 0 ) (velocity 228.716 0.84798 0 ) ) + (particle (id 20) (pos 769.66 504.971 0 ) (velocity 314.533 299.463 0 ) ) + (particle (id 21) (pos 759.989 452.022 0 ) (velocity 185.876 176.434 0 ) ) + (particle (id 22) (pos 724.107 448.176 0 ) (velocity 87.231 -487.128 0 ) ) + (particle (id 23) (pos 720.71 345.689 0 ) (velocity -178.156 410.31 0 ) ) + (particle (id 24) (pos 773.752 344.398 0 ) (velocity -512.437 -148.625 0 ) ) + (particle (id 25) (pos 730.045 232.908 0 ) (velocity -827.722 351.818 0 ) ) + (particle (id 26) (pos 771.847 225.799 0 ) (velocity -731.514 416.627 0 ) ) + (particle (id 27) (pos 728.318 96.52 0 ) (velocity -149.184 242.351 0 ) ) + (particle (id 28) (pos 765.972 90.4775 0 ) (velocity -433.845 349.814 0 ) ) + (particle (id 29) (pos 726.313 18.8051 0 ) (velocity 59.8992 345.417 0 ) ) + (particle (id 30) (pos 766.05 14.0436 0 ) (velocity -50.9994 486.001 0 ) ) + (particle (id 91) (pos 212.652 39.2631 0 ) (velocity -685.893 -514.222 0 ) ) + (particle (id 92) (pos 203.292 85.7184 0 ) (velocity -84.2394 -114.671 0 ) ) + (particle (id 93) (pos 288.962 86.9518 0 ) (velocity -196.38 -2057.45 0 ) ) + (particle (id 94) (pos 293.778 33.1095 0 ) (velocity 691.03 -568.708 0 ) ) + (particle (id 95) (pos 404.317 44.1925 0 ) (velocity -73.1797 -651.966 0 ) ) + (particle (id 96) (pos 395.852 93.9047 0 ) (velocity 133.503 -224.099 0 ) ) + (particle (id 97) (pos 423.227 91.0424 0 ) (velocity -56.2801 -544.06 0 ) ) + (particle (id 98) (pos 442.792 38.8157 0 ) (velocity -154.555 -118.433 0 ) ) + (particle (id 99) (pos 516.371 42.3918 0 ) (velocity -147.487 -603.614 0 ) ) + (particle (id 100) (pos 512.05 86.5403 0 ) (velocity -141.737 -658.562 0 ) ) + (particle (id 101) (pos 619.926 84.7279 0 ) (velocity -179.61 219.097 0 ) ) + (particle (id 102) (pos 617.773 30.8218 0 ) (velocity -2.84092 10.5921 0 ) ) + (particle (id 103) (pos 650.366 71.0284 0 ) (velocity 30.5893 7.88187 0 ) ) + (particle (id 104) (pos 590.986 36.4423 0 ) (velocity -39.5025 -372.926 0 ) ) + ) + (springs + (spring (first 1)(second 2)) + (spring (first 2)(second 3)) + (spring (first 3)(second 4)) + (spring (first 4)(second 1)) + (spring (first 4)(second 2)) + (spring (first 3)(second 1)) + (spring (first 4)(second 5)) + (spring (first 5)(second 6)) + (spring (first 6)(second 3)) + (spring (first 6)(second 4)) + (spring (first 5)(second 3)) + (spring (first 5)(second 7)) + (spring (first 7)(second 8)) + (spring (first 8)(second 6)) + (spring (first 8)(second 5)) + (spring (first 7)(second 9)) + (spring (first 9)(second 10)) + (spring (first 10)(second 8)) + (spring (first 9)(second 8)) + (spring (first 10)(second 7)) + (spring (first 9)(second 11)) + (spring (first 11)(second 12)) + (spring (first 12)(second 10)) + (spring (first 12)(second 9)) + (spring (first 11)(second 10)) + (spring (first 11)(second 13)) + (spring (first 13)(second 14)) + (spring (first 14)(second 12)) + (spring (first 13)(second 12)) + (spring (first 15)(second 11)) + (spring (first 15)(second 12)) + (spring (first 14)(second 15)) + (spring (first 15)(second 13)) + (spring (first 16)(second 17)) + (spring (first 17)(second 18)) + (spring (first 18)(second 19)) + (spring (first 19)(second 20)) + (spring (first 20)(second 17)) + (spring (first 20)(second 18)) + (spring (first 19)(second 17)) + (spring (first 20)(second 21)) + (spring (first 21)(second 22)) + (spring (first 22)(second 19)) + (spring (first 22)(second 20)) + (spring (first 21)(second 19)) + (spring (first 22)(second 23)) + (spring (first 23)(second 24)) + (spring (first 24)(second 21)) + (spring (first 21)(second 23)) + (spring (first 24)(second 22)) + (spring (first 23)(second 25)) + (spring (first 25)(second 26)) + (spring (first 26)(second 24)) + (spring (first 25)(second 27)) + (spring (first 27)(second 28)) + (spring (first 28)(second 26)) + (spring (first 27)(second 26)) + (spring (first 28)(second 25)) + (spring (first 27)(second 29)) + (spring (first 29)(second 30)) + (spring (first 30)(second 28)) + (spring (first 30)(second 27)) + (spring (first 29)(second 28)) + (spring (first 25)(second 24)) + (spring (first 26)(second 23)) + (spring (first 14)(second 91)) + (spring (first 91)(second 92)) + (spring (first 92)(second 12)) + (spring (first 12)(second 91)) + (spring (first 14)(second 92)) + (spring (first 92)(second 93)) + (spring (first 93)(second 94)) + (spring (first 94)(second 91)) + (spring (first 94)(second 95)) + (spring (first 95)(second 96)) + (spring (first 96)(second 93)) + (spring (first 97)(second 96)) + (spring (first 97)(second 98)) + (spring (first 98)(second 95)) + (spring (first 98)(second 99)) + (spring (first 99)(second 100)) + (spring (first 100)(second 97)) + (spring (first 100)(second 101)) + (spring (first 101)(second 102)) + (spring (first 102)(second 99)) + (spring (first 102)(second 29)) + (spring (first 101)(second 28)) + (spring (first 27)(second 101)) + (spring (first 103)(second 101)) + (spring (first 103)(second 29)) + (spring (first 103)(second 27)) + (spring (first 102)(second 103)) + (spring (first 101)(second 99)) + (spring (first 104)(second 100)) + (spring (first 104)(second 102)) + (spring (first 104)(second 101)) + (spring (first 104)(second 99)) + (spring (first 99)(second 97)) + (spring (first 98)(second 100)) + (spring (first 97)(second 95)) + (spring (first 96)(second 98)) + (spring (first 94)(second 96)) + (spring (first 95)(second 93)) + (spring (first 91)(second 93)) + (spring (first 94)(second 92)) + (spring (first 101)(second 25)) + (spring (first 10)(second 92)) + ) +) diff --git a/examples/house.construo b/examples/house.construo new file mode 100644 index 0000000..3695d09 --- /dev/null +++ b/examples/house.construo @@ -0,0 +1,1488 @@ +;; Written by construo 0.2.1rc2 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 5) (pos 1148.553101 537.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 1178.553101 537.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 1148.553101 507.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 1178.553101 507.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos 1148.553101 477.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 1178.553101 477.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 1148.553101 447.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 1178.553101 447.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 1148.553101 417.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 1178.553101 417.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 1148.553101 387.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 1178.553101 387.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 1148.553101 357.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 1178.553101 357.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 1208.553101 327.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 1208.553101 357.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 1238.553101 357.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 1238.553101 327.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 1268.553101 327.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 1268.553101 357.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 1298.553101 357.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 1298.553101 327.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 1328.553101 327.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 1328.553101 357.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 1358.553101 357.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 1358.553101 327.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 46) (pos 1628.454834 537.555054) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 1598.454834 537.555054) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 1628.454834 507.554840) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 1598.454834 507.554840) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos 1628.454834 477.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 51) (pos 1598.454834 477.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 1628.454834 447.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 53) (pos 1598.454834 447.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 1628.454834 417.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 1598.454834 417.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 1628.454834 387.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 1598.454834 387.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 1628.454834 357.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 60) (pos 1598.454834 357.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 1568.454834 327.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 1568.454834 357.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 1538.454834 357.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 1538.454834 327.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 1508.454834 327.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 1508.454834 357.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 1478.454834 357.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 1478.454834 327.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 70) (pos 1448.454834 327.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 71) (pos 1448.454834 357.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 1418.454834 357.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 1388.504028 357.635376) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 74) (pos 1418.454834 327.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 75) (pos 1388.504028 327.635376) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 76) (pos 1148.533081 567.735046) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 77) (pos 1148.513184 597.753967) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 78) (pos 1178.513184 597.753967) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 79) (pos 1178.533081 567.735046) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 80) (pos 1208.513184 567.754028) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 81) (pos 1208.513184 597.753967) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 82) (pos 1238.513184 597.753967) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 83) (pos 1238.513184 567.754028) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 84) (pos 1268.513184 567.754028) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 85) (pos 1268.513184 597.753967) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 86) (pos 1298.513184 597.753967) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 87) (pos 1298.513184 567.754028) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 88) (pos 1328.513184 567.754028) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 89) (pos 1328.513184 597.753967) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 90) (pos 1358.513184 597.753967) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 91) (pos 1358.513184 567.754028) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 92) (pos 1628.434937 567.573853) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 93) (pos 1628.414917 597.592651) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 94) (pos 1598.414917 597.592651) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 95) (pos 1598.434937 567.573853) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 96) (pos 1568.414917 567.592712) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 97) (pos 1568.414917 597.592651) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 98) (pos 1538.414917 597.592651) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 99) (pos 1538.414917 567.592712) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 100) (pos 1508.414917 567.592712) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 101) (pos 1508.414917 597.592651) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 102) (pos 1478.414917 597.592651) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 103) (pos 1478.414917 567.592712) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 104) (pos 1448.414917 567.592712) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 105) (pos 1448.414917 597.592651) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 106) (pos 1418.414917 597.592651) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 107) (pos 1388.464111 597.673340) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 108) (pos 1418.414917 567.592712) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 109) (pos 1388.464111 567.673340) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 110) (pos 1148.553101 327.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 111) (pos 1178.553101 327.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 112) (pos 1148.553101 297.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 113) (pos 1178.553101 297.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 114) (pos 1148.553101 267.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 115) (pos 1178.553101 267.716034) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 116) (pos 1148.553101 237.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 117) (pos 1178.553101 237.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 118) (pos 1148.553101 207.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 119) (pos 1178.553101 207.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 120) (pos 1148.553101 177.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 121) (pos 1178.553101 177.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 123) (pos 1148.553101 147.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 124) (pos 1178.553101 147.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 126) (pos 1208.553101 117.716057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 127) (pos 1208.553101 147.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 128) (pos 1238.553101 147.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 129) (pos 1238.553101 117.716057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 130) (pos 1268.553101 117.716057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 131) (pos 1268.553101 147.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 132) (pos 1298.553101 147.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 133) (pos 1298.553101 117.716057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 134) (pos 1328.553101 117.716057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 135) (pos 1328.553101 147.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 136) (pos 1358.553101 147.716064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 137) (pos 1358.553101 117.716057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 138) (pos 1628.454834 327.554871) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 139) (pos 1598.454834 327.554871) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 140) (pos 1628.454834 297.554840) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 141) (pos 1598.454834 297.554840) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 142) (pos 1628.454834 267.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 143) (pos 1598.454834 267.554718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 144) (pos 1628.454834 237.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 145) (pos 1598.454834 237.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 146) (pos 1628.454834 207.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 147) (pos 1598.454834 207.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 148) (pos 1628.454834 177.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 149) (pos 1598.454834 177.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 151) (pos 1628.454834 147.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 152) (pos 1598.454834 147.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 154) (pos 1568.454834 117.554741) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 155) (pos 1568.454834 147.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 156) (pos 1538.454834 147.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 157) (pos 1538.454834 117.554741) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 158) (pos 1508.454834 117.554741) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 159) (pos 1508.454834 147.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 160) (pos 1478.454834 147.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 161) (pos 1478.454834 117.554741) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 162) (pos 1448.454834 117.554741) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 163) (pos 1448.454834 147.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 164) (pos 1418.454834 147.554749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 165) (pos 1388.504028 147.635406) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 166) (pos 1418.454834 117.554741) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 167) (pos 1388.504028 117.635399) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 168) (pos 1148.553101 117.716057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 169) (pos 1178.553101 117.716057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 170) (pos 1148.553101 87.716057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 171) (pos 1178.553101 87.716057) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 172) (pos 1148.553101 57.716042) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 173) (pos 1178.553101 57.716042) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 174) (pos 1148.553101 27.716047) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 175) (pos 1178.553101 27.716047) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 176) (pos 1148.553101 -2.283952) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 177) (pos 1178.553101 -2.283952) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 178) (pos 1148.553101 -32.283955) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 179) (pos 1178.553101 -32.283955) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 181) (pos 1148.553101 -62.283955) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 182) (pos 1178.553101 -62.283955) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 184) (pos 1208.553101 -92.283943) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 185) (pos 1208.553101 -62.283955) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 186) (pos 1238.553101 -62.283955) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 187) (pos 1238.553101 -92.283943) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 188) (pos 1268.553101 -92.283943) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 189) (pos 1268.553101 -62.283955) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 190) (pos 1298.553101 -62.283955) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 191) (pos 1298.553101 -92.283943) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 192) (pos 1328.553101 -92.283943) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 193) (pos 1328.553101 -62.283955) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 194) (pos 1358.553101 -62.283955) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 195) (pos 1358.553101 -92.283943) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 196) (pos 1628.454834 117.554893) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 197) (pos 1598.454834 117.554893) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 198) (pos 1628.454834 87.554863) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 199) (pos 1598.454834 87.554863) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 200) (pos 1628.454834 57.554726) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 201) (pos 1598.454834 57.554726) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 202) (pos 1628.454834 27.554731) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 203) (pos 1598.454834 27.554731) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 204) (pos 1628.454834 -2.445267) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 205) (pos 1598.454834 -2.445267) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 206) (pos 1628.454834 -32.445271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 207) (pos 1598.454834 -32.445271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 209) (pos 1628.454834 -62.445271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 210) (pos 1598.454834 -62.445271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 212) (pos 1568.454834 -92.445259) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 213) (pos 1568.454834 -62.445271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 214) (pos 1538.454834 -62.445271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 215) (pos 1538.454834 -92.445259) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 216) (pos 1508.454834 -92.445259) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 217) (pos 1508.454834 -62.445271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 218) (pos 1478.454834 -62.445271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 219) (pos 1478.454834 -92.445259) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 220) (pos 1448.454834 -92.445259) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 221) (pos 1448.454834 -62.445271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 222) (pos 1418.454834 -62.445271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 223) (pos 1388.504028 -62.364613) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 224) (pos 1418.454834 -92.445259) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 225) (pos 1388.504028 -92.364601) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 226) (pos 1148.553101 -92.283943) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 227) (pos 1178.553101 -92.283943) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 228) (pos 1148.553101 -122.283943) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 229) (pos 1178.553101 -122.283943) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 230) (pos 1148.553101 -152.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 231) (pos 1178.553101 -152.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 232) (pos 1148.553101 -182.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 233) (pos 1178.553101 -182.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 234) (pos 1148.553101 -212.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 235) (pos 1178.553101 -212.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 236) (pos 1148.553101 -242.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 237) (pos 1178.553101 -242.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 238) (pos 1148.553101 -272.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 239) (pos 1178.553101 -272.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 240) (pos 1208.553101 -302.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 241) (pos 1208.553101 -272.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 242) (pos 1238.553101 -272.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 243) (pos 1238.553101 -302.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 244) (pos 1268.553101 -302.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 245) (pos 1268.553101 -272.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 246) (pos 1298.553101 -272.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 247) (pos 1298.553101 -302.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 248) (pos 1328.553101 -302.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 249) (pos 1328.553101 -272.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 250) (pos 1358.553101 -272.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 251) (pos 1358.553101 -302.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 252) (pos 1628.454834 -92.445107) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 253) (pos 1598.454834 -92.445107) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 254) (pos 1628.454834 -122.445137) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 255) (pos 1598.454834 -122.445137) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 256) (pos 1628.454834 -152.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 257) (pos 1598.454834 -152.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 258) (pos 1628.454834 -182.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 259) (pos 1598.454834 -182.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 260) (pos 1628.454834 -212.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 261) (pos 1598.454834 -212.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 262) (pos 1628.454834 -242.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 263) (pos 1598.454834 -242.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 264) (pos 1628.454834 -272.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 265) (pos 1598.454834 -272.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 266) (pos 1568.454834 -302.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 267) (pos 1568.454834 -272.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 268) (pos 1538.454834 -272.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 269) (pos 1538.454834 -302.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 270) (pos 1508.454834 -302.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 271) (pos 1508.454834 -272.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 272) (pos 1478.454834 -272.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 273) (pos 1478.454834 -302.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 274) (pos 1448.454834 -302.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 275) (pos 1448.454834 -272.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 276) (pos 1418.454834 -272.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 277) (pos 1388.504028 -272.364624) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 278) (pos 1418.454834 -302.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 279) (pos 1388.504028 -302.364624) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 280) (pos 1148.553101 -302.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 281) (pos 1178.553101 -302.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 282) (pos 1148.553101 -332.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 283) (pos 1178.553101 -332.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 284) (pos 1148.553101 -362.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 285) (pos 1178.553101 -362.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 286) (pos 1148.553101 -392.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 287) (pos 1178.553101 -392.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 288) (pos 1148.553101 -422.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 289) (pos 1178.553101 -422.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 290) (pos 1148.553101 -452.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 291) (pos 1178.553101 -452.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 292) (pos 1148.553101 -482.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 293) (pos 1178.553101 -482.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 294) (pos 1208.553101 -512.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 295) (pos 1208.553101 -482.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 296) (pos 1238.553101 -482.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 297) (pos 1238.553101 -512.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 298) (pos 1268.553101 -512.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 299) (pos 1268.553101 -482.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 300) (pos 1298.553101 -482.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 301) (pos 1298.553101 -512.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 302) (pos 1328.553101 -512.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 303) (pos 1328.553101 -482.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 304) (pos 1358.553101 -482.283966) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 305) (pos 1358.553101 -512.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 306) (pos 1628.454834 -302.445129) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 307) (pos 1598.454834 -302.445129) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 308) (pos 1628.454834 -332.445160) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 309) (pos 1598.454834 -332.445160) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 310) (pos 1628.454834 -362.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 311) (pos 1598.454834 -362.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 312) (pos 1628.454834 -392.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 313) (pos 1598.454834 -392.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 314) (pos 1628.454834 -422.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 315) (pos 1598.454834 -422.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 316) (pos 1628.454834 -452.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 317) (pos 1598.454834 -452.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 318) (pos 1628.454834 -482.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 319) (pos 1598.454834 -482.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 320) (pos 1568.454834 -512.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 321) (pos 1568.454834 -482.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 322) (pos 1538.454834 -482.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 323) (pos 1538.454834 -512.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 324) (pos 1508.454834 -512.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 325) (pos 1508.454834 -482.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 326) (pos 1478.454834 -482.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 327) (pos 1478.454834 -512.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 328) (pos 1448.454834 -512.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 329) (pos 1448.454834 -482.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 330) (pos 1418.454834 -482.445282) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 331) (pos 1388.504028 -482.364655) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 332) (pos 1418.454834 -512.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 333) (pos 1388.504028 -512.364624) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 334) (pos 1148.553101 -512.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 335) (pos 1178.553101 -512.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 336) (pos 1148.553101 -542.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 337) (pos 1178.553101 -542.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 338) (pos 1148.553101 -572.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 339) (pos 1178.553101 -572.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 340) (pos 1148.553101 -602.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 341) (pos 1178.553101 -602.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 342) (pos 1148.553101 -632.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 343) (pos 1178.553101 -632.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 344) (pos 1148.553101 -662.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 345) (pos 1178.553101 -662.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 346) (pos 1148.553101 -722.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 347) (pos 1148.553101 -692.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 348) (pos 1178.553101 -692.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 349) (pos 1178.553101 -722.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 350) (pos 1208.553101 -722.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 351) (pos 1208.553101 -692.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 352) (pos 1238.553101 -692.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 353) (pos 1238.553101 -722.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 354) (pos 1268.553101 -722.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 355) (pos 1268.553101 -692.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 356) (pos 1298.553101 -692.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 357) (pos 1298.553101 -722.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 358) (pos 1328.553101 -722.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 359) (pos 1328.553101 -692.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 360) (pos 1358.553101 -692.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 361) (pos 1358.553101 -722.283936) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 362) (pos 1628.454834 -512.445068) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 363) (pos 1598.454834 -512.445068) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 364) (pos 1628.454834 -542.445129) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 365) (pos 1598.454834 -542.445129) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 366) (pos 1628.454834 -572.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 367) (pos 1598.454834 -572.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 368) (pos 1628.454834 -602.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 369) (pos 1598.454834 -602.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 370) (pos 1628.454834 -632.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 371) (pos 1598.454834 -632.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 372) (pos 1628.454834 -662.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 373) (pos 1598.454834 -662.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 374) (pos 1628.454834 -722.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 375) (pos 1628.454834 -692.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 376) (pos 1598.454834 -692.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 377) (pos 1598.454834 -722.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 378) (pos 1568.454834 -722.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 379) (pos 1568.454834 -692.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 380) (pos 1538.454834 -692.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 381) (pos 1538.454834 -722.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 382) (pos 1508.454834 -722.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 383) (pos 1508.454834 -692.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 384) (pos 1478.454834 -692.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 385) (pos 1478.454834 -722.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 386) (pos 1448.454834 -722.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 387) (pos 1448.454834 -692.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 388) (pos 1418.454834 -692.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 389) (pos 1388.504028 -692.364624) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 390) (pos 1418.454834 -722.445251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 391) (pos 1388.504028 -722.364624) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 5) (second 76) (length 30.018988) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 79) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 79) (length 30.018988) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 5) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 76) (length 42.453983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 5) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 6) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 6) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 8) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 5) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 8) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 9) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 11) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 8) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 11) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 11) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 16) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 14) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 16) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 17) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 16) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 21) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 18) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 21) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 110) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 21) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 111) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 24) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 28) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 30) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 30) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 28) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 29) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 30) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 30) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 32) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 30) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 34) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 36) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 36) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 34) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 35) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 36) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 36) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 37) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 36) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 38) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 39) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 40) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 40) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 38) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 39) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 40) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 40) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 73) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 73) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 42) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 40) (length 42.448841) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 75) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 92) (length 30.018805) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 95) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 95) (length 30.018805) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 46) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 92) (length 42.425640) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 46) (length 30.000214) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 47) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 47) (length 30.000214) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 48) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 46) (length 42.426559) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 48) (length 30.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 49) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 49) (length 30.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 50) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 48) (length 42.426495) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 50) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 51) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 51) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 52) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 50) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 52) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 53) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 53) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 52) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 54) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 57) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 57) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 59) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 56) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 59) (length 29.999847) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 60) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 60) (length 29.999847) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 138) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 59) (length 42.426300) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 60) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 60) (length 29.999847) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 63) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 139) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 60) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 63) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 63) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 67) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 67) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 64) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 67) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 67) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 68) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 68) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 67) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 68) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 68) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 68) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 70) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 72) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 72) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 70) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 71) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 72) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 72) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 73) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 74) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 72) (length 42.334595) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 75) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 77) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 76) (second 77) (length 30.018927) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 78) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 78) (length 30.018927) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 76) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 77) (length 42.453857) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 81) (second 78) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 78) (length 30.018927) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 78) (second 81) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 81) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 79) (length 29.980108) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 78) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 80) (length 29.980108) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 81) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 81) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 81) (second 82) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 82) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 80) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 81) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 85) (second 82) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 82) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 85) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 85) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 83) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 82) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 84) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 85) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 85) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 85) (second 86) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 86) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 84) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 85) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 89) (second 86) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 86) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 86) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 89) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 87) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 86) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 87) (second 88) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 89) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 89) (second 90) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 90) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 88) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 89) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 90) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 90) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 107) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 109) (second 107) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 109) (second 91) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 109) (second 90) (length 42.448818) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 91) (second 109) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 93) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 93) (length 30.018805) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 94) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 94) (length 30.018805) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 92) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 93) (length 42.425552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 97) (second 94) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 94) (length 30.018805) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 97) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 95) (length 30.020025) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 94) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 96) (length 30.020025) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 97) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 97) (second 98) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 98) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 96) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 97) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 98) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 98) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 101) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 99) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 98) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 100) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 101) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 101) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 101) (second 102) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 102) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 100) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 101) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 102) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 102) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 102) (second 105) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 105) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 103) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 102) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 103) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 105) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 104) (second 105) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 105) (second 106) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 106) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 104) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 105) (length 42.426365) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 107) (second 106) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 106) (length 29.999939) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 106) (second 107) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 109) (second 107) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 109) (second 108) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 109) (second 106) (length 42.334572) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 108) (second 109) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 111) (second 110) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 110) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 110) (second 111) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 113) (second 111) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 113) (second 112) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 113) (second 110) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 112) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 112) (second 113) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 113) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 114) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 115) (second 112) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 116) (second 114) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 114) (second 115) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 117) (second 115) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 117) (second 116) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 117) (second 114) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 116) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 116) (second 117) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 117) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 118) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 119) (second 116) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 118) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 118) (second 119) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 121) (second 119) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 121) (second 120) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 121) (second 118) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 120) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 120) (second 121) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 121) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 123) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 120) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 168) (second 123) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 123) (second 124) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 124) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 168) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 123) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 124) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 124) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 127) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 127) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 169) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 124) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 126) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 127) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 127) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 128) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 128) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 126) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 127) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 128) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 128) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 131) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 131) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 129) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 128) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 130) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 131) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 130) (second 131) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 131) (second 132) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 132) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 130) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 131) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 132) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 132) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 132) (second 135) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 133) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 132) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 133) (second 134) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 135) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 136) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 136) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 134) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 135) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 136) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 136) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 165) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 165) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 137) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 136) (length 42.448845) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 167) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 138) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 138) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 139) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 139) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 140) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 138) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 140) (length 30.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 141) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 141) (length 30.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 142) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 140) (length 42.426495) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 142) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 143) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 143) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 142) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 145) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 145) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 146) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 144) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 146) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 147) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 147) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 148) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 146) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 148) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 149) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 149) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 151) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 148) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 151) (length 29.999855) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 152) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 152) (length 29.999855) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 196) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 151) (length 42.426304) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 152) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 152) (length 29.999855) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 155) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 155) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 197) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 152) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 154) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 155) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 155) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 156) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 156) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 154) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 155) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 159) (second 156) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 156) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 159) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 159) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 157) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 156) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 158) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 160) (second 159) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 159) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 159) (second 160) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 161) (second 160) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 161) (second 158) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 161) (second 159) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 160) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 161) (second 160) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 160) (second 163) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 163) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 161) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 160) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 161) (second 162) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 164) (second 163) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 163) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 164) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 164) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 162) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 163) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 164) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 164) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 164) (second 165) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 165) (length 30.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 166) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 164) (length 42.334599) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 167) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 168) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 170) (second 168) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 168) (second 169) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 171) (second 169) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 171) (second 170) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 171) (second 168) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 170) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 170) (second 171) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 171) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 172) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 170) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 174) (second 172) (length 29.999994) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 173) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 175) (second 173) (length 29.999994) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 175) (second 174) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 175) (second 172) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 176) (second 174) (length 29.999998) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 174) (second 175) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 175) (length 29.999998) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 176) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 174) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 176) (length 30.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 176) (second 177) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 177) (length 30.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 178) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 176) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 178) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 179) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 179) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 181) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 178) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 181) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 182) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 182) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 226) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 181) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 185) (second 182) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 182) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 185) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 185) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 227) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 182) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 184) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 186) (second 185) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 185) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 185) (second 186) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 186) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 184) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 185) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 189) (second 186) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 186) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 186) (second 189) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 189) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 187) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 186) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 188) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 190) (second 189) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 189) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 189) (second 190) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 190) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 188) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 189) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 193) (second 190) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 190) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 190) (second 193) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 193) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 191) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 190) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 192) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 194) (second 193) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 193) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 193) (second 194) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 195) (second 194) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 195) (second 192) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 195) (second 193) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 223) (second 194) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 195) (second 194) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 194) (second 223) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 223) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 195) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 194) (length 42.448833) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 195) (second 225) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 196) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 196) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 197) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 199) (second 197) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 199) (second 198) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 199) (second 196) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 198) (length 30.000137) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 199) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 199) (length 30.000137) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 200) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 198) (length 42.426502) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 200) (length 29.999994) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 201) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 201) (length 29.999994) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 202) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 200) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 202) (length 29.999998) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 203) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 203) (length 29.999998) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 204) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 202) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 204) (length 30.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 205) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 205) (length 30.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 206) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 204) (length 42.426411) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 206) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 207) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 207) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 209) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 206) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 209) (length 29.999836) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 209) (second 210) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 210) (length 29.999836) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 252) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 209) (length 42.426292) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 210) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 210) (length 29.999836) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 213) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 213) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 253) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 210) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 212) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 213) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 213) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 214) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 214) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 212) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 213) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 214) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 214) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 217) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 217) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 215) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 214) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 216) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 218) (second 217) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 217) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 218) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 216) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 217) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 218) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 218) (second 221) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 221) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 219) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 218) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 220) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 221) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 221) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 222) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 222) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 220) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 221) (length 42.426399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 223) (second 222) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 222) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 222) (second 223) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 223) (length 29.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 224) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 222) (length 42.334587) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 225) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 226) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 228) (second 226) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 227) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 227) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 228) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 226) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 228) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 228) (second 229) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 229) (length 29.999992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 230) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 228) (length 42.426403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 232) (second 230) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 231) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 233) (second 231) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 233) (second 232) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 233) (second 230) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 232) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 232) (second 233) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 233) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 234) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 232) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 234) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 235) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 235) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 236) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 234) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 238) (second 236) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 237) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 237) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 238) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 236) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 238) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 238) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 280) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 238) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 239) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 241) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 241) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 281) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 239) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 240) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 241) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 241) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 242) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 242) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 240) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 241) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 245) (second 242) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 242) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 245) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 245) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 243) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 242) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 244) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 246) (second 245) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 245) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 245) (second 246) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 246) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 244) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 245) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 246) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 246) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 246) (second 249) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 249) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 247) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 246) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 248) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 249) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 249) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 250) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 250) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 248) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 249) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 250) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 250) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 277) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 277) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 251) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 250) (length 42.448841) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 279) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 252) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 252) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 253) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 253) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 254) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 252) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 254) (length 30.000114) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 255) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 255) (length 30.000114) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 256) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 254) (length 42.426487) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 256) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 257) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 259) (second 257) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 259) (second 258) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 259) (second 256) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 258) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 259) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 259) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 260) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 258) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 260) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 261) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 261) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 262) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 260) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 262) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 263) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 263) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 264) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 262) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 306) (second 264) (length 29.999847) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 265) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 265) (length 29.999847) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 306) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 264) (length 42.426300) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 265) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 265) (length 29.999847) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 267) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 267) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 307) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 265) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 266) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 267) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 267) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 268) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 268) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 266) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 267) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 268) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 268) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 271) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 270) (second 271) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 270) (second 269) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 270) (second 268) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 270) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 271) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 270) (second 271) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 272) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 272) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 270) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 271) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 272) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 272) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 275) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 275) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 273) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 272) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 274) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 276) (second 275) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 275) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 276) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 276) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 274) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 275) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 276) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 276) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 276) (second 277) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 277) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 278) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 276) (length 42.334595) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 279) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 280) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 280) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 281) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 281) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 282) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 280) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 282) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 283) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 285) (second 283) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 285) (second 284) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 285) (second 282) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 284) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 285) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 285) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 286) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 284) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 286) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 287) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 287) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 288) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 286) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 288) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 289) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 289) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 290) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 288) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 290) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 291) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 291) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 292) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 290) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 292) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 293) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 293) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 334) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 292) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 295) (second 293) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 293) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 295) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 295) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 335) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 293) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 294) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 295) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 295) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 295) (second 296) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 296) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 294) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 295) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 299) (second 296) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 296) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 299) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 299) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 297) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 296) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 298) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 299) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 299) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 299) (second 300) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 300) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 298) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 299) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 303) (second 300) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 300) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 303) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 303) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 301) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 300) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 302) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 303) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 303) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 303) (second 304) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 305) (second 304) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 305) (second 302) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 305) (second 303) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 304) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 305) (second 304) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 331) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 331) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 305) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 304) (length 42.448841) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 305) (second 333) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 306) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 306) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 306) (second 307) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 309) (second 307) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 309) (second 308) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 309) (second 306) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 310) (second 308) (length 30.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 309) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 311) (second 309) (length 30.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 311) (second 310) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 311) (second 308) (length 42.426495) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 310) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 310) (second 311) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 311) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 312) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 310) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 314) (second 312) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 313) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 313) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 314) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 312) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 314) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 314) (second 315) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 317) (second 315) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 317) (second 316) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 317) (second 314) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 318) (second 316) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 317) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 317) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 318) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 316) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 362) (second 318) (length 29.999786) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 318) (second 319) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 363) (second 319) (length 29.999786) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 363) (second 362) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 363) (second 318) (length 42.426254) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 321) (second 319) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 363) (second 319) (length 29.999786) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 321) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 320) (second 321) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 320) (second 363) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 320) (second 319) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 363) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 321) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 320) (second 321) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 321) (second 322) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 322) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 321) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 325) (second 322) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 322) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 325) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 324) (second 325) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 324) (second 323) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 324) (second 322) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 324) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 326) (second 325) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 324) (second 325) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 325) (second 326) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 326) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 324) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 325) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 326) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 326) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 326) (second 329) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 329) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 327) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 326) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 328) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 329) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 329) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 330) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 330) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 328) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 329) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 330) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 330) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 330) (second 331) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 331) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 332) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 330) (length 42.334595) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 333) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 334) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 334) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 335) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 335) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 336) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 334) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 336) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 337) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 339) (second 337) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 339) (second 338) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 339) (second 336) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 340) (second 338) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 339) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 341) (second 339) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 341) (second 340) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 341) (second 338) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 342) (second 340) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 340) (second 341) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 343) (second 341) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 343) (second 342) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 343) (second 340) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 344) (second 342) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 342) (second 343) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 343) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 344) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 342) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 344) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 344) (second 345) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 345) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 347) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 344) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 347) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 348) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 348) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 346) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 347) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 348) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 348) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 351) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 350) (second 351) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 350) (second 349) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 350) (second 348) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 350) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 351) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 350) (second 351) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 352) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 352) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 350) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 351) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 355) (second 352) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 352) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 355) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 354) (second 355) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 354) (second 353) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 354) (second 352) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 354) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 356) (second 355) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 354) (second 355) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 355) (second 356) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 357) (second 356) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 357) (second 354) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 357) (second 355) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 356) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 357) (second 356) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 356) (second 359) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 358) (second 359) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 358) (second 357) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 358) (second 356) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 357) (second 358) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 360) (second 359) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 358) (second 359) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 360) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 360) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 358) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 359) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 389) (second 360) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 360) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 360) (second 389) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 391) (second 389) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 391) (second 361) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 391) (second 360) (length 42.448860) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 391) (length 29.951036) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 363) (second 362) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 364) (second 362) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 362) (second 363) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 365) (second 363) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 365) (second 364) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 365) (second 362) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 366) (second 364) (length 30.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 364) (second 365) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 367) (second 365) (length 30.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 367) (second 366) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 367) (second 364) (length 42.426495) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 368) (second 366) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 366) (second 367) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 369) (second 367) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 369) (second 368) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 369) (second 366) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 370) (second 368) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 368) (second 369) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 371) (second 369) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 371) (second 370) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 371) (second 368) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 372) (second 370) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 370) (second 371) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 373) (second 371) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 373) (second 372) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 373) (second 370) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 375) (second 372) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 372) (second 373) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 376) (second 373) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 376) (second 375) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 376) (second 372) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 374) (second 375) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 375) (second 376) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 377) (second 376) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 377) (second 374) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 377) (second 375) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 379) (second 376) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 377) (second 376) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 376) (second 379) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 378) (second 379) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 378) (second 377) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 378) (second 376) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 377) (second 378) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 380) (second 379) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 378) (second 379) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 379) (second 380) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 381) (second 380) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 381) (second 378) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 381) (second 379) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 383) (second 380) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 381) (second 380) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 380) (second 383) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 382) (second 383) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 382) (second 381) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 382) (second 380) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 381) (second 382) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 384) (second 383) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 382) (second 383) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 383) (second 384) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 385) (second 384) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 385) (second 382) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 385) (second 383) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 387) (second 384) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 385) (second 384) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 384) (second 387) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 386) (second 387) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 386) (second 385) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 386) (second 384) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 385) (second 386) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 388) (second 387) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 386) (second 387) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 387) (second 388) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 390) (second 388) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 390) (second 386) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 390) (second 387) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 389) (second 388) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 390) (second 388) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 388) (second 389) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 391) (second 389) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 391) (second 390) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 391) (second 388) (length 42.334614) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 390) (second 391) (length 29.950914) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 223) (length 180.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 277) (length 180.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 331) (length 180.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 389) (second 333) (length 180.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 75) (length 179.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 109) (length 210.037964) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 227) (length 456.919647) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 253) (length 456.792603) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 169) (length 456.919647) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 197) (length 456.792603) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 111) (length 456.919647) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 124) (second 139) (length 456.792572) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 79) (length 469.584961) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 95) (length 469.404999) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 281) (length 456.919647) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 307) (length 456.792603) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 376) (second 335) (length 456.919647) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 363) (length 456.792603) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + )) + +;; EOF ;; diff --git a/examples/jesus.construo b/examples/jesus.construo new file mode 100644 index 0000000..d3f61e3 --- /dev/null +++ b/examples/jesus.construo @@ -0,0 +1,277 @@ + +(construo-scene + (particles + (particle (id 6455) (pos 73.5083 600 0 ) (velocity 0.00113344 -0.0303609 0 ) ) + (particle (id 6456) (pos 183.577 329.1 0 ) (velocity 3.22581 1.04878 0 ) ) + (particle (id 6457) (pos 121.368 600 0 ) (velocity -0.00113644 -0.0319252 0 ) ) + (particle (id 6458) (pos 699.103 600 0 ) (velocity -0.000622328 -0.0137376 0 ) ) + (particle (id 6459) (pos 645.192 600 0 ) (velocity 0.00108996 -0.0220594 0 ) ) + (particle (id 6460) (pos 591.879 301.881 0 ) (velocity -4.93108 1.37711 0 ) ) + (particle (id 6461) (pos 231.778 403.791 0 ) (velocity -1.25947 5.15872 0 ) ) + (particle (id 6462) (pos 309.639 508.121 0 ) (velocity -0.630953 6.84169 0 ) ) + (particle (id 6463) (pos 458.4 501.381 0 ) (velocity -0.0709559 6.69991 0 ) ) + (particle (id 6464) (pos 537.224 390.864 0 ) (velocity 0.410645 5.76599 0 ) ) + (particle (id 6535) (pos 381.541 600 0 ) (velocity -0.00201369 -0.0793214 0 ) ) + (particle (id 6547) (pos 382.788 498.609 0 ) (velocity 0.453882 0.766391 0 ) ) + (particle (id 6560) (pos 763.963 600 0 ) (velocity -0.000952782 -0.00961986 0 ) ) + (particle (id 6561) (pos 41.7219 592.321 0 ) (velocity 0.327851 -1.69393 0 ) ) + (particle (id 6590) (pos 328.43 472.866 0 ) (velocity -0.41173 7.06751 0 ) ) + (particle (id 6591) (pos 446.01 467.642 0 ) (velocity -0.275274 6.73879 0 ) ) + (particle (id 6592) (pos 346.988 442.105 0 ) (velocity -0.411382 7.05122 0 ) ) + (particle (id 6593) (pos 444.511 442.169 0 ) (velocity -0.252863 6.69165 0 ) ) + (particle (id 6594) (pos 431.125 411.427 0 ) (velocity -0.437951 6.70036 0 ) ) + (particle (id 6595) (pos 353.181 414.71 0 ) (velocity -0.319465 7.05188 0 ) ) + (particle (id 6596) (pos 361.656 382.446 0 ) (velocity -0.293114 6.9808 0 ) ) + (particle (id 6597) (pos 419.858 379.593 0 ) (velocity -0.564159 6.68981 0 ) ) + (particle (id 6598) (pos 367.51 346.949 0 ) (velocity -0.787387 6.98249 0 ) ) + (particle (id 6599) (pos 397.683 346.322 0 ) (velocity -0.596256 6.75522 0 ) ) + (particle (id 6600) (pos 361.974 302.545 0 ) (velocity -0.718494 7.11036 0 ) ) + (particle (id 6601) (pos 388.818 299.199 0 ) (velocity -0.610111 7.29037 0 ) ) + (particle (id 6628) (pos 359.227 241.978 0 ) (velocity -0.605636 7.5131 0 ) ) + (particle (id 6629) (pos 373.108 207.965 0 ) (velocity -0.40627 7.57506 0 ) ) + (particle (id 6630) (pos 348.74 158.014 0 ) (velocity -1.02686 7.69248 0 ) ) + (particle (id 6631) (pos 361.976 128.962 0 ) (velocity -1.17394 7.59094 0 ) ) + (particle (id 6632) (pos 340.816 94.6785 0 ) (velocity -0.300603 6.99755 0 ) ) + (particle (id 6852) (pos 369.814 82.033 0 ) (velocity -0.431174 8.04353 0 ) ) + (particle (id 6885) (pos 398.506 152.059 0 ) (velocity -0.987009 7.896 0 ) ) + (particle (id 6919) (pos 397.492 110.063 0 ) (velocity -0.503736 7.2847 0 ) ) + (particle (id 6954) (pos 420.498 134.044 0 ) (velocity -0.497381 8.07917 0 ) ) + (particle (id 6955) (pos 423.522 166.031 0 ) (velocity -0.563514 7.33428 0 ) ) + (particle (id 7104) (pos 414.637 206.072 0 ) (velocity -0.470714 7.6093 0 ) ) + (particle (id 7105) (pos 438.597 195.964 0 ) (velocity -0.523374 7.28428 0 ) ) + (particle (id 7226) (pos 434.825 235.966 0 ) (velocity -0.513352 7.60798 0 ) ) + (particle (id 7227) (pos 426.006 262.027 0 ) (velocity -0.324818 7.46741 0 ) ) + (particle (id 7228) (pos 453.981 257.836 0 ) (velocity -0.174535 7.30033 0 ) ) + (particle (id 7778) (pos 438 298 0 ) (velocity 0 0 0 ) ) + (particle (id 7779) (pos 480 287 0 ) (velocity 0 0 0 ) ) + (particle (id 7780) (pos 493 253 0 ) (velocity 0 0 0 ) ) + (particle (id 7781) (pos 487 213 0 ) (velocity 0 0 0 ) ) + (particle (id 7782) (pos 464 187 0 ) (velocity 0 0 0 ) ) + (particle (id 7783) (pos 488 150 0 ) (velocity 0 0 0 ) ) + (particle (id 7784) (pos 513 206 0 ) (velocity 0 0 0 ) ) + (particle (id 7955) (pos 473 126 0 ) (velocity 0 0 0 ) ) + (particle (id 7956) (pos 501 106 0 ) (velocity 0 0 0 ) ) + (particle (id 7957) (pos 515 143 0 ) (velocity 0 0 0 ) ) + (particle (id 7958) (pos 308 170 0 ) (velocity 0 0 0 ) ) + (particle (id 7959) (pos 295 142 0 ) (velocity 0 0 0 ) ) + (particle (id 7960) (pos 263 170 0 ) (velocity 0 0 0 ) ) + (particle (id 7961) (pos 270 196 0 ) (velocity 0 0 0 ) ) + (particle (id 7962) (pos 224 192 0 ) (velocity 0 0 0 ) ) + (particle (id 7963) (pos 235 222 0 ) (velocity 0 0 0 ) ) + (particle (id 8384) (pos 222 153 0 ) (velocity 0 0 0 ) ) + (particle (id 8385) (pos 194 193 0 ) (velocity 0 0 0 ) ) + (particle (id 8386) (pos 199 134 0 ) (velocity 0 0 0 ) ) + (particle (id 8387) (pos 213 111 0 ) (velocity 0 0 0 ) ) + (particle (id 8388) (pos 222 84 0 ) (velocity 0 0 0 ) ) + (particle (id 8389) (pos 238 116 0 ) (velocity 0 0 0 ) ) + (particle (id 8390) (pos 248 86 0 ) (velocity 0 0 0 ) ) + (particle (id 8391) (pos 319 69 0 ) (velocity 0 0 0 ) ) + (particle (id 8392) (pos 335 22 0 ) (velocity 0 0 0 ) ) + (particle (id 8393) (pos 365 21 0 ) (velocity 0 0 0 ) ) + (particle (id 8394) (pos 387 51 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 6455)(second 6456)) + (spring (first 6456)(second 6457)) + (spring (first 6457)(second 6455)) + (spring (first 6458)(second 6459)) + (spring (first 6459)(second 6460)) + (spring (first 6460)(second 6458)) + (spring (first 6456)(second 6461)) + (spring (first 6461)(second 6462)) + (spring (first 6462)(second 6463)) + (spring (first 6463)(second 6464)) + (spring (first 6464)(second 6460)) + (spring (first 6457)(second 6459)) + (spring (first 6455)(second 6458)) + (spring (first 6455)(second 6535)) + (spring (first 6535)(second 6458)) + (spring (first 6458)(second 6535)) + (spring (first 6535)(second 6459)) + (spring (first 6535)(second 6457)) + (spring (first 6535)(second 6547)) + (spring (first 6547)(second 6455)) + (spring (first 6547)(second 6458)) + (spring (first 6547)(second 6560)) + (spring (first 6560)(second 6458)) + (spring (first 6455)(second 6561)) + (spring (first 6561)(second 6456)) + (spring (first 6561)(second 6547)) + (spring (first 6535)(second 6561)) + (spring (first 6535)(second 6560)) + (spring (first 6535)(second 6460)) + (spring (first 6535)(second 6456)) + (spring (first 6462)(second 6590)) + (spring (first 6590)(second 6591)) + (spring (first 6591)(second 6463)) + (spring (first 6591)(second 6462)) + (spring (first 6590)(second 6463)) + (spring (first 6590)(second 6592)) + (spring (first 6592)(second 6593)) + (spring (first 6593)(second 6591)) + (spring (first 6593)(second 6590)) + (spring (first 6592)(second 6591)) + (spring (first 6593)(second 6594)) + (spring (first 6594)(second 6595)) + (spring (first 6595)(second 6592)) + (spring (first 6595)(second 6593)) + (spring (first 6594)(second 6592)) + (spring (first 6595)(second 6596)) + (spring (first 6596)(second 6597)) + (spring (first 6597)(second 6594)) + (spring (first 6597)(second 6595)) + (spring (first 6596)(second 6594)) + (spring (first 6596)(second 6598)) + (spring (first 6598)(second 6599)) + (spring (first 6599)(second 6597)) + (spring (first 6599)(second 6596)) + (spring (first 6598)(second 6597)) + (spring (first 6598)(second 6600)) + (spring (first 6600)(second 6601)) + (spring (first 6601)(second 6599)) + (spring (first 6601)(second 6598)) + (spring (first 6600)(second 6599)) + (spring (first 6596)(second 6600)) + (spring (first 6600)(second 6628)) + (spring (first 6628)(second 6601)) + (spring (first 6628)(second 6629)) + (spring (first 6629)(second 6601)) + (spring (first 6629)(second 6600)) + (spring (first 6628)(second 6630)) + (spring (first 6630)(second 6629)) + (spring (first 6628)(second 6631)) + (spring (first 6631)(second 6630)) + (spring (first 6631)(second 6629)) + (spring (first 6630)(second 6632)) + (spring (first 6632)(second 6631)) + (spring (first 6595)(second 6600)) + (spring (first 6590)(second 6600)) + (spring (first 6462)(second 6628)) + (spring (first 6462)(second 6630)) + (spring (first 6632)(second 6462)) + (spring (first 6463)(second 6591)) + (spring (first 6463)(second 6593)) + (spring (first 6463)(second 6594)) + (spring (first 6463)(second 6597)) + (spring (first 6463)(second 6599)) + (spring (first 6463)(second 6601)) + (spring (first 6463)(second 6629)) + (spring (first 6592)(second 6462)) + (spring (first 6595)(second 6462)) + (spring (first 6596)(second 6462)) + (spring (first 6463)(second 6629)) + (spring (first 6463)(second 6631)) + (spring (first 6632)(second 6852)) + (spring (first 6852)(second 6631)) + (spring (first 6631)(second 6885)) + (spring (first 6852)(second 6885)) + (spring (first 6852)(second 6919)) + (spring (first 6919)(second 6885)) + (spring (first 6919)(second 6631)) + (spring (first 6632)(second 6919)) + (spring (first 6632)(second 6885)) + (spring (first 6885)(second 6954)) + (spring (first 6954)(second 6919)) + (spring (first 6885)(second 6954)) + (spring (first 6954)(second 6955)) + (spring (first 6885)(second 6955)) + (spring (first 6955)(second 6919)) + (spring (first 6885)(second 7104)) + (spring (first 6955)(second 7104)) + (spring (first 6955)(second 7105)) + (spring (first 7104)(second 7105)) + (spring (first 7105)(second 6954)) + (spring (first 6885)(second 7105)) + (spring (first 6632)(second 6954)) + (spring (first 6632)(second 7105)) + (spring (first 6630)(second 6852)) + (spring (first 7104)(second 7226)) + (spring (first 7226)(second 7105)) + (spring (first 7226)(second 7227)) + (spring (first 7227)(second 7104)) + (spring (first 7227)(second 7228)) + (spring (first 7228)(second 7105)) + (spring (first 7226)(second 7228)) + (spring (first 6631)(second 6632)) + (spring (first 6632)(second 6630)) + (spring (first 7227)(second 7228)) + (spring (first 7778)(second 7228)) + (spring (first 7778)(second 7227)) + (spring (first 7778)(second 7779)) + (spring (first 7779)(second 7228)) + (spring (first 7779)(second 7228)) + (spring (first 7227)(second 7779)) + (spring (first 7779)(second 7780)) + (spring (first 7780)(second 7228)) + (spring (first 7780)(second 7781)) + (spring (first 7781)(second 7228)) + (spring (first 7782)(second 7781)) + (spring (first 7782)(second 7228)) + (spring (first 7782)(second 7783)) + (spring (first 7783)(second 7781)) + (spring (first 7783)(second 7228)) + (spring (first 7783)(second 7784)) + (spring (first 7784)(second 7780)) + (spring (first 7784)(second 7228)) + (spring (first 7781)(second 7784)) + (spring (first 7779)(second 7781)) + (spring (first 7782)(second 7955)) + (spring (first 7955)(second 7783)) + (spring (first 7955)(second 7956)) + (spring (first 7956)(second 7783)) + (spring (first 7956)(second 7783)) + (spring (first 7783)(second 7957)) + (spring (first 7956)(second 7957)) + (spring (first 7957)(second 7784)) + (spring (first 6630)(second 7958)) + (spring (first 7958)(second 6632)) + (spring (first 7958)(second 7959)) + (spring (first 7959)(second 6632)) + (spring (first 7959)(second 6630)) + (spring (first 7959)(second 7960)) + (spring (first 7960)(second 7961)) + (spring (first 7961)(second 7958)) + (spring (first 7960)(second 7958)) + (spring (first 7959)(second 7961)) + (spring (first 7960)(second 7962)) + (spring (first 7962)(second 7961)) + (spring (first 7962)(second 7963)) + (spring (first 7963)(second 7961)) + (spring (first 7960)(second 7963)) + (spring (first 7962)(second 8384)) + (spring (first 8384)(second 8385)) + (spring (first 8385)(second 7962)) + (spring (first 8385)(second 7963)) + (spring (first 8385)(second 8384)) + (spring (first 8384)(second 8386)) + (spring (first 8385)(second 8386)) + (spring (first 8386)(second 8387)) + (spring (first 8387)(second 8384)) + (spring (first 8387)(second 8388)) + (spring (first 8388)(second 8389)) + (spring (first 8389)(second 8384)) + (spring (first 8387)(second 8389)) + (spring (first 8389)(second 8386)) + (spring (first 8388)(second 8390)) + (spring (first 8390)(second 8389)) + (spring (first 8390)(second 8387)) + (spring (first 6632)(second 8391)) + (spring (first 8391)(second 8392)) + (spring (first 8392)(second 8393)) + (spring (first 8393)(second 8394)) + (spring (first 8394)(second 6852)) + (spring (first 8391)(second 6852)) + (spring (first 6632)(second 8394)) + (spring (first 8394)(second 8391)) + (spring (first 8392)(second 8394)) + (spring (first 8393)(second 8391)) + (spring (first 6535)(second 6456)) + (spring (first 6535)(second 6460)) + (spring (first 8386)(second 7962)) + (spring (first 6630)(second 6885)) + (spring (first 7962)(second 8387)) + (spring (first 8389)(second 8385)) + (spring (first 8385)(second 7961)) + (spring (first 7960)(second 6630)) + ) +) diff --git a/examples/jesus2.construo b/examples/jesus2.construo new file mode 100644 index 0000000..f0b10e5 --- /dev/null +++ b/examples/jesus2.construo @@ -0,0 +1,369 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 6455) (pos 73.508301 600.000000 0.000000) (velocity 0.001133 -0.030361 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6456) (pos 183.576996 329.100006 0.000000) (velocity 3.225810 1.048780 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6457) (pos 121.367996 600.000000 0.000000) (velocity -0.001136 -0.031925 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6458) (pos 699.103027 600.000000 0.000000) (velocity -0.000622 -0.013738 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6459) (pos 645.192017 600.000000 0.000000) (velocity 0.001090 -0.022059 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6460) (pos 591.879028 301.881012 0.000000) (velocity -4.931080 1.377110 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6462) (pos 309.639008 508.121002 0.000000) (velocity -0.630953 6.841690 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6463) (pos 458.399994 501.381012 0.000000) (velocity -0.070956 6.699910 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6535) (pos 381.540985 600.000000 0.000000) (velocity -0.002014 -0.079321 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6547) (pos 382.787994 498.609009 0.000000) (velocity 0.453882 0.766391 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6560) (pos 763.963013 600.000000 0.000000) (velocity -0.000953 -0.009620 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6561) (pos 41.721901 592.320984 0.000000) (velocity 0.327851 -1.693930 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6590) (pos 328.429993 472.865997 0.000000) (velocity -0.411730 7.067510 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6591) (pos 446.010010 467.641998 0.000000) (velocity -0.275274 6.738790 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6592) (pos 346.988007 442.105011 0.000000) (velocity -0.411382 7.051220 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6593) (pos 444.510986 442.169006 0.000000) (velocity -0.252863 6.691650 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6594) (pos 431.125000 411.427002 0.000000) (velocity -0.437951 6.700360 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6595) (pos 353.181000 414.709991 0.000000) (velocity -0.319465 7.051880 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6596) (pos 361.656006 382.446014 0.000000) (velocity -0.293114 6.980800 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6597) (pos 419.858002 379.592987 0.000000) (velocity -0.564159 6.689810 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6598) (pos 367.510010 346.949005 0.000000) (velocity -0.787387 6.982490 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6599) (pos 397.683014 346.321991 0.000000) (velocity -0.596256 6.755220 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6600) (pos 361.973999 302.545013 0.000000) (velocity -0.718494 7.110360 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6601) (pos 388.817993 299.199005 0.000000) (velocity -0.610111 7.290370 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6628) (pos 359.226990 241.977997 0.000000) (velocity -0.605636 7.513100 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6629) (pos 373.108002 207.964996 0.000000) (velocity -0.406270 7.575060 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6630) (pos 348.739990 158.014008 0.000000) (velocity -1.026860 7.692480 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6631) (pos 361.976013 128.962006 0.000000) (velocity -1.173940 7.590940 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6632) (pos 340.816010 94.678497 0.000000) (velocity -0.300603 6.997550 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6852) (pos 369.813995 82.032997 0.000000) (velocity -0.431174 8.043530 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6885) (pos 398.506012 152.059006 0.000000) (velocity -0.987009 7.896000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6919) (pos 397.492004 110.063004 0.000000) (velocity -0.503736 7.284700 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6954) (pos 420.497986 134.044006 0.000000) (velocity -0.497381 8.079170 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6955) (pos 423.522003 166.031006 0.000000) (velocity -0.563514 7.334280 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7104) (pos 414.636993 206.072006 0.000000) (velocity -0.470714 7.609300 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7105) (pos 438.596985 195.964005 0.000000) (velocity -0.523374 7.284280 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7226) (pos 434.825012 235.966003 0.000000) (velocity -0.513352 7.607980 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7227) (pos 426.006012 262.027008 0.000000) (velocity -0.324818 7.467410 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7228) (pos 453.980988 257.835999 0.000000) (velocity -0.174535 7.300330 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7778) (pos 438.000000 298.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7779) (pos 480.000000 287.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7780) (pos 493.000000 253.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7781) (pos 487.000000 213.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7782) (pos 464.000000 187.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7783) (pos 488.000000 150.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7784) (pos 513.000000 206.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7955) (pos 473.000000 126.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7956) (pos 501.000000 106.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7957) (pos 515.000000 143.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7958) (pos 308.000000 170.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7959) (pos 295.000000 142.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7960) (pos 263.000000 170.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7961) (pos 270.000000 196.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7962) (pos 224.000000 192.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7963) (pos 235.000000 222.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8384) (pos 222.000000 153.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8385) (pos 194.000000 193.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8386) (pos 199.000000 134.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8387) (pos 213.000000 111.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8388) (pos 222.000000 84.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8389) (pos 238.000000 116.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8390) (pos 248.000000 86.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8391) (pos 319.000000 69.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8392) (pos 335.000000 22.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8393) (pos 365.000000 21.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8394) (pos 387.000000 51.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 66) (pos 227.000000 499.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 67) (pos 521.000000 544.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 68) (pos 449.000000 273.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 69) (pos 409.000000 287.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 70) (pos 399.000000 61.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 71) (pos 398.000000 29.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 72) (pos 378.000000 12.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 73) (pos 332.000000 6.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 74) (pos 317.000000 24.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 75) (pos 301.000000 563.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 76) (pos 465.000000 560.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 77) (pos 406.000000 226.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 78) (pos 390.000000 224.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 79) (pos 404.000000 245.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 80) (pos 253.000000 541.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 6455) (second 6456) (length 292.407135)) + (spring (first 6456) (second 6457) (length 277.951019)) + (spring (first 6457) (second 6455) (length 47.859695)) + (spring (first 6458) (second 6459) (length 53.911011)) + (spring (first 6459) (second 6460) (length 302.848480)) + (spring (first 6460) (second 6458) (length 316.815277)) + (spring (first 6462) (second 6463) (length 148.913589)) + (spring (first 6457) (second 6459) (length 523.824036)) + (spring (first 6455) (second 6458) (length 625.594727)) + (spring (first 6455) (second 6535) (length 308.032684)) + (spring (first 6535) (second 6458) (length 317.562042)) + (spring (first 6458) (second 6535) (length 317.562042)) + (spring (first 6535) (second 6459) (length 263.651031)) + (spring (first 6535) (second 6457) (length 260.172974)) + (spring (first 6535) (second 6547) (length 101.398659)) + (spring (first 6547) (second 6455) (length 325.475128)) + (spring (first 6547) (second 6458) (length 332.167633)) + (spring (first 6547) (second 6560) (length 394.429382)) + (spring (first 6560) (second 6458) (length 64.859985)) + (spring (first 6455) (second 6561) (length 32.700802)) + (spring (first 6561) (second 6456) (length 299.011963)) + (spring (first 6561) (second 6547) (length 353.706116)) + (spring (first 6535) (second 6561) (length 339.905853)) + (spring (first 6535) (second 6560) (length 382.422028)) + (spring (first 6535) (second 6460) (length 364.852051)) + (spring (first 6535) (second 6456) (length 335.524292)) + (spring (first 6462) (second 6590) (length 39.950176)) + (spring (first 6590) (second 6591) (length 117.696007)) + (spring (first 6591) (second 6463) (length 35.942074)) + (spring (first 6591) (second 6462) (length 142.251892)) + (spring (first 6590) (second 6463) (length 133.061295)) + (spring (first 6590) (second 6592) (length 35.925453)) + (spring (first 6592) (second 6593) (length 97.523003)) + (spring (first 6593) (second 6591) (length 25.517061)) + (spring (first 6593) (second 6590) (length 120.071236)) + (spring (first 6592) (second 6591) (length 102.261894)) + (spring (first 6593) (second 6594) (length 33.529919)) + (spring (first 6594) (second 6595) (length 78.013107)) + (spring (first 6595) (second 6592) (length 28.086300)) + (spring (first 6595) (second 6593) (length 95.368568)) + (spring (first 6594) (second 6592) (length 89.555420)) + (spring (first 6595) (second 6596) (length 33.358505)) + (spring (first 6596) (second 6597) (length 58.271881)) + (spring (first 6597) (second 6594) (length 33.769066)) + (spring (first 6597) (second 6595) (length 75.359314)) + (spring (first 6596) (second 6594) (length 75.271767)) + (spring (first 6596) (second 6598) (length 35.976479)) + (spring (first 6598) (second 6599) (length 30.179518)) + (spring (first 6599) (second 6597) (length 39.983612)) + (spring (first 6599) (second 6596) (length 51.018528)) + (spring (first 6598) (second 6597) (length 61.692314)) + (spring (first 6598) (second 6600) (length 44.747757)) + (spring (first 6600) (second 6601) (length 27.051723)) + (spring (first 6601) (second 6599) (length 47.949604)) + (spring (first 6601) (second 6598) (length 52.288551)) + (spring (first 6600) (second 6599) (length 56.493870)) + (spring (first 6596) (second 6600) (length 79.901634)) + (spring (first 6600) (second 6628) (length 60.629280)) + (spring (first 6628) (second 6601) (length 64.419495)) + (spring (first 6628) (second 6629) (length 36.736450)) + (spring (first 6629) (second 6601) (length 92.576714)) + (spring (first 6629) (second 6600) (length 95.233109)) + (spring (first 6628) (second 6630) (length 84.616364)) + (spring (first 6630) (second 6629) (length 55.577885)) + (spring (first 6628) (second 6631) (length 113.049423)) + (spring (first 6631) (second 6630) (length 31.925087)) + (spring (first 6631) (second 6629) (length 79.783417)) + (spring (first 6630) (second 6632) (length 63.829273)) + (spring (first 6632) (second 6631) (length 40.287773)) + (spring (first 6595) (second 6600) (length 112.509109)) + (spring (first 6590) (second 6600) (length 173.592743)) + (spring (first 6462) (second 6628) (length 270.723236)) + (spring (first 6462) (second 6630) (length 352.283691)) + (spring (first 6632) (second 6462) (length 414.616333)) + (spring (first 6463) (second 6591) (length 35.942074)) + (spring (first 6463) (second 6593) (length 60.819126)) + (spring (first 6463) (second 6594) (length 93.998131)) + (spring (first 6463) (second 6597) (length 127.741173)) + (spring (first 6463) (second 6599) (length 166.522827)) + (spring (first 6463) (second 6601) (length 213.820526)) + (spring (first 6463) (second 6629) (length 305.561249)) + (spring (first 6592) (second 6462) (length 75.848923)) + (spring (first 6595) (second 6462) (length 103.060768)) + (spring (first 6596) (second 6462) (length 136.014603)) + (spring (first 6463) (second 6629) (length 305.561249)) + (spring (first 6463) (second 6631) (length 384.699219)) + (spring (first 6632) (second 6852) (length 31.635294)) + (spring (first 6852) (second 6631) (length 47.579048)) + (spring (first 6631) (second 6885) (length 43.219349)) + (spring (first 6852) (second 6885) (length 75.676109)) + (spring (first 6852) (second 6919) (length 39.392303)) + (spring (first 6919) (second 6885) (length 42.008244)) + (spring (first 6919) (second 6631) (length 40.231304)) + (spring (first 6632) (second 6919) (length 58.726921)) + (spring (first 6632) (second 6885) (length 81.367432)) + (spring (first 6885) (second 6954) (length 28.428633)) + (spring (first 6954) (second 6919) (length 33.231968)) + (spring (first 6885) (second 6954) (length 28.428633)) + (spring (first 6954) (second 6955) (length 32.129623)) + (spring (first 6885) (second 6955) (length 28.653387)) + (spring (first 6955) (second 6919) (length 61.725021)) + (spring (first 6885) (second 7104) (length 56.370319)) + (spring (first 6955) (second 7104) (length 41.014938)) + (spring (first 6955) (second 7105) (length 33.514767)) + (spring (first 7104) (second 7105) (length 26.004864)) + (spring (first 7105) (second 6954) (length 64.510925)) + (spring (first 6885) (second 7105) (length 59.455318)) + (spring (first 6632) (second 6954) (length 88.875534)) + (spring (first 6632) (second 7105) (length 140.783066)) + (spring (first 6630) (second 6852) (length 78.849396)) + (spring (first 7104) (second 7226) (length 36.072250)) + (spring (first 7226) (second 7105) (length 40.179443)) + (spring (first 7226) (second 7227) (length 27.512737)) + (spring (first 7227) (second 7104) (length 57.098309)) + (spring (first 7227) (second 7228) (length 28.287167)) + (spring (first 7228) (second 7105) (length 63.755871)) + (spring (first 7226) (second 7228) (length 29.073151)) + (spring (first 6631) (second 6632) (length 40.287773)) + (spring (first 6632) (second 6630) (length 63.829273)) + (spring (first 7227) (second 7228) (length 28.287167)) + (spring (first 7778) (second 7228) (length 43.226601)) + (spring (first 7778) (second 7227) (length 37.919807)) + (spring (first 7778) (second 7779) (length 43.416588)) + (spring (first 7779) (second 7228) (length 39.083603)) + (spring (first 7779) (second 7228) (length 39.083603)) + (spring (first 7227) (second 7779) (length 59.489506)) + (spring (first 7779) (second 7780) (length 36.400551)) + (spring (first 7780) (second 7228) (length 39.317554)) + (spring (first 7780) (second 7781) (length 40.447498)) + (spring (first 7781) (second 7228) (length 55.682331)) + (spring (first 7782) (second 7781) (length 34.713108)) + (spring (first 7782) (second 7228) (length 71.541031)) + (spring (first 7782) (second 7783) (length 44.102154)) + (spring (first 7783) (second 7781) (length 63.007935)) + (spring (first 7783) (second 7228) (length 113.074738)) + (spring (first 7783) (second 7784) (length 61.326992)) + (spring (first 7784) (second 7780) (length 51.078373)) + (spring (first 7784) (second 7228) (length 78.550713)) + (spring (first 7781) (second 7784) (length 26.925823)) + (spring (first 7779) (second 7781) (length 74.330345)) + (spring (first 7782) (second 7955) (length 61.660358)) + (spring (first 7955) (second 7783) (length 28.301943)) + (spring (first 7955) (second 7956) (length 34.409302)) + (spring (first 7956) (second 7783) (length 45.880280)) + (spring (first 7956) (second 7783) (length 45.880280)) + (spring (first 7783) (second 7957) (length 27.892651)) + (spring (first 7956) (second 7957) (length 39.560081)) + (spring (first 7957) (second 7784) (length 63.031738)) + (spring (first 6630) (second 7958) (length 42.466583)) + (spring (first 7958) (second 6632) (length 82.159721)) + (spring (first 7958) (second 7959) (length 30.870699)) + (spring (first 7959) (second 6632) (length 65.866768)) + (spring (first 7959) (second 6630) (length 56.075260)) + (spring (first 7959) (second 7960) (length 42.520584)) + (spring (first 7960) (second 7961) (length 26.925823)) + (spring (first 7961) (second 7958) (length 46.043457)) + (spring (first 7960) (second 7958) (length 45.000000)) + (spring (first 7959) (second 7961) (length 59.506302)) + (spring (first 7960) (second 7962) (length 44.777225)) + (spring (first 7962) (second 7961) (length 46.173584)) + (spring (first 7962) (second 7963) (length 31.953091)) + (spring (first 7963) (second 7961) (length 43.600460)) + (spring (first 7960) (second 7963) (length 59.059292)) + (spring (first 7962) (second 8384) (length 39.051247)) + (spring (first 8384) (second 8385) (length 48.826221)) + (spring (first 8385) (second 7962) (length 30.016663)) + (spring (first 8385) (second 7963) (length 50.219517)) + (spring (first 8385) (second 8384) (length 48.826221)) + (spring (first 8384) (second 8386) (length 29.832869)) + (spring (first 8385) (second 8386) (length 59.211487)) + (spring (first 8386) (second 8387) (length 26.925823)) + (spring (first 8387) (second 8384) (length 42.953465)) + (spring (first 8387) (second 8388) (length 28.460499)) + (spring (first 8388) (second 8389) (length 35.777088)) + (spring (first 8389) (second 8384) (length 40.311287)) + (spring (first 8387) (second 8389) (length 25.495098)) + (spring (first 8389) (second 8386) (length 42.953465)) + (spring (first 8388) (second 8390) (length 26.076809)) + (spring (first 8390) (second 8389) (length 31.622776)) + (spring (first 8390) (second 8387) (length 43.011627)) + (spring (first 6632) (second 8391) (length 33.694561)) + (spring (first 8391) (second 8392) (length 49.648766)) + (spring (first 8392) (second 8393) (length 30.016663)) + (spring (first 8393) (second 8394) (length 37.202152)) + (spring (first 8394) (second 6852) (length 35.474014)) + (spring (first 8391) (second 6852) (length 52.458755)) + (spring (first 6632) (second 8394) (length 63.567066)) + (spring (first 8394) (second 8391) (length 70.342018)) + (spring (first 8392) (second 8394) (length 59.539902)) + (spring (first 8393) (second 8391) (length 66.483078)) + (spring (first 6535) (second 6456) (length 335.524292)) + (spring (first 6535) (second 6460) (length 364.852051)) + (spring (first 8386) (second 7962) (length 63.158531)) + (spring (first 6630) (second 6885) (length 50.121044)) + (spring (first 7962) (second 8387) (length 81.743500)) + (spring (first 8389) (second 8385) (length 88.684837)) + (spring (first 8385) (second 7961) (length 76.059189)) + (spring (first 7960) (second 6630) (length 86.573723)) + (spring (first 6535) (second 66) (length 184.618301)) + (spring (first 66) (second 6456) (length 175.361237)) + (spring (first 66) (second 6561) (length 207.453079)) + (spring (first 6535) (second 67) (length 150.282455)) + (spring (first 67) (second 6460) (length 252.280487)) + (spring (first 67) (second 6458) (length 186.699463)) + (spring (first 6459) (second 67) (length 136.233826)) + (spring (first 6457) (second 66) (length 146.147598)) + (spring (first 66) (second 6462) (length 83.140831)) + (spring (first 6463) (second 67) (length 75.730698)) + (spring (first 6463) (second 6535) (length 125.032043)) + (spring (first 6462) (second 6535) (length 116.668953)) + (spring (first 6456) (second 6462) (length 218.952393)) + (spring (first 6463) (second 6460) (length 240.035217)) + (spring (first 7228) (second 6885) (length 119.441391)) + (spring (first 7105) (second 6885) (length 59.455318)) + (spring (first 7105) (second 6852) (length 133.084091)) + (spring (first 7105) (second 7778) (length 102.037743)) + (spring (first 7227) (second 7784) (length 103.474533)) + (spring (first 7227) (second 6955) (length 96.028137)) + (spring (first 68) (second 7778) (length 27.313000)) + (spring (first 68) (second 7779) (length 34.014702)) + (spring (first 68) (second 6954) (length 141.848984)) + (spring (first 68) (second 6955) (length 109.961327)) + (spring (first 68) (second 7104) (length 75.234116)) + (spring (first 68) (second 7105) (length 77.735237)) + (spring (first 68) (second 7227) (length 25.478031)) + (spring (first 7959) (second 6919) (length 107.352608)) + (spring (first 7960) (second 6919) (length 147.243149)) + (spring (first 7962) (second 6919) (length 191.867523)) + (spring (first 6885) (second 6601) (length 147.458588)) + (spring (first 6885) (second 69) (length 135.348419)) + (spring (first 69) (second 6594) (length 126.378777)) + (spring (first 69) (second 6601) (length 23.582390)) + (spring (first 6852) (second 70) (length 35.975128)) + (spring (first 70) (second 71) (length 32.015621)) + (spring (first 71) (second 72) (length 26.248810)) + (spring (first 72) (second 8392) (length 44.147480)) + (spring (first 72) (second 73) (length 46.389652)) + (spring (first 73) (second 74) (length 23.430750)) + (spring (first 74) (second 8391) (length 45.044422)) + (spring (first 74) (second 8392) (length 18.110771)) + (spring (first 8392) (second 73) (length 16.278820)) + (spring (first 8393) (second 72) (length 15.811388)) + (spring (first 8394) (second 71) (length 24.596748)) + (spring (first 8393) (second 71) (length 33.955853)) + (spring (first 8394) (second 70) (length 15.620500)) + (spring (first 7959) (second 6885) (length 103.993645)) + (spring (first 7959) (second 7963) (length 100.000000)) + (spring (first 7960) (second 6630) (length 86.573723)) + (spring (first 6457) (second 75) (length 183.402985)) + (spring (first 75) (second 6535) (length 88.633232)) + (spring (first 6535) (second 76) (length 92.549484)) + (spring (first 76) (second 6459) (length 184.578339)) + (spring (first 76) (second 6463) (length 58.989372)) + (spring (first 6462) (second 75) (length 55.554810)) + (spring (first 75) (second 6463) (length 169.031525)) + (spring (first 6462) (second 76) (length 163.793976)) + (spring (first 6592) (second 6463) (length 126.199348)) + (spring (first 6598) (second 6463) (length 179.193283)) + (spring (first 6600) (second 6463) (length 220.983551)) + (spring (first 7958) (second 6628) (length 88.346115)) + (spring (first 6954) (second 6628) (length 124.112373)) + (spring (first 67) (second 6595) (length 211.846939)) + (spring (first 67) (second 6598) (length 249.776443)) + (spring (first 6463) (second 6628) (length 277.714264)) + (spring (first 77) (second 7104) (length 21.719175)) + (spring (first 77) (second 6885) (length 74.319786)) + (spring (first 78) (second 77) (length 16.124516)) + (spring (first 78) (second 6629) (length 23.290791)) + (spring (first 6629) (second 7104) (length 41.572113)) + (spring (first 78) (second 7104) (length 30.469564)) + (spring (first 77) (second 79) (length 19.104973)) + (spring (first 79) (second 78) (length 25.238859)) + (spring (first 79) (second 6628) (length 44.874882)) + (spring (first 6628) (second 78) (length 35.639675)) + (spring (first 80) (second 75) (length 52.801514)) + (spring (first 80) (second 6462) (length 65.490501)) + (spring (first 80) (second 66) (length 49.396355)) + (spring (first 80) (second 6457) (length 144.249725)) + (spring (first 80) (second 6600) (length 262.175720)) + (spring (first 80) (second 6595) (length 161.199875)) + )) + +;; EOF ;; diff --git a/examples/joe.construo b/examples/joe.construo new file mode 100644 index 0000000..fabf3a6 --- /dev/null +++ b/examples/joe.construo @@ -0,0 +1,535 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 573.066162 88.637703) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos 597.938049 88.188423) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 593.805054 62.010910) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 571.573059 62.208389) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 572.162170 35.826046) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 595.767273 36.354122) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 572.783020 8.055606) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 597.066345 9.292666) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 595.588013 -15.868104) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 571.288757 -16.411133) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 10) (pos 573.915588 -42.626167) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos 594.064819 -42.870064) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 594.654602 -69.252823) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 572.422363 -69.054947) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 573.012390 -95.437393) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 596.617493 -94.910172) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 573.632202 -123.208153) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 597.916809 -121.970917) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 596.438232 -147.131683) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 572.138672 -147.675079) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 574.765564 -173.890533) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 594.914978 -174.134735) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 645.861694 -226.700897) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 669.467102 -226.173981) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 646.482849 -254.472641) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 670.766235 -253.235092) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 669.287964 -278.395660) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 644.988464 -278.938873) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 647.614990 -305.154755) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos 667.764526 -305.398712) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 668.353760 -331.781311) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos 646.121826 -331.583313) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 646.711304 -357.965637) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 670.316895 -357.437866) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 646.849731 -373.680481) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 671.133911 -372.443604) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 545.534241 89.764191) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 514.252930 89.806824) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 386.926605 -154.421417) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 398.861115 -138.184601) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 420.650177 -153.071564) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 407.540039 -171.027802) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 429.329163 -185.915314) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 442.649292 -166.419464) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 452.264038 -201.586288) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 70) (pos 465.402649 -181.125397) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 71) (pos 484.994354 -196.982162) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 471.282349 -217.050140) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 494.122528 -230.184677) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 74) (pos 506.056824 -213.947723) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 75) (pos 527.845825 -228.835068) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 76) (pos 514.735779 -246.791550) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 77) (pos 536.524658 -261.678802) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 78) (pos 549.844360 -242.183411) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 79) (pos 559.460815 -277.349030) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 80) (pos 572.598389 -256.888763) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 81) (pos 592.190125 -272.745331) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 82) (pos 578.477722 -292.814301) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 83) (pos 601.317932 -305.947906) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 84) (pos 613.252625 -289.711517) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 85) (pos 635.041077 -304.599030) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 86) (pos 621.931580 -322.555328) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 87) (pos 683.976685 -304.226044) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 88) (pos 695.702698 -320.613861) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 89) (pos 717.680237 -306.006317) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 90) (pos 704.800415 -287.884308) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 91) (pos 726.778076 -273.276031) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 92) (pos 739.848145 -292.940094) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 93) (pos 749.911438 -257.899323) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 94) (pos 762.787598 -278.526337) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 95) (pos 782.580078 -262.920807) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 96) (pos 769.125610 -242.678955) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 97) (pos 792.131287 -229.837814) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 98) (pos 803.857300 -246.225403) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 99) (pos 825.834290 -231.617844) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 100) (pos 812.954529 -213.495148) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 101) (pos 834.932251 -198.888046) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 102) (pos 848.002319 -218.551361) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 103) (pos 858.066650 -183.511566) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 104) (pos 870.941956 -204.137741) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 105) (pos 890.733948 -188.532944) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 106) (pos 877.279541 -168.290741) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 107) (pos 900.285278 -155.449615) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 108) (pos 912.011230 -171.837433) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 109) (pos 933.988342 -157.229156) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 110) (pos 921.109192 -139.107147) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 113) (pos 736.543823 91.637619) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 114) (pos 711.671936 91.188339) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 115) (pos 715.804932 65.010818) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 116) (pos 738.036926 65.208298) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 117) (pos 737.447815 38.825928) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 118) (pos 713.842712 39.354004) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 119) (pos 736.826965 11.055506) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 120) (pos 712.543640 12.292573) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 121) (pos 714.021973 -12.868198) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 122) (pos 738.321228 -13.411228) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 123) (pos 735.694397 -39.626278) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 124) (pos 715.545166 -39.870174) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 125) (pos 714.955383 -66.252922) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 126) (pos 737.187622 -66.055046) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 127) (pos 736.597595 -92.437477) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 128) (pos 712.992493 -91.910255) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 129) (pos 735.977783 -120.208244) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 130) (pos 711.693176 -118.971008) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 131) (pos 713.171753 -144.131760) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 132) (pos 737.471313 -144.675156) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 133) (pos 734.844421 -170.890594) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 134) (pos 714.695007 -171.134796) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 135) (pos 764.075745 92.764114) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 136) (pos 795.357056 92.806747) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 140) (pos 627.173889 -211.260788) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 141) (pos 607.401489 -192.452881) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 142) (pos 584.253296 -192.935135) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 143) (pos 605.472473 -215.601074) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 144) (pos 623.315857 -230.068695) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 146) (pos 693.724976 -226.692917) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 147) (pos 713.979614 -214.154312) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 148) (pos 725.553711 -198.239929) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 149) (pos 707.228088 -195.828659) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 150) (pos 687.455627 -212.707550) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 151) (pos 650.862183 -212.398941) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 152) (pos 613.361938 -172.614792) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 153) (pos 626.382812 -188.046921) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 154) (pos 650.013245 -197.209747) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 155) (pos 675.572693 -192.387207) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 156) (pos 694.380615 -184.671143) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 157) (pos 700.167664 -166.827744) (velocity -0.463440 -1.241638) (fixed #f) (mass 0.100000)) + (particle (id 158) (pos 750.760376 -40.322601) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 159) (pos 558.398865 -43.100384) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 160) (pos 751.454834 -75.044891) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 161) (pos 558.398865 -76.433784) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 165) (pos 635.669983 -406.417023) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 166) (pos 649.400818 -393.021088) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 167) (pos 669.159851 -393.355988) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 170) (pos 680.211487 -410.435791) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 172) (pos 657.438416 -408.761322) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 174) (pos 609.308899 -427.790527) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 175) (pos 607.920044 -452.790588) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 176) (pos 637.781189 -467.373932) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 177) (pos 682.225769 -466.679504) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 178) (pos 714.170288 -435.429413) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 179) (pos 716.253601 -412.512695) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 24.875944)) + (spring (first 1) (second 2) (length 26.501770)) + (spring (first 2) (second 3) (length 22.232872)) + (spring (first 3) (second 0) (length 26.471457)) + (spring (first 3) (second 4) (length 26.388920)) + (spring (first 4) (second 5) (length 23.611010)) + (spring (first 5) (second 2) (length 25.731712)) + (spring (first 0) (second 2) (length 33.750374)) + (spring (first 2) (second 4) (length 33.971481)) + (spring (first 4) (second 6) (length 27.777380)) + (spring (first 6) (second 7) (length 24.314814)) + (spring (first 7) (second 5) (length 27.092619)) + (spring (first 4) (second 7) (length 36.390083)) + (spring (first 7) (second 8) (length 25.204163)) + (spring (first 8) (second 9) (length 24.305323)) + (spring (first 9) (second 6) (length 24.512325)) + (spring (first 9) (second 7) (length 36.402874)) + (spring (first 10) (second 11) (length 20.150707)) + (spring (first 11) (second 12) (length 26.389351)) + (spring (first 12) (second 13) (length 22.233120)) + (spring (first 13) (second 10) (length 26.470930)) + (spring (first 13) (second 14) (length 26.389044)) + (spring (first 14) (second 15) (length 23.610991)) + (spring (first 15) (second 12) (length 25.732323)) + (spring (first 10) (second 12) (length 33.750340)) + (spring (first 12) (second 14) (length 33.970825)) + (spring (first 14) (second 16) (length 27.777676)) + (spring (first 16) (second 17) (length 24.316103)) + (spring (first 17) (second 15) (length 27.091921)) + (spring (first 14) (second 17) (length 36.390354)) + (spring (first 17) (second 18) (length 25.204174)) + (spring (first 18) (second 19) (length 24.305635)) + (spring (first 19) (second 16) (length 24.512468)) + (spring (first 19) (second 17) (length 36.403522)) + (spring (first 20) (second 21) (length 20.150894)) + (spring (first 24) (second 25) (length 23.611288)) + (spring (first 24) (second 26) (length 27.778690)) + (spring (first 26) (second 27) (length 24.314899)) + (spring (first 27) (second 25) (length 27.092278)) + (spring (first 24) (second 27) (length 36.390930)) + (spring (first 27) (second 28) (length 25.203959)) + (spring (first 28) (second 29) (length 24.305571)) + (spring (first 29) (second 26) (length 24.511827)) + (spring (first 29) (second 27) (length 36.402992)) + (spring (first 30) (second 31) (length 20.151012)) + (spring (first 31) (second 32) (length 26.389177)) + (spring (first 32) (second 33) (length 22.232815)) + (spring (first 33) (second 30) (length 26.470705)) + (spring (first 33) (second 34) (length 26.388908)) + (spring (first 34) (second 35) (length 23.611490)) + (spring (first 35) (second 32) (length 25.731550)) + (spring (first 30) (second 32) (length 33.750111)) + (spring (first 32) (second 34) (length 33.970795)) + (spring (first 34) (second 36) (length 15.715453)) + (spring (first 36) (second 37) (length 24.315659)) + (spring (first 37) (second 35) (length 15.027963)) + (spring (first 34) (second 37) (length 28.391464)) + (spring (first 9) (second 11) (length 34.911659)) + (spring (first 10) (second 8) (length 34.433819)) + (spring (first 8) (second 11) (length 27.044888)) + (spring (first 9) (second 10) (length 26.346313)) + (spring (first 19) (second 20) (length 26.346737)) + (spring (first 21) (second 18) (length 27.045980)) + (spring (first 19) (second 21) (length 34.912369)) + (spring (first 20) (second 18) (length 34.434586)) + (spring (first 29) (second 30) (length 26.347126)) + (spring (first 31) (second 28) (length 27.045992)) + (spring (first 29) (second 31) (length 34.912350)) + (spring (first 30) (second 28) (length 34.434967)) + (spring (first 3) (second 40) (length 37.912296)) + (spring (first 40) (second 0) (length 27.554956)) + (spring (first 40) (second 42) (length 31.281340)) + (spring (first 42) (second 3) (length 63.618164)) + (spring (first 36) (second 35) (length 28.539976)) + (spring (first 35) (second 33) (length 35.409874)) + (spring (first 33) (second 31) (length 33.971161)) + (spring (first 26) (second 28) (length 33.051235)) + (spring (first 25) (second 26) (length 36.456688)) + (spring (first 18) (second 16) (length 33.052235)) + (spring (first 15) (second 16) (length 36.456814)) + (spring (first 15) (second 13) (length 35.410408)) + (spring (first 13) (second 11) (length 33.971222)) + (spring (first 6) (second 8) (length 33.051651)) + (spring (first 5) (second 6) (length 36.456577)) + (spring (first 3) (second 5) (length 35.409081)) + (spring (first 1) (second 3) (length 37.014523)) + (spring (first 63) (second 64) (length 20.151096)) + (spring (first 64) (second 65) (length 26.389107)) + (spring (first 65) (second 66) (length 22.232908)) + (spring (first 66) (second 63) (length 26.470469)) + (spring (first 66) (second 67) (length 26.389465)) + (spring (first 67) (second 68) (length 23.611734)) + (spring (first 68) (second 65) (length 25.731838)) + (spring (first 63) (second 65) (length 33.750576)) + (spring (first 65) (second 67) (length 33.971115)) + (spring (first 67) (second 69) (length 27.777472)) + (spring (first 69) (second 70) (length 24.316069)) + (spring (first 70) (second 68) (length 27.092060)) + (spring (first 67) (second 70) (length 36.390106)) + (spring (first 70) (second 71) (length 25.204601)) + (spring (first 71) (second 72) (length 24.305202)) + (spring (first 72) (second 69) (length 24.511770)) + (spring (first 72) (second 70) (length 36.402721)) + (spring (first 73) (second 74) (length 20.151081)) + (spring (first 74) (second 75) (length 26.389271)) + (spring (first 75) (second 76) (length 22.233051)) + (spring (first 76) (second 73) (length 26.470631)) + (spring (first 76) (second 77) (length 26.389118)) + (spring (first 77) (second 78) (length 23.611115)) + (spring (first 78) (second 75) (length 25.731573)) + (spring (first 73) (second 75) (length 33.750294)) + (spring (first 75) (second 77) (length 33.971062)) + (spring (first 77) (second 79) (length 27.778109)) + (spring (first 79) (second 80) (length 24.314981)) + (spring (first 80) (second 78) (length 27.092308)) + (spring (first 77) (second 80) (length 36.390362)) + (spring (first 80) (second 81) (length 25.204500)) + (spring (first 81) (second 82) (length 24.306244)) + (spring (first 82) (second 79) (length 24.511576)) + (spring (first 82) (second 80) (length 36.403446)) + (spring (first 83) (second 84) (length 20.150862)) + (spring (first 84) (second 85) (length 26.388912)) + (spring (first 85) (second 86) (length 22.232580)) + (spring (first 86) (second 83) (length 26.471285)) + (spring (first 83) (second 85) (length 33.750111)) + (spring (first 72) (second 73) (length 26.347483)) + (spring (first 74) (second 71) (length 27.045479)) + (spring (first 72) (second 74) (length 34.912594)) + (spring (first 73) (second 71) (length 34.434437)) + (spring (first 82) (second 83) (length 26.347046)) + (spring (first 84) (second 81) (length 27.045895)) + (spring (first 82) (second 84) (length 34.913052)) + (spring (first 83) (second 81) (length 34.434399)) + (spring (first 86) (second 84) (length 33.971169)) + (spring (first 79) (second 81) (length 33.051502)) + (spring (first 78) (second 79) (length 36.456783)) + (spring (first 78) (second 76) (length 35.409710)) + (spring (first 76) (second 74) (length 33.971180)) + (spring (first 71) (second 69) (length 33.052559)) + (spring (first 68) (second 69) (length 36.457493)) + (spring (first 68) (second 66) (length 35.410400)) + (spring (first 66) (second 64) (length 33.970570)) + (spring (first 87) (second 88) (length 20.150928)) + (spring (first 88) (second 89) (length 26.389252)) + (spring (first 89) (second 90) (length 22.232792)) + (spring (first 90) (second 87) (length 26.470362)) + (spring (first 90) (second 91) (length 26.389757)) + (spring (first 91) (second 92) (length 23.611481)) + (spring (first 92) (second 89) (length 25.732126)) + (spring (first 87) (second 89) (length 33.750538)) + (spring (first 89) (second 91) (length 33.971199)) + (spring (first 91) (second 93) (length 27.777611)) + (spring (first 93) (second 94) (length 24.316029)) + (spring (first 94) (second 92) (length 27.091970)) + (spring (first 91) (second 94) (length 36.390263)) + (spring (first 94) (second 95) (length 25.204659)) + (spring (first 95) (second 96) (length 24.305458)) + (spring (first 96) (second 93) (length 24.512119)) + (spring (first 96) (second 94) (length 36.403366)) + (spring (first 97) (second 98) (length 20.150743)) + (spring (first 98) (second 99) (length 26.388802)) + (spring (first 99) (second 100) (length 22.233316)) + (spring (first 100) (second 97) (length 26.470552)) + (spring (first 100) (second 101) (length 26.389158)) + (spring (first 101) (second 102) (length 23.610859)) + (spring (first 102) (second 99) (length 25.732363)) + (spring (first 97) (second 99) (length 33.749977)) + (spring (first 99) (second 101) (length 33.970760)) + (spring (first 101) (second 103) (length 27.778347)) + (spring (first 103) (second 104) (length 24.314863)) + (spring (first 104) (second 102) (length 27.092052)) + (spring (first 101) (second 104) (length 36.390358)) + (spring (first 104) (second 105) (length 25.203823)) + (spring (first 105) (second 106) (length 24.305716)) + (spring (first 106) (second 103) (length 24.511398)) + (spring (first 106) (second 104) (length 36.402916)) + (spring (first 107) (second 108) (length 20.150894)) + (spring (first 108) (second 109) (length 26.389301)) + (spring (first 109) (second 110) (length 22.232403)) + (spring (first 110) (second 107) (length 26.470959)) + (spring (first 107) (second 109) (length 33.750011)) + (spring (first 96) (second 97) (length 26.346842)) + (spring (first 98) (second 95) (length 27.045456)) + (spring (first 96) (second 98) (length 34.912285)) + (spring (first 97) (second 95) (length 34.434139)) + (spring (first 106) (second 107) (length 26.346888)) + (spring (first 108) (second 105) (length 27.045570)) + (spring (first 106) (second 108) (length 34.912308)) + (spring (first 107) (second 105) (length 34.434498)) + (spring (first 110) (second 108) (length 33.971230)) + (spring (first 103) (second 105) (length 33.050968)) + (spring (first 102) (second 103) (length 36.456520)) + (spring (first 102) (second 100) (length 35.410633)) + (spring (first 100) (second 98) (length 33.971004)) + (spring (first 95) (second 93) (length 33.052311)) + (spring (first 92) (second 93) (length 36.457172)) + (spring (first 92) (second 90) (length 35.410511)) + (spring (first 90) (second 88) (length 33.970459)) + (spring (first 31) (second 87) (length 16.254515)) + (spring (first 88) (second 32) (length 29.541096)) + (spring (first 88) (second 31) (length 31.812611)) + (spring (first 87) (second 32) (length 31.675993)) + (spring (first 87) (second 28) (length 29.714764)) + (spring (first 28) (second 90) (length 36.758247)) + (spring (first 89) (second 28) (length 55.714993)) + (spring (first 85) (second 30) (length 12.586188)) + (spring (first 86) (second 33) (length 25.820004)) + (spring (first 33) (second 85) (length 29.170782)) + (spring (first 30) (second 86) (length 31.022856)) + (spring (first 84) (second 30) (length 37.673145)) + (spring (first 29) (second 84) (length 33.514378)) + (spring (first 85) (second 29) (length 27.520794)) + (spring (first 113) (second 114) (length 24.875944)) + (spring (first 114) (second 115) (length 26.501778)) + (spring (first 115) (second 116) (length 22.232872)) + (spring (first 116) (second 113) (length 26.471464)) + (spring (first 116) (second 117) (length 26.388947)) + (spring (first 117) (second 118) (length 23.611010)) + (spring (first 118) (second 115) (length 25.731739)) + (spring (first 113) (second 115) (length 33.750381)) + (spring (first 115) (second 117) (length 33.971500)) + (spring (first 117) (second 119) (length 27.777361)) + (spring (first 119) (second 120) (length 24.314816)) + (spring (first 120) (second 118) (length 27.092594)) + (spring (first 117) (second 120) (length 36.390064)) + (spring (first 120) (second 121) (length 25.204165)) + (spring (first 121) (second 122) (length 24.305323)) + (spring (first 122) (second 119) (length 24.512321)) + (spring (first 122) (second 120) (length 36.402878)) + (spring (first 123) (second 124) (length 20.150707)) + (spring (first 124) (second 125) (length 26.389339)) + (spring (first 125) (second 126) (length 22.233120)) + (spring (first 126) (second 123) (length 26.470919)) + (spring (first 126) (second 127) (length 26.389029)) + (spring (first 127) (second 128) (length 23.610991)) + (spring (first 128) (second 125) (length 25.732309)) + (spring (first 123) (second 125) (length 33.750332)) + (spring (first 125) (second 127) (length 33.970814)) + (spring (first 127) (second 129) (length 27.777683)) + (spring (first 129) (second 130) (length 24.316103)) + (spring (first 130) (second 128) (length 27.091928)) + (spring (first 127) (second 130) (length 36.390362)) + (spring (first 130) (second 131) (length 25.204159)) + (spring (first 131) (second 132) (length 24.305635)) + (spring (first 132) (second 129) (length 24.512453)) + (spring (first 132) (second 130) (length 36.403511)) + (spring (first 133) (second 134) (length 20.150894)) + (spring (first 122) (second 124) (length 34.911671)) + (spring (first 123) (second 121) (length 34.433830)) + (spring (first 121) (second 124) (length 27.044905)) + (spring (first 122) (second 123) (length 26.346329)) + (spring (first 132) (second 133) (length 26.346724)) + (spring (first 134) (second 131) (length 27.045965)) + (spring (first 132) (second 134) (length 34.912357)) + (spring (first 133) (second 131) (length 34.434574)) + (spring (first 116) (second 135) (length 37.912308)) + (spring (first 135) (second 113) (length 27.554958)) + (spring (first 135) (second 136) (length 31.281340)) + (spring (first 136) (second 116) (length 63.618172)) + (spring (first 131) (second 129) (length 33.052227)) + (spring (first 128) (second 129) (length 36.456821)) + (spring (first 128) (second 126) (length 35.410397)) + (spring (first 126) (second 124) (length 33.971214)) + (spring (first 119) (second 121) (length 33.051647)) + (spring (first 118) (second 119) (length 36.456562)) + (spring (first 116) (second 118) (length 35.409103)) + (spring (first 114) (second 116) (length 37.014526)) + (spring (first 24) (second 140) (length 24.241102)) + (spring (first 140) (second 141) (length 27.288919)) + (spring (first 141) (second 21) (length 22.169065)) + (spring (first 20) (second 142) (length 21.277075)) + (spring (first 142) (second 141) (length 23.153215)) + (spring (first 142) (second 143) (length 31.048323)) + (spring (first 143) (second 140) (length 22.131189)) + (spring (first 143) (second 144) (length 22.971687)) + (spring (first 24) (second 144) (length 22.795982)) + (spring (first 144) (second 26) (length 33.649101)) + (spring (first 25) (second 146) (length 24.263424)) + (spring (first 146) (second 27) (length 35.094028)) + (spring (first 146) (second 147) (length 23.821566)) + (spring (first 147) (second 148) (length 19.678091)) + (spring (first 148) (second 133) (length 28.884312)) + (spring (first 134) (second 149) (length 25.798096)) + (spring (first 149) (second 150) (length 25.997061)) + (spring (first 150) (second 25) (length 22.470688)) + (spring (first 140) (second 144) (length 19.199526)) + (spring (first 143) (second 24) (length 41.886696)) + (spring (first 143) (second 141) (length 23.228430)) + (spring (first 142) (second 140) (length 46.669121)) + (spring (first 142) (second 21) (length 21.613110)) + (spring (first 141) (second 20) (length 37.545498)) + (spring (first 150) (second 146) (length 15.326291)) + (spring (first 147) (second 149) (length 19.529789)) + (spring (first 150) (second 147) (length 26.563416)) + (spring (first 146) (second 149) (length 33.688820)) + (spring (first 149) (second 148) (length 18.483578)) + (spring (first 148) (second 134) (length 29.199310)) + (spring (first 149) (second 133) (length 37.209797)) + (spring (first 140) (second 24) (length 24.241102)) + (spring (first 151) (second 24) (length 15.150935)) + (spring (first 25) (second 151) (length 23.149401)) + (spring (first 151) (second 140) (length 23.715620)) + (spring (first 151) (second 150) (length 36.594746)) + (spring (first 141) (second 151) (length 47.819214)) + (spring (first 151) (second 149) (length 58.751083)) + (spring (first 18) (second 21) (length 27.045980)) + (spring (first 21) (second 152) (length 18.509472)) + (spring (first 152) (second 153) (length 20.191427)) + (spring (first 153) (second 151) (length 34.529125)) + (spring (first 153) (second 141) (length 19.485971)) + (spring (first 141) (second 152) (length 20.714167)) + (spring (first 152) (second 18) (length 30.590858)) + (spring (first 21) (second 153) (length 34.406010)) + (spring (first 153) (second 151) (length 34.529125)) + (spring (first 151) (second 154) (length 15.212899)) + (spring (first 154) (second 153) (length 25.344717)) + (spring (first 140) (second 153) (length 23.227343)) + (spring (first 140) (second 154) (length 26.815441)) + (spring (first 154) (second 155) (length 26.010427)) + (spring (first 155) (second 150) (length 23.539764)) + (spring (first 151) (second 155) (length 31.797466)) + (spring (first 154) (second 150) (length 40.523006)) + (spring (first 155) (second 156) (length 20.329182)) + (spring (first 156) (second 149) (length 17.016102)) + (spring (first 150) (second 156) (length 28.878983)) + (spring (first 155) (second 149) (length 31.841917)) + (spring (first 156) (second 134) (length 24.411211)) + (spring (first 134) (second 157) (length 15.152373)) + (spring (first 157) (second 156) (length 18.758381)) + (spring (first 149) (second 157) (length 29.847994)) + (spring (first 157) (second 131) (length 26.157486)) + (spring (first 122) (second 158) (length 29.647165)) + (spring (first 158) (second 126) (length 29.092583)) + (spring (first 123) (second 158) (length 15.082062)) + (spring (first 13) (second 159) (length 29.500811)) + (spring (first 159) (second 10) (length 15.523969)) + (spring (first 159) (second 9) (length 29.638918)) + (spring (first 159) (second 13) (length 29.500811)) + (spring (first 158) (second 160) (length 34.729233)) + (spring (first 160) (second 127) (length 22.874432)) + (spring (first 160) (second 126) (length 16.863293)) + (spring (first 159) (second 161) (length 33.333401)) + (spring (first 161) (second 14) (length 23.972740)) + (spring (first 161) (second 13) (length 15.846316)) + (spring (first 165) (second 166) (length 19.182985)) + (spring (first 166) (second 36) (length 19.508129)) + (spring (first 166) (second 167) (length 19.761871)) + (spring (first 167) (second 37) (length 21.005350)) + (spring (first 37) (second 166) (length 29.929253)) + (spring (first 167) (second 36) (length 29.746714)) + (spring (first 170) (second 167) (length 20.343508)) + (spring (first 165) (second 172) (length 21.894300)) + (spring (first 172) (second 167) (length 19.357592)) + (spring (first 172) (second 166) (length 17.673651)) + (spring (first 172) (second 170) (length 22.834549)) + (spring (first 32) (second 36) (length 47.095261)) + (spring (first 37) (second 33) (length 47.907909)) + (spring (first 167) (second 85) (length 95.088844)) + (spring (first 166) (second 31) (length 89.526009)) + (spring (first 166) (second 87) (length 95.289299)) + (spring (first 141) (second 27) (length 87.804146)) + (spring (first 26) (second 149) (length 84.434006)) + (spring (first 26) (second 156) (length 84.654861)) + (spring (first 27) (second 153) (length 78.863083)) + (spring (first 165) (second 36) (length 34.592888)) + (spring (first 170) (second 37) (length 39.061600)) + (spring (first 160) (second 121) (length 72.575203)) + (spring (first 122) (second 128) (length 82.484192)) + (spring (first 8) (second 14) (length 82.709915)) + (spring (first 9) (second 15) (length 82.484207)) + (spring (first 165) (second 174) (length 33.937199)) + (spring (first 174) (second 175) (length 25.038610)) + (spring (first 175) (second 176) (length 33.231941)) + (spring (first 176) (second 177) (length 44.450005)) + (spring (first 177) (second 178) (length 44.688034)) + (spring (first 178) (second 179) (length 23.011217)) + (spring (first 179) (second 170) (length 36.101906)) + (spring (first 170) (second 177) (length 56.279770)) + (spring (first 176) (second 165) (length 60.993458)) + (spring (first 174) (second 179) (length 108.030464)) + (spring (first 178) (second 175) (length 107.659302)) + (spring (first 177) (second 165) (length 76.151215)) + (spring (first 176) (second 170) (length 71.009026)) + )) + +;; EOF ;; diff --git a/examples/kamikaze.construo b/examples/kamikaze.construo new file mode 100644 index 0000000..807ca85 --- /dev/null +++ b/examples/kamikaze.construo @@ -0,0 +1,193 @@ +;; Written by construo 0.2.1rc1 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 62291) (pos -6169.400391 -7666.126953) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62292) (pos -6220.236328 -7555.773926) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62293) (pos -6239.666016 -7491.958496) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62294) (pos -6253.843750 -7441.273438) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62295) (pos -6243.686523 -7397.465332) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62296) (pos -6214.448242 -7387.439453) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62297) (pos -6177.843750 -7430.982910) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62298) (pos -6125.482422 -7513.918945) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62299) (pos -6050.987305 -7653.344727) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62300) (pos -5974.391602 -7790.406250) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62301) (pos -5945.324707 -7880.983398) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62302) (pos -5936.767578 -7957.981445) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62303) (pos -5990.028809 -8019.797852) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62304) (pos -6039.428711 -8048.236328) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62305) (pos -6089.584961 -7995.185059) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62306) (pos -6058.724609 -7948.573242) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62307) (pos -6028.863281 -7900.227539) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62308) (pos -6056.959473 -7841.400879) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62309) (pos -6146.083008 -7704.627441) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62310) (pos -6188.538086 -7538.679688) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62311) (pos -6157.157227 -7577.154785) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62312) (pos -6131.031250 -7640.576660) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62313) (pos -6080.116211 -7737.037598) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62314) (pos -6080.748535 -7772.017578) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62315) (pos -6151.108398 -7413.284180) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62316) (pos -6149.084961 -7386.734375) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62317) (pos -6122.772461 -7392.355957) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62318) (pos -6118.939453 -7427.073242) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62319) (pos -6006.108398 -7685.202148) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62320) (pos -5983.968750 -7665.532715) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62321) (pos -5991.398926 -7630.579102) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62322) (pos -5961.699219 -7648.097168) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62323) (pos -5954.032227 -7679.453613) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62324) (pos -6066.362793 -7887.200195) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62325) (pos -6090.394043 -7432.563477) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62326) (pos -6100.737305 -7378.516602) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62327) (pos -6149.293945 -7360.315430) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62328) (pos -5996.098633 -7596.360352) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62329) (pos -5941.528809 -7633.023926) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62330) (pos -5921.731445 -7695.474121) (velocity -225.469727 929.168945) (fixed #f) (mass 0.100000)) + (particle (id 62331) (pos -6082.496094 -7574.558594) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62332) (pos -6167.616211 -7467.903809) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62333) (pos -6207.205078 -7417.831055) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62334) (pos -6146.167969 -7446.827637) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62335) (pos -6114.054688 -7499.692871) (velocity -266.285645 999.193848) (fixed #f) (mass 0.100000)) + (particle (id 62336) (pos -6026.711914 -7792.020508) (velocity -225.469727 929.168945) (fixed #f) (mass 2.100000)) + ) + (springs + (spring (first 62291) (second 62292) (length 121.499313) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62292) (second 62293) (length 66.707733) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62293) (second 62294) (length 52.630630) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62294) (second 62295) (length 44.970203) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62295) (second 62296) (length 30.909470) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62296) (second 62297) (length 56.885162) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62297) (second 62298) (length 98.082085) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62298) (second 62299) (length 158.079315) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62299) (second 62300) (length 157.011978) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62300) (second 62301) (length 95.126778) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62301) (second 62302) (length 77.472084) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62302) (second 62303) (length 81.596733) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62303) (second 62304) (length 57.000854) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62304) (second 62305) (length 73.007439) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62305) (second 62306) (length 55.901901) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62306) (second 62307) (length 56.824345) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62307) (second 62308) (length 65.191811) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62308) (second 62309) (length 163.248215) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62309) (second 62291) (length 45.010975) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62310) (second 62292) (length 36.013767) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62310) (second 62311) (length 49.649689) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62311) (second 62312) (length 68.592278) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62312) (second 62313) (length 109.073616) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62313) (second 62314) (length 34.985695) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62314) (second 62291) (length 138.101318) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62292) (second 62311) (length 66.604164) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62310) (second 62291) (length 128.876129) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62292) (second 62312) (length 123.081474) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62311) (second 62291) (length 89.810585) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62312) (second 62291) (length 46.097813) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62291) (second 62313) (length 114.017471) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62314) (second 62312) (length 140.730469) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62294) (second 62298) (length 147.492371) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62297) (second 62294) (length 76.693512) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62295) (second 62297) (length 73.883011) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62296) (second 62294) (length 66.709099) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62296) (second 62292) (length 168.433960) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62297) (second 62310) (length 108.226448) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62294) (second 62299) (length 293.470551) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62310) (second 62298) (length 67.742981) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62311) (second 62299) (length 130.678848) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62311) (second 62298) (length 70.725273) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62310) (second 62299) (length 179.076202) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62312) (second 62299) (length 81.055885) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62313) (second 62299) (length 88.617096) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62313) (second 62300) (length 118.431015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62313) (second 62301) (length 197.203308) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62314) (second 62301) (length 173.819336) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62314) (second 62308) (length 73.348221) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62314) (second 62302) (length 235.187317) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62307) (second 62301) (length 85.726486) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62307) (second 62302) (length 108.706635) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62307) (second 62303) (length 125.718636) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62307) (second 62304) (length 148.385406) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62297) (second 62315) (length 32.062813) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62315) (second 62316) (length 26.626799) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62316) (second 62317) (length 26.906317) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62317) (second 62318) (length 34.928238) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62318) (second 62315) (length 34.999702) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62316) (second 62318) (length 50.358475) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62315) (second 62317) (length 35.226635) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62300) (second 62319) (length 109.881111) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62299) (second 62319) (length 55.036457) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62319) (second 62320) (length 29.615042) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62320) (second 62321) (length 35.734612) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62321) (second 62322) (length 34.481232) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62322) (second 62320) (length 28.283039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62322) (second 62320) (length 28.283039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62323) (second 62322) (length 32.280170) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62322) (second 62320) (length 28.283039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62323) (second 62321) (length 61.522259) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62320) (second 62323) (length 33.014950) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62320) (second 62300) (length 125.240257) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62299) (second 62320) (length 68.117790) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62293) (second 62298) (length 116.276199) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62293) (second 62297) (length 86.833260) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62307) (second 62324) (length 39.697922) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62324) (second 62308) (length 46.754677) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62324) (second 62305) (length 110.453606) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62324) (second 62300) (length 133.520660) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62291) (second 62324) (length 243.905975) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62324) (second 62304) (length 163.273026) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62324) (second 62303) (length 153.000046) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62324) (second 62302) (length 147.664841) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62324) (second 62301) (length 121.197632) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62324) (second 62313) (length 150.791122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62300) (second 62302) (length 171.746948) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62303) (second 62300) (length 229.923965) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62304) (second 62300) (length 265.906342) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62299) (second 62292) (length 195.359390) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62299) (second 62293) (length 248.284454) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62309) (second 62313) (length 73.498550) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62309) (second 62312) (length 65.795578) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62309) (second 62324) (length 199.218781) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62318) (second 62325) (length 29.068594) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62325) (second 62326) (length 55.027699) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62326) (second 62327) (length 51.855858) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62327) (second 62316) (length 26.419771) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62327) (second 62325) (length 93.214691) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62321) (second 62328) (length 34.539978) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62328) (second 62329) (length 65.742554) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62329) (second 62330) (length 65.513069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62330) (second 62323) (length 36.055473) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62328) (second 62330) (length 123.911331) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62306) (second 62303) (length 98.954826) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62306) (second 62324) (length 61.846527) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62298) (second 62331) (length 74.330284) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62331) (second 62299) (length 84.853157) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62331) (second 62320) (length 134.104172) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62315) (second 62332) (length 57.059719) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62332) (second 62333) (length 63.832272) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62333) (second 62315) (length 56.280651) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62333) (second 62297) (length 32.172333) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62297) (second 62332) (length 38.311295) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62296) (second 62333) (length 31.242805) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62332) (second 62298) (length 62.391098) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62332) (second 62293) (length 75.959213) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62293) (second 62333) (length 80.923363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62296) (second 62334) (length 90.493935) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62334) (second 62298) (length 70.207802) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62334) (second 62335) (length 61.854633) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62335) (second 62298) (length 18.247583) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62335) (second 62331) (length 81.245438) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62336) (second 62314) (length 57.620079) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62336) (second 62300) (length 52.345211) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62336) (second 62319) (length 108.787254) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 -13188.238281 -1147.840088) (pos2 -2644.722412 -931.285217)) + (rect (pos1 -12934.304688 -1005.115295) (pos2 -2914.304932 -285.115326)) + (rect (pos1 -12594.304688 -385.115326) (pos2 -3394.304932 274.884674)) + (rect (pos1 -12354.304688 174.884674) (pos2 -3774.304932 694.884644)) + (rect (pos1 -8994.304688 -2665.115234) (pos2 -8854.304688 -2225.115234)) + (rect (pos1 -9434.304688 -2925.115234) (pos2 -8394.304688 -2605.115234)) + (rect (pos1 -9790.761719 -2334.822266) (pos2 -8170.761719 -2154.822266)) + (rect (pos1 -9750.761719 -1994.822388) (pos2 -8170.761719 -1454.822388)) + (rect (pos1 -9591.302734 -1449.904419) (pos2 -8451.302734 -1189.904419)) + )) + +;; EOF ;; diff --git a/examples/krahn.construo b/examples/krahn.construo new file mode 100644 index 0000000..ec7713f --- /dev/null +++ b/examples/krahn.construo @@ -0,0 +1,195 @@ + +(construo-scene + (particles + (particle (id 19785) (pos 253.246 600 0 ) (velocity -0.432304 -1.32421 0 ) ) + (particle (id 19786) (pos 287.395 568.076 0 ) (velocity 3.1939 4.72692 0 ) ) + (particle (id 19787) (pos 358.236 573.801 0 ) (velocity 2.79089 7.35404 0 ) ) + (particle (id 19788) (pos 339.609 600 0 ) (velocity -0.507882 -16.1196 0 ) ) + (particle (id 19789) (pos 470.672 571.377 0 ) (velocity 2.44734 0.0884418 0 ) ) + (particle (id 19790) (pos 481.499 600 0 ) (velocity -0.0898893 -13.7971 0 ) ) + (particle (id 19791) (pos 555.539 600 0 ) (velocity -0.0541524 -2.22106 0 ) ) + (particle (id 19792) (pos 533.753 572.624 0 ) (velocity -1.65668 -0.641495 0 ) ) + (particle (id 19810) (pos 410.012 567.368 0 ) (velocity -2.56261 0.477475 0 ) ) + (particle (id 19811) (pos 412.992 594.384 0 ) (velocity 0.107678 -1.11626 0 ) ) + (particle (id 19851) (pos 391.989 521.375 0 ) (velocity -6.48909 2.15404 0 ) ) + (particle (id 19852) (pos 437.946 522.299 0 ) (velocity -3.55402 2.47215 0 ) ) + (particle (id 19853) (pos 391.82 463.432 0 ) (velocity 8.33737 -1.3891 0 ) ) + (particle (id 19854) (pos 427.832 460.357 0 ) (velocity 8.90252 2.66035 0 ) ) + (particle (id 19855) (pos 390.67 386.454 0 ) (velocity 10.474 -0.856002 0 ) ) + (particle (id 19856) (pos 417.675 386.446 0 ) (velocity 5.67674 2.42878 0 ) ) + (particle (id 19857) (pos 393.786 309.454 0 ) (velocity 28.1712 -0.796185 0 ) ) + (particle (id 19858) (pos 421.795 307.514 0 ) (velocity 29.4174 4.73534 0 ) ) + (particle (id 19859) (pos 392.978 241.456 0 ) (velocity 53.4259 -3.37355 0 ) ) + (particle (id 19860) (pos 421.981 240.536 0 ) (velocity 55.25 7.90592 0 ) ) + (particle (id 19881) (pos 171 241 0 ) (velocity 0 0 0 ) ) + (particle (id 19882) (pos 205 212 0 ) (velocity 0 0 0 ) ) + (particle (id 19883) (pos 390 212 0 ) (velocity 0 0 0 ) ) + (particle (id 19884) (pos 423 209 0 ) (velocity 0 0 0 ) ) + (particle (id 20101) (pos 490 211 0 ) (velocity 0 0 0 ) ) + (particle (id 20102) (pos 494 243 0 ) (velocity 0 0 0 ) ) + (particle (id 20103) (pos 558 243 0 ) (velocity 0 0 0 ) ) + (particle (id 20104) (pos 548 212 0 ) (velocity 0 0 0 ) ) + (particle (id 20105) (pos 616 210 0 ) (velocity 0 0 0 ) ) + (particle (id 20106) (pos 632 238 0 ) (velocity 0 0 0 ) ) + (particle (id 20107) (pos 690 236 0 ) (velocity 0 0 0 ) ) + (particle (id 20108) (pos 669 207 0 ) (velocity 0 0 0 ) ) + (particle (id 20187) (pos 210 181 0 ) (velocity 0 0 0 ) ) + (particle (id 20188) (pos 290 180 0 ) (velocity 0 0 0 ) ) + (particle (id 20189) (pos 381 176 0 ) (velocity 0 0 0 ) ) + (particle (id 20190) (pos 224 146 0 ) (velocity 0 0 0 ) ) + (particle (id 20191) (pos 337 147 0 ) (velocity 0 0 0 ) ) + (particle (id 20429) (pos 401 20 0 ) (velocity 0 0 0 ) ) + (particle (id 20430) (pos 448 87 0 ) (velocity 0 0 0 ) ) + (particle (id 20431) (pos 504 133 0 ) (velocity 0 0 0 ) ) + (particle (id 20432) (pos 576 178 0 ) (velocity 0 0 0 ) ) + (particle (id 20474) (pos 377 85 0 ) (velocity 0 0 0 ) ) + (particle (id 20475) (pos 336 119 0 ) (velocity 0 0 0 ) ) + (particle (id 20476) (pos 284 132 0 ) (velocity 0 0 0 ) ) + (particle (id 20527) (pos 182 162 0 ) (velocity 0 0 0 ) ) + (particle (id 20663) (pos 186 265 0 ) (velocity 0 0 0 ) ) + (particle (id 20664) (pos 218 265 0 ) (velocity 0 0 0 ) ) + (particle (id 20859) (pos 727 233 0 ) (velocity 0 0 0 ) ) + (particle (id 20956) (pos 192 136 0 ) (velocity 0 0 0 ) ) + (particle (id 21338) (pos 722 208 0 ) (velocity 0 0 0 ) ) + (particle (id 21653) (pos 297 107 0 ) (velocity 0 0 0 ) ) + (particle (id 21756) (pos 331 89 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 19785)(second 19786)) + (spring (first 19786)(second 19787)) + (spring (first 19787)(second 19788)) + (spring (first 19788)(second 19785)) + (spring (first 19789)(second 19790)) + (spring (first 19790)(second 19791)) + (spring (first 19791)(second 19792)) + (spring (first 19792)(second 19789)) + (spring (first 19792)(second 19790)) + (spring (first 19786)(second 19788)) + (spring (first 19787)(second 19810)) + (spring (first 19810)(second 19789)) + (spring (first 19810)(second 19811)) + (spring (first 19811)(second 19788)) + (spring (first 19811)(second 19790)) + (spring (first 19810)(second 19790)) + (spring (first 19810)(second 19788)) + (spring (first 19787)(second 19785)) + (spring (first 19789)(second 19791)) + (spring (first 19787)(second 19851)) + (spring (first 19851)(second 19852)) + (spring (first 19852)(second 19789)) + (spring (first 19852)(second 19810)) + (spring (first 19851)(second 19810)) + (spring (first 19851)(second 19853)) + (spring (first 19853)(second 19854)) + (spring (first 19854)(second 19852)) + (spring (first 19854)(second 19851)) + (spring (first 19853)(second 19852)) + (spring (first 19853)(second 19855)) + (spring (first 19855)(second 19856)) + (spring (first 19856)(second 19854)) + (spring (first 19856)(second 19853)) + (spring (first 19855)(second 19854)) + (spring (first 19855)(second 19857)) + (spring (first 19858)(second 19857)) + (spring (first 19858)(second 19856)) + (spring (first 19858)(second 19855)) + (spring (first 19857)(second 19856)) + (spring (first 19857)(second 19859)) + (spring (first 19859)(second 19860)) + (spring (first 19860)(second 19857)) + (spring (first 19860)(second 19858)) + (spring (first 19859)(second 19858)) + (spring (first 19859)(second 19881)) + (spring (first 19881)(second 19882)) + (spring (first 19882)(second 19883)) + (spring (first 19883)(second 19859)) + (spring (first 19883)(second 19860)) + (spring (first 19883)(second 19884)) + (spring (first 19884)(second 19859)) + (spring (first 19884)(second 19860)) + (spring (first 19882)(second 19859)) + (spring (first 19883)(second 19881)) + (spring (first 19884)(second 20101)) + (spring (first 20101)(second 20102)) + (spring (first 20102)(second 19859)) + (spring (first 20102)(second 20103)) + (spring (first 20103)(second 20104)) + (spring (first 20104)(second 20101)) + (spring (first 20104)(second 20105)) + (spring (first 20105)(second 20106)) + (spring (first 20106)(second 20103)) + (spring (first 20106)(second 20107)) + (spring (first 20107)(second 20108)) + (spring (first 20108)(second 20105)) + (spring (first 19884)(second 20102)) + (spring (first 20101)(second 19860)) + (spring (first 20102)(second 20104)) + (spring (first 20101)(second 20103)) + (spring (first 20103)(second 20105)) + (spring (first 20104)(second 20106)) + (spring (first 20108)(second 20106)) + (spring (first 19882)(second 20187)) + (spring (first 20187)(second 20188)) + (spring (first 20188)(second 20189)) + (spring (first 20189)(second 19883)) + (spring (first 20189)(second 19881)) + (spring (first 20187)(second 19859)) + (spring (first 20187)(second 20190)) + (spring (first 20190)(second 20188)) + (spring (first 20188)(second 20191)) + (spring (first 20191)(second 20189)) + (spring (first 20191)(second 20190)) + (spring (first 19883)(second 20429)) + (spring (first 20429)(second 19884)) + (spring (first 20429)(second 20430)) + (spring (first 20430)(second 20431)) + (spring (first 20431)(second 20432)) + (spring (first 20432)(second 20108)) + (spring (first 20429)(second 20474)) + (spring (first 20474)(second 20475)) + (spring (first 20475)(second 20476)) + (spring (first 20476)(second 20190)) + (spring (first 20190)(second 20187)) + (spring (first 20190)(second 20527)) + (spring (first 20187)(second 20527)) + (spring (first 20527)(second 19882)) + (spring (first 20527)(second 19881)) + (spring (first 19881)(second 20663)) + (spring (first 20663)(second 20664)) + (spring (first 20664)(second 20188)) + (spring (first 20664)(second 20187)) + (spring (first 19882)(second 20663)) + (spring (first 20105)(second 20107)) + (spring (first 20108)(second 20107)) + (spring (first 20108)(second 20859)) + (spring (first 20107)(second 20859)) + (spring (first 20191)(second 20475)) + (spring (first 20956)(second 20527)) + (spring (first 20956)(second 20190)) + (spring (first 20108)(second 21338)) + (spring (first 21338)(second 20859)) + (spring (first 21338)(second 20107)) + (spring (first 20431)(second 20101)) + (spring (first 20432)(second 20104)) + (spring (first 20432)(second 20105)) + (spring (first 20475)(second 21653)) + (spring (first 21653)(second 20190)) + (spring (first 21653)(second 20476)) + (spring (first 20476)(second 20191)) + (spring (first 21653)(second 21756)) + (spring (first 21756)(second 20475)) + (spring (first 19854)(second 19856)) + (spring (first 19855)(second 19853)) + (spring (first 19855)(second 19857)) + (spring (first 19858)(second 19856)) + (spring (first 19856)(second 19855)) + (spring (first 19857)(second 19858)) + (spring (first 19854)(second 19853)) + (spring (first 19851)(second 19852)) + (spring (first 19883)(second 19859)) + (spring (first 19859)(second 19860)) + (spring (first 19860)(second 19884)) + (spring (first 19884)(second 19883)) + (spring (first 20474)(second 20430)) + ) +) diff --git a/examples/kran2.construo b/examples/kran2.construo new file mode 100644 index 0000000..5240ef3 --- /dev/null +++ b/examples/kran2.construo @@ -0,0 +1,294 @@ + +(construo-scene + (particles + (particle (id 19785) (pos 253.246 600 0 ) (velocity -0.432304 -1.32421 0 ) ) + (particle (id 19786) (pos 287.395 568.076 0 ) (velocity 3.1939 4.72692 0 ) ) + (particle (id 19787) (pos 358.236 573.801 0 ) (velocity 2.79089 7.35404 0 ) ) + (particle (id 19788) (pos 339.609 600 0 ) (velocity -0.507882 -16.1196 0 ) ) + (particle (id 19789) (pos 470.672 571.377 0 ) (velocity 2.44734 0.0884418 0 ) ) + (particle (id 19790) (pos 481.499 600 0 ) (velocity -0.0898893 -13.7971 0 ) ) + (particle (id 19791) (pos 555.539 600 0 ) (velocity -0.0541524 -2.22106 0 ) ) + (particle (id 19792) (pos 533.753 572.624 0 ) (velocity -1.65668 -0.641495 0 ) ) + (particle (id 19810) (pos 410.012 567.368 0 ) (velocity -2.56261 0.477475 0 ) ) + (particle (id 19811) (pos 412.992 594.384 0 ) (velocity 0.107678 -1.11626 0 ) ) + (particle (id 19851) (pos 391.989 521.375 0 ) (velocity -6.48909 2.15404 0 ) ) + (particle (id 19852) (pos 437.946 522.299 0 ) (velocity -3.55402 2.47215 0 ) ) + (particle (id 19853) (pos 391.82 463.432 0 ) (velocity 8.33737 -1.3891 0 ) ) + (particle (id 19854) (pos 427.832 460.357 0 ) (velocity 8.90252 2.66035 0 ) ) + (particle (id 19855) (pos 390.67 386.454 0 ) (velocity 10.474 -0.856002 0 ) ) + (particle (id 19856) (pos 417.675 386.446 0 ) (velocity 5.67674 2.42878 0 ) ) + (particle (id 19857) (pos 393.786 309.454 0 ) (velocity 28.1712 -0.796185 0 ) ) + (particle (id 19858) (pos 421.795 307.514 0 ) (velocity 29.4174 4.73534 0 ) ) + (particle (id 19859) (pos 392.978 241.456 0 ) (velocity 53.4259 -3.37355 0 ) ) + (particle (id 19860) (pos 421.981 240.536 0 ) (velocity 55.25 7.90592 0 ) ) + (particle (id 19881) (pos 171 241 0 ) (velocity 0 0 0 ) ) + (particle (id 19882) (pos 205 212 0 ) (velocity 0 0 0 ) ) + (particle (id 19883) (pos 390 212 0 ) (velocity 0 0 0 ) ) + (particle (id 19884) (pos 423 209 0 ) (velocity 0 0 0 ) ) + (particle (id 20101) (pos 490 211 0 ) (velocity 0 0 0 ) ) + (particle (id 20102) (pos 494 243 0 ) (velocity 0 0 0 ) ) + (particle (id 20103) (pos 558 243 0 ) (velocity 0 0 0 ) ) + (particle (id 20104) (pos 548 212 0 ) (velocity 0 0 0 ) ) + (particle (id 20105) (pos 616 210 0 ) (velocity 0 0 0 ) ) + (particle (id 20106) (pos 632 238 0 ) (velocity 0 0 0 ) ) + (particle (id 20107) (pos 690 236 0 ) (velocity 0 0 0 ) ) + (particle (id 20108) (pos 669 207 0 ) (velocity 0 0 0 ) ) + (particle (id 20187) (pos 210 181 0 ) (velocity 0 0 0 ) ) + (particle (id 20188) (pos 290 180 0 ) (velocity 0 0 0 ) ) + (particle (id 20189) (pos 381 176 0 ) (velocity 0 0 0 ) ) + (particle (id 20190) (pos 224 146 0 ) (velocity 0 0 0 ) ) + (particle (id 20191) (pos 337 147 0 ) (velocity 0 0 0 ) ) + (particle (id 20429) (pos 401 20 0 ) (velocity 0 0 0 ) ) + (particle (id 20430) (pos 448 87 0 ) (velocity 0 0 0 ) ) + (particle (id 20431) (pos 504 133 0 ) (velocity 0 0 0 ) ) + (particle (id 20432) (pos 576 178 0 ) (velocity 0 0 0 ) ) + (particle (id 20474) (pos 377 85 0 ) (velocity 0 0 0 ) ) + (particle (id 20475) (pos 336 119 0 ) (velocity 0 0 0 ) ) + (particle (id 20476) (pos 284 132 0 ) (velocity 0 0 0 ) ) + (particle (id 20527) (pos 182 162 0 ) (velocity 0 0 0 ) ) + (particle (id 20663) (pos 186 265 0 ) (velocity 0 0 0 ) ) + (particle (id 20664) (pos 218 265 0 ) (velocity 0 0 0 ) ) + (particle (id 20859) (pos 727 233 0 ) (velocity 0 0 0 ) ) + (particle (id 20956) (pos 192 136 0 ) (velocity 0 0 0 ) ) + (particle (id 21338) (pos 722 208 0 ) (velocity 0 0 0 ) ) + (particle (id 21653) (pos 297 107 0 ) (velocity 0 0 0 ) ) + (particle (id 21756) (pos 331 89 0 ) (velocity 0 0 0 ) ) + (particle (id 25528) (pos 697 344 0 ) (velocity 0 0 0 ) ) + (particle (id 25529) (pos 644 379 0 ) (velocity 0 0 0 ) ) + (particle (id 25530) (pos 704 410 0 ) (velocity 0 0 0 ) ) + (particle (id 25531) (pos 752 384 0 ) (velocity 0 0 0 ) ) + (particle (id 25532) (pos 647 321 0 ) (velocity 0 0 0 ) ) + (particle (id 25533) (pos 601 375 0 ) (velocity 0 0 0 ) ) + (particle (id 25534) (pos 627 426 0 ) (velocity 0 0 0 ) ) + (particle (id 25535) (pos 676 456 0 ) (velocity 0 0 0 ) ) + (particle (id 25536) (pos 736 463 0 ) (velocity 0 0 0 ) ) + (particle (id 25714) (pos 734 317 0 ) (velocity 0 0 0 ) ) + (particle (id 25715) (pos 222 112 0 ) (velocity 0 0 0 ) ) + (particle (id 25716) (pos 253 85 0 ) (velocity 0 0 0 ) ) + (particle (id 25717) (pos 300 78 0 ) (velocity 0 0 0 ) ) + (particle (id 25718) (pos 224 86 0 ) (velocity 0 0 0 ) ) + (particle (id 26053) (pos 176 100 0 ) (velocity 0 0 0 ) ) + (particle (id 26054) (pos 164 138 0 ) (velocity 0 0 0 ) ) + (particle (id 26055) (pos 159 175 0 ) (velocity 0 0 0 ) ) + (particle (id 26617) (pos 192 76 0 ) (velocity 0 0 0 ) ) + (particle (id 26696) (pos 157 83 0 ) (velocity 0 0 0 ) ) + (particle (id 30688) (pos 138 134 0 ) (velocity 0 0 0 ) ) + (particle (id 31409) (pos 131 187 0 ) (velocity 0 0 0 ) ) + (particle (id 31483) (pos 154 260 0 ) (velocity 0 0 0 ) ) + (particle (id 32182) (pos 187 290 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 19785)(second 19786)) + (spring (first 19786)(second 19787)) + (spring (first 19787)(second 19788)) + (spring (first 19788)(second 19785)) + (spring (first 19789)(second 19790)) + (spring (first 19790)(second 19791)) + (spring (first 19791)(second 19792)) + (spring (first 19792)(second 19789)) + (spring (first 19792)(second 19790)) + (spring (first 19786)(second 19788)) + (spring (first 19787)(second 19810)) + (spring (first 19810)(second 19789)) + (spring (first 19810)(second 19811)) + (spring (first 19811)(second 19788)) + (spring (first 19811)(second 19790)) + (spring (first 19810)(second 19790)) + (spring (first 19810)(second 19788)) + (spring (first 19787)(second 19785)) + (spring (first 19789)(second 19791)) + (spring (first 19787)(second 19851)) + (spring (first 19851)(second 19852)) + (spring (first 19852)(second 19789)) + (spring (first 19852)(second 19810)) + (spring (first 19851)(second 19810)) + (spring (first 19851)(second 19853)) + (spring (first 19853)(second 19854)) + (spring (first 19854)(second 19852)) + (spring (first 19854)(second 19851)) + (spring (first 19853)(second 19852)) + (spring (first 19853)(second 19855)) + (spring (first 19855)(second 19856)) + (spring (first 19856)(second 19854)) + (spring (first 19856)(second 19853)) + (spring (first 19855)(second 19854)) + (spring (first 19855)(second 19857)) + (spring (first 19858)(second 19857)) + (spring (first 19858)(second 19856)) + (spring (first 19858)(second 19855)) + (spring (first 19857)(second 19856)) + (spring (first 19857)(second 19859)) + (spring (first 19859)(second 19860)) + (spring (first 19860)(second 19857)) + (spring (first 19860)(second 19858)) + (spring (first 19859)(second 19858)) + (spring (first 19859)(second 19881)) + (spring (first 19881)(second 19882)) + (spring (first 19882)(second 19883)) + (spring (first 19883)(second 19859)) + (spring (first 19883)(second 19860)) + (spring (first 19883)(second 19884)) + (spring (first 19884)(second 19859)) + (spring (first 19884)(second 19860)) + (spring (first 19882)(second 19859)) + (spring (first 19883)(second 19881)) + (spring (first 19884)(second 20101)) + (spring (first 20101)(second 20102)) + (spring (first 20102)(second 19859)) + (spring (first 20102)(second 20103)) + (spring (first 20103)(second 20104)) + (spring (first 20104)(second 20101)) + (spring (first 20104)(second 20105)) + (spring (first 20105)(second 20106)) + (spring (first 20106)(second 20103)) + (spring (first 20106)(second 20107)) + (spring (first 20107)(second 20108)) + (spring (first 20108)(second 20105)) + (spring (first 19884)(second 20102)) + (spring (first 20101)(second 19860)) + (spring (first 20102)(second 20104)) + (spring (first 20101)(second 20103)) + (spring (first 20103)(second 20105)) + (spring (first 20104)(second 20106)) + (spring (first 20108)(second 20106)) + (spring (first 19882)(second 20187)) + (spring (first 20187)(second 20188)) + (spring (first 20188)(second 20189)) + (spring (first 20189)(second 19883)) + (spring (first 20189)(second 19881)) + (spring (first 20187)(second 19859)) + (spring (first 20187)(second 20190)) + (spring (first 20190)(second 20188)) + (spring (first 20188)(second 20191)) + (spring (first 20191)(second 20189)) + (spring (first 20191)(second 20190)) + (spring (first 19883)(second 20429)) + (spring (first 20429)(second 19884)) + (spring (first 20429)(second 20430)) + (spring (first 20430)(second 20431)) + (spring (first 20431)(second 20432)) + (spring (first 20432)(second 20108)) + (spring (first 20429)(second 20474)) + (spring (first 20474)(second 20475)) + (spring (first 20475)(second 20476)) + (spring (first 20476)(second 20190)) + (spring (first 20190)(second 20187)) + (spring (first 20190)(second 20527)) + (spring (first 20187)(second 20527)) + (spring (first 20527)(second 19882)) + (spring (first 20527)(second 19881)) + (spring (first 19881)(second 20663)) + (spring (first 20663)(second 20664)) + (spring (first 20664)(second 20188)) + (spring (first 20664)(second 20187)) + (spring (first 19882)(second 20663)) + (spring (first 20105)(second 20107)) + (spring (first 20108)(second 20107)) + (spring (first 20108)(second 20859)) + (spring (first 20107)(second 20859)) + (spring (first 20191)(second 20475)) + (spring (first 20956)(second 20527)) + (spring (first 20956)(second 20190)) + (spring (first 20108)(second 21338)) + (spring (first 21338)(second 20859)) + (spring (first 21338)(second 20107)) + (spring (first 20431)(second 20101)) + (spring (first 20432)(second 20104)) + (spring (first 20432)(second 20105)) + (spring (first 20475)(second 21653)) + (spring (first 21653)(second 20190)) + (spring (first 21653)(second 20476)) + (spring (first 20476)(second 20191)) + (spring (first 21653)(second 21756)) + (spring (first 21756)(second 20475)) + (spring (first 19854)(second 19856)) + (spring (first 19855)(second 19853)) + (spring (first 19855)(second 19857)) + (spring (first 19858)(second 19856)) + (spring (first 19856)(second 19855)) + (spring (first 19857)(second 19858)) + (spring (first 19854)(second 19853)) + (spring (first 19851)(second 19852)) + (spring (first 19883)(second 19859)) + (spring (first 19859)(second 19860)) + (spring (first 19860)(second 19884)) + (spring (first 19884)(second 19883)) + (spring (first 20107)(second 25528)) + (spring (first 25528)(second 25529)) + (spring (first 25529)(second 25530)) + (spring (first 25530)(second 25531)) + (spring (first 25531)(second 25528)) + (spring (first 25528)(second 25530)) + (spring (first 25529)(second 25531)) + (spring (first 25528)(second 25532)) + (spring (first 25532)(second 25533)) + (spring (first 25533)(second 25529)) + (spring (first 25532)(second 25529)) + (spring (first 25533)(second 25528)) + (spring (first 25533)(second 25534)) + (spring (first 25534)(second 25530)) + (spring (first 25529)(second 25534)) + (spring (first 25534)(second 25535)) + (spring (first 25535)(second 25530)) + (spring (first 25535)(second 25536)) + (spring (first 25536)(second 25530)) + (spring (first 25531)(second 25536)) + (spring (first 25528)(second 25714)) + (spring (first 25531)(second 25714)) + (spring (first 20956)(second 25715)) + (spring (first 25715)(second 21653)) + (spring (first 25715)(second 20190)) + (spring (first 25715)(second 25716)) + (spring (first 25716)(second 21653)) + (spring (first 21756)(second 25717)) + (spring (first 25717)(second 25716)) + (spring (first 25717)(second 21653)) + (spring (first 25716)(second 25718)) + (spring (first 25718)(second 25715)) + (spring (first 25718)(second 20956)) + (spring (first 20474)(second 20430)) + (spring (first 25718)(second 26053)) + (spring (first 26053)(second 20956)) + (spring (first 26053)(second 26054)) + (spring (first 26054)(second 20527)) + (spring (first 26054)(second 20956)) + (spring (first 26054)(second 26055)) + (spring (first 26055)(second 19881)) + (spring (first 26055)(second 20527)) + (spring (first 20527)(second 20190)) + (spring (first 26054)(second 26053)) + (spring (first 26053)(second 26617)) + (spring (first 26617)(second 25718)) + (spring (first 26617)(second 26696)) + (spring (first 26696)(second 26054)) + (spring (first 26053)(second 26696)) + (spring (first 19852)(second 19854)) + (spring (first 19851)(second 19853)) + (spring (first 19851)(second 19787)) + (spring (first 19851)(second 19810)) + (spring (first 19852)(second 19789)) + (spring (first 19811)(second 19789)) + (spring (first 19811)(second 19852)) + (spring (first 19851)(second 19811)) + (spring (first 19787)(second 19811)) + (spring (first 19860)(second 19858)) + (spring (first 19859)(second 19857)) + (spring (first 19859)(second 19858)) + (spring (first 19860)(second 19857)) + (spring (first 19788)(second 19851)) + (spring (first 19852)(second 19790)) + (spring (first 26696)(second 30688)) + (spring (first 30688)(second 26055)) + (spring (first 30688)(second 26054)) + (spring (first 26617)(second 30688)) + (spring (first 30688)(second 26055)) + (spring (first 31409)(second 30688)) + (spring (first 31409)(second 19881)) + (spring (first 31409)(second 26055)) + (spring (first 31409)(second 31483)) + (spring (first 31483)(second 20663)) + (spring (first 31483)(second 32182)) + (spring (first 32182)(second 20664)) + (spring (first 32182)(second 20663)) + ) +) diff --git a/examples/kranfree.construo b/examples/kranfree.construo new file mode 100644 index 0000000..7beca36 --- /dev/null +++ b/examples/kranfree.construo @@ -0,0 +1,366 @@ + +(construo-scene + (particles + (particle (id 82581) (pos 165.383 600 0 ) (velocity 0.0168484 -0.0669207 0 ) ) + (particle (id 82582) (pos 100.47 550.831 0 ) (velocity 0.779085 0.00767554 0 ) ) + (particle (id 82583) (pos 47.8005 505.717 0 ) (velocity 0.278569 -0.0238803 0 ) ) + (particle (id 82584) (pos 0.00507942 439.873 0 ) (velocity -0.0672846 0.0636154 0 ) ) + (particle (id 82585) (pos 0 385.712 0 ) (velocity 0.0102829 0.039308 0 ) ) + (particle (id 82586) (pos 60.4009 456.349 0 ) (velocity 0.327349 0.295261 0 ) ) + (particle (id 82587) (pos 116.012 508.343 0 ) (velocity -0.0798742 -0.142661 0 ) ) + (particle (id 82588) (pos 163.47 544.246 0 ) (velocity 0.210947 -0.0722836 0 ) ) + (particle (id 82589) (pos 222.307 599.52 0 ) (velocity 0.195117 -0.00979782 0 ) ) + (particle (id 82590) (pos 616.603 600 0 ) (velocity -0.0306415 -0.0677084 0 ) ) + (particle (id 82591) (pos 675.418 559.906 0 ) (velocity 0.339079 -0.108074 0 ) ) + (particle (id 82592) (pos 738.318 510.208 0 ) (velocity 0.105724 0.0730763 0 ) ) + (particle (id 82593) (pos 799.057 448.673 0 ) (velocity 0.125187 0.288705 0 ) ) + (particle (id 82594) (pos 800 399.587 0 ) (velocity -0.0147316 0.0259388 0 ) ) + (particle (id 82595) (pos 742.136 445.286 0 ) (velocity 0.0619587 -0.570204 0 ) ) + (particle (id 82596) (pos 677.584 501.01 0 ) (velocity -1.87951 -0.875229 0 ) ) + (particle (id 82597) (pos 619.039 538.291 0 ) (velocity -1.55811 -1.08786 0 ) ) + (particle (id 82598) (pos 543.69 597.733 0 ) (velocity 0.0440932 0.871301 0 ) ) + (particle (id 82599) (pos 153 427 0 ) (velocity 0 0 0 ) ) + (particle (id 82600) (pos 208 353 0 ) (velocity 0 0 0 ) ) + (particle (id 82601) (pos 313 294 0 ) (velocity 0 0 0 ) ) + (particle (id 82602) (pos 404 275 0 ) (velocity 0 0 0 ) ) + (particle (id 82603) (pos 499 306 0 ) (velocity 0 0 0 ) ) + (particle (id 82604) (pos 564 356 0 ) (velocity 0 0 0 ) ) + (particle (id 82605) (pos 619 422 0 ) (velocity 0 0 0 ) ) + (particle (id 82633) (pos 227 372 0 ) (velocity 0 0 0 ) ) + (particle (id 82634) (pos 190 331 0 ) (velocity 0 0 0 ) ) + (particle (id 82635) (pos 298 269 0 ) (velocity 0 0 0 ) ) + (particle (id 82636) (pos 329 317 0 ) (velocity 0 0 0 ) ) + (particle (id 82637) (pos 406 308 0 ) (velocity 0 0 0 ) ) + (particle (id 82638) (pos 402 245 0 ) (velocity 0 0 0 ) ) + (particle (id 82639) (pos 479 329 0 ) (velocity 0 0 0 ) ) + (particle (id 82640) (pos 520 282 0 ) (velocity 0 0 0 ) ) + (particle (id 82641) (pos 584 329 0 ) (velocity 0 0 0 ) ) + (particle (id 82642) (pos 536 377 0 ) (velocity 0 0 0 ) ) + (particle (id 82643) (pos 599 349 0 ) (velocity 0 0 0 ) ) + (particle (id 82752) (pos 110 466 0 ) (velocity 0 0 0 ) ) + (particle (id 82753) (pos 144 495 0 ) (velocity 0 0 0 ) ) + (particle (id 82754) (pos 650 494 0 ) (velocity 0 0 0 ) ) + (particle (id 82755) (pos 677 470 0 ) (velocity 0 0 0 ) ) + (particle (id 82756) (pos 350 220 0 ) (velocity 0 0 0 ) ) + (particle (id 82757) (pos 462 226 0 ) (velocity 0 0 0 ) ) + (particle (id 82758) (pos 427 185 0 ) (velocity 0 0 0 ) ) + (particle (id 82759) (pos 387 184 0 ) (velocity 0 0 0 ) ) + (particle (id 82760) (pos 423 116 0 ) (velocity 0 0 0 ) ) + (particle (id 82761) (pos 389 117 0 ) (velocity 0 0 0 ) ) + (particle (id 82762) (pos 390 54 0 ) (velocity 0 0 0 ) ) + (particle (id 82763) (pos 420 49 0 ) (velocity 0 0 0 ) ) + (particle (id 82861) (pos 295 53 0 ) (velocity 0 0 0 ) ) + (particle (id 82862) (pos 515 55 0 ) (velocity 0 0 0 ) ) + (particle (id 82863) (pos 514 20 0 ) (velocity 0 0 0 ) ) + (particle (id 82864) (pos 422 19 0 ) (velocity 0 0 0 ) ) + (particle (id 82865) (pos 388 21 0 ) (velocity 0 0 0 ) ) + (particle (id 82866) (pos 298 22 0 ) (velocity 0 0 0 ) ) + (particle (id 82867) (pos 402 0 0 ) (velocity 0 0 0 ) ) + (particle (id 83160) (pos 27 365 0 ) (velocity 0 0 0 ) ) + (particle (id 83161) (pos 1 264 0 ) (velocity 0 0 0 ) ) + (particle (id 83162) (pos 797 221 0 ) (velocity 0 0 0 ) ) + (particle (id 83163) (pos 799 331 0 ) (velocity 0 0 0 ) ) + (particle (id 83288) (pos 14 489 0 ) (velocity 0 0 0 ) ) + (particle (id 83289) (pos 55 536 0 ) (velocity 0 0 0 ) ) + (particle (id 83290) (pos 113 584 0 ) (velocity 0 0 0 ) ) + (particle (id 83291) (pos 780 498 0 ) (velocity 0 0 0 ) ) + (particle (id 83292) (pos 726 549 0 ) (velocity 0 0 0 ) ) + (particle (id 83293) (pos 664 590 0 ) (velocity 0 0 0 ) ) + (particle (id 83359) (pos 215 47 0 ) (velocity 0 0 0 ) ) + (particle (id 83360) (pos 219 16 0 ) (velocity 0 0 0 ) ) + (particle (id 83361) (pos 605 24 0 ) (velocity 0 0 0 ) ) + (particle (id 83362) (pos 604 52 0 ) (velocity 0 0 0 ) ) + (particle (id 83363) (pos 129 19 0 ) (velocity 0 0 0 ) ) + (particle (id 83364) (pos 130 49 0 ) (velocity 0 0 0 ) ) + (particle (id 83365) (pos 704 26 0 ) (velocity 0 0 0 ) ) + (particle (id 83366) (pos 705 54 0 ) (velocity 0 0 0 ) ) + (particle (id 83367) (pos 677 34 0 ) (velocity 0 0 0 ) ) + (particle (id 83462) (pos 268 239 0 ) (velocity 0 0 0 ) ) + (particle (id 84865) (pos 71 49 0 ) (velocity 0 0 0 ) ) + (particle (id 84866) (pos 68 20 0 ) (velocity 0 0 0 ) ) + (particle (id 84946) (pos 743 30 0 ) (velocity 0 0 0 ) ) + (particle (id 84947) (pos 748 56 0 ) (velocity 0 0 0 ) ) + (particle (id 85289) (pos 405 84 0 ) (velocity 0 0 0 ) ) + (particle (id 85778) (pos 203 411 0 ) (velocity 0 0 0 ) ) + (particle (id 85779) (pos 157 377 0 ) (velocity 0 0 0 ) ) + (particle (id 85780) (pos 570 410 0 ) (velocity 0 0 0 ) ) + (particle (id 85977) (pos 173 494 0 ) (velocity 0 0 0 ) ) + (particle (id 85978) (pos 102 430 0 ) (velocity 0 0 0 ) ) + (particle (id 85979) (pos 601 485 0 ) (velocity 0 0 0 ) ) + (particle (id 85980) (pos 688 413 0 ) (velocity 0 0 0 ) ) + (particle (id 86559) (pos 595 577 0 ) (velocity 0 0 0 ) ) + (particle (id 86560) (pos 180 579 0 ) (velocity 0 0 0 ) ) + (particle (id 86656) (pos 62 327 0 ) (velocity 0 0 0 ) ) + (particle (id 87145) (pos 55 418 0 ) (velocity 0 0 0 ) ) + (particle (id 87338) (pos 459 257 0 ) (velocity 0 0 0 ) ) + (particle (id 87339) (pos 356 248 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 82581)(second 82582)) + (spring (first 82582)(second 82583)) + (spring (first 82583)(second 82584)) + (spring (first 82584)(second 82585)) + (spring (first 82585)(second 82586)) + (spring (first 82586)(second 82587)) + (spring (first 82587)(second 82588)) + (spring (first 82588)(second 82589)) + (spring (first 82589)(second 82581)) + (spring (first 82581)(second 82588)) + (spring (first 82588)(second 82582)) + (spring (first 82582)(second 82587)) + (spring (first 82587)(second 82583)) + (spring (first 82583)(second 82586)) + (spring (first 82586)(second 82584)) + (spring (first 82590)(second 82591)) + (spring (first 82591)(second 82592)) + (spring (first 82592)(second 82593)) + (spring (first 82593)(second 82594)) + (spring (first 82594)(second 82595)) + (spring (first 82595)(second 82596)) + (spring (first 82596)(second 82597)) + (spring (first 82597)(second 82598)) + (spring (first 82598)(second 82590)) + (spring (first 82590)(second 82597)) + (spring (first 82597)(second 82591)) + (spring (first 82591)(second 82596)) + (spring (first 82596)(second 82592)) + (spring (first 82592)(second 82595)) + (spring (first 82595)(second 82593)) + (spring (first 82587)(second 82599)) + (spring (first 82599)(second 82600)) + (spring (first 82600)(second 82601)) + (spring (first 82601)(second 82602)) + (spring (first 82602)(second 82603)) + (spring (first 82603)(second 82604)) + (spring (first 82604)(second 82605)) + (spring (first 82605)(second 82596)) + (spring (first 82597)(second 82605)) + (spring (first 82605)(second 82595)) + (spring (first 82588)(second 82599)) + (spring (first 82599)(second 82586)) + (spring (first 82599)(second 82633)) + (spring (first 82633)(second 82600)) + (spring (first 82599)(second 82600)) + (spring (first 82600)(second 82634)) + (spring (first 82634)(second 82599)) + (spring (first 82634)(second 82635)) + (spring (first 82635)(second 82601)) + (spring (first 82601)(second 82636)) + (spring (first 82636)(second 82633)) + (spring (first 82636)(second 82637)) + (spring (first 82637)(second 82602)) + (spring (first 82602)(second 82638)) + (spring (first 82638)(second 82635)) + (spring (first 82637)(second 82639)) + (spring (first 82639)(second 82603)) + (spring (first 82603)(second 82640)) + (spring (first 82640)(second 82638)) + (spring (first 82640)(second 82641)) + (spring (first 82641)(second 82604)) + (spring (first 82604)(second 82642)) + (spring (first 82642)(second 82639)) + (spring (first 82642)(second 82605)) + (spring (first 82605)(second 82643)) + (spring (first 82643)(second 82641)) + (spring (first 82641)(second 82605)) + (spring (first 82633)(second 82601)) + (spring (first 82601)(second 82638)) + (spring (first 82638)(second 82603)) + (spring (first 82603)(second 82642)) + (spring (first 82634)(second 82601)) + (spring (first 82603)(second 82641)) + (spring (first 82603)(second 82637)) + (spring (first 82637)(second 82601)) + (spring (first 82600)(second 82636)) + (spring (first 82636)(second 82602)) + (spring (first 82602)(second 82639)) + (spring (first 82639)(second 82604)) + (spring (first 82586)(second 82752)) + (spring (first 82752)(second 82753)) + (spring (first 82753)(second 82588)) + (spring (first 82753)(second 82587)) + (spring (first 82587)(second 82752)) + (spring (first 82752)(second 82599)) + (spring (first 82599)(second 82753)) + (spring (first 82754)(second 82755)) + (spring (first 82755)(second 82595)) + (spring (first 82754)(second 82597)) + (spring (first 82754)(second 82596)) + (spring (first 82596)(second 82755)) + (spring (first 82755)(second 82605)) + (spring (first 82754)(second 82605)) + (spring (first 82635)(second 82756)) + (spring (first 82756)(second 82757)) + (spring (first 82757)(second 82640)) + (spring (first 82757)(second 82638)) + (spring (first 82638)(second 82756)) + (spring (first 82757)(second 82758)) + (spring (first 82758)(second 82759)) + (spring (first 82759)(second 82756)) + (spring (first 82759)(second 82757)) + (spring (first 82758)(second 82756)) + (spring (first 82758)(second 82760)) + (spring (first 82760)(second 82761)) + (spring (first 82761)(second 82759)) + (spring (first 82761)(second 82762)) + (spring (first 82762)(second 82763)) + (spring (first 82763)(second 82760)) + (spring (first 82762)(second 82760)) + (spring (first 82763)(second 82761)) + (spring (first 82761)(second 82758)) + (spring (first 82760)(second 82756)) + (spring (first 82757)(second 82761)) + (spring (first 82760)(second 82759)) + (spring (first 82762)(second 82861)) + (spring (first 82763)(second 82862)) + (spring (first 82862)(second 82863)) + (spring (first 82863)(second 82864)) + (spring (first 82864)(second 82763)) + (spring (first 82864)(second 82865)) + (spring (first 82865)(second 82762)) + (spring (first 82865)(second 82763)) + (spring (first 82864)(second 82762)) + (spring (first 82865)(second 82866)) + (spring (first 82866)(second 82861)) + (spring (first 82861)(second 82865)) + (spring (first 82862)(second 82864)) + (spring (first 82864)(second 82867)) + (spring (first 82867)(second 82865)) + (spring (first 82866)(second 82867)) + (spring (first 82867)(second 82863)) + (spring (first 82863)(second 82763)) + (spring (first 82866)(second 82762)) + (spring (first 82586)(second 83160)) + (spring (first 83160)(second 83161)) + (spring (first 83161)(second 82585)) + (spring (first 82585)(second 83160)) + (spring (first 82595)(second 83162)) + (spring (first 83162)(second 83163)) + (spring (first 83163)(second 82594)) + (spring (first 83163)(second 82594)) + (spring (first 82594)(second 82595)) + (spring (first 82595)(second 83163)) + (spring (first 82594)(second 83163)) + (spring (first 82583)(second 83288)) + (spring (first 83288)(second 82584)) + (spring (first 82583)(second 83289)) + (spring (first 83289)(second 82582)) + (spring (first 82582)(second 83290)) + (spring (first 83290)(second 82581)) + (spring (first 83290)(second 82588)) + (spring (first 82587)(second 83289)) + (spring (first 83288)(second 82586)) + (spring (first 82583)(second 82752)) + (spring (first 82582)(second 82753)) + (spring (first 82593)(second 83291)) + (spring (first 83291)(second 82592)) + (spring (first 82592)(second 83292)) + (spring (first 83292)(second 82591)) + (spring (first 82591)(second 83293)) + (spring (first 83293)(second 82590)) + (spring (first 83293)(second 82597)) + (spring (first 82596)(second 83292)) + (spring (first 83291)(second 82595)) + (spring (first 82592)(second 82755)) + (spring (first 82591)(second 82754)) + (spring (first 82861)(second 83359)) + (spring (first 83359)(second 83360)) + (spring (first 83360)(second 82866)) + (spring (first 82866)(second 83359)) + (spring (first 83360)(second 82861)) + (spring (first 82863)(second 83361)) + (spring (first 83361)(second 83362)) + (spring (first 83362)(second 82862)) + (spring (first 82862)(second 83361)) + (spring (first 82863)(second 83362)) + (spring (first 83360)(second 83363)) + (spring (first 83363)(second 83364)) + (spring (first 83364)(second 83359)) + (spring (first 83360)(second 83364)) + (spring (first 83363)(second 83359)) + (spring (first 83361)(second 83365)) + (spring (first 83365)(second 83366)) + (spring (first 83366)(second 83362)) + (spring (first 83361)(second 83366)) + (spring (first 83367)(second 83362)) + (spring (first 83365)(second 83367)) + (spring (first 83367)(second 83366)) + (spring (first 83367)(second 83361)) + (spring (first 83360)(second 82867)) + (spring (first 82867)(second 82762)) + (spring (first 82867)(second 82763)) + (spring (first 82867)(second 83361)) + (spring (first 82867)(second 83365)) + (spring (first 83363)(second 82867)) + (spring (first 82760)(second 82863)) + (spring (first 82761)(second 82866)) + (spring (first 83364)(second 84865)) + (spring (first 84865)(second 84866)) + (spring (first 84866)(second 83363)) + (spring (first 84865)(second 83363)) + (spring (first 84866)(second 83364)) + (spring (first 83365)(second 84946)) + (spring (first 84946)(second 84947)) + (spring (first 84947)(second 83366)) + (spring (first 83365)(second 84947)) + (spring (first 84946)(second 83366)) + (spring (first 82763)(second 85289)) + (spring (first 85289)(second 82762)) + (spring (first 85289)(second 82861)) + (spring (first 85289)(second 82862)) + (spring (first 85289)(second 83362)) + (spring (first 85289)(second 83359)) + (spring (first 85289)(second 83364)) + (spring (first 85289)(second 83366)) + (spring (first 85289)(second 84947)) + (spring (first 85289)(second 84865)) + (spring (first 82599)(second 85778)) + (spring (first 85778)(second 82633)) + (spring (first 82599)(second 85779)) + (spring (first 85779)(second 82634)) + (spring (first 82642)(second 85780)) + (spring (first 85780)(second 82605)) + (spring (first 82599)(second 85977)) + (spring (first 85977)(second 82588)) + (spring (first 82586)(second 85978)) + (spring (first 85978)(second 82599)) + (spring (first 82605)(second 85979)) + (spring (first 85979)(second 82597)) + (spring (first 82605)(second 85980)) + (spring (first 85980)(second 82595)) + (spring (first 85978)(second 82752)) + (spring (first 82753)(second 85977)) + (spring (first 85980)(second 82755)) + (spring (first 85979)(second 82754)) + (spring (first 82584)(second 83160)) + (spring (first 82590)(second 86559)) + (spring (first 86559)(second 82597)) + (spring (first 86559)(second 82598)) + (spring (first 82588)(second 86560)) + (spring (first 86560)(second 82581)) + (spring (first 86560)(second 82589)) + (spring (first 82584)(second 86656)) + (spring (first 86656)(second 82586)) + (spring (first 85779)(second 83288)) + (spring (first 86656)(second 83288)) + (spring (first 86559)(second 82591)) + (spring (first 82590)(second 82754)) + (spring (first 83292)(second 82595)) + (spring (first 83289)(second 85978)) + (spring (first 83288)(second 82753)) + (spring (first 83160)(second 87145)) + (spring (first 87145)(second 85978)) + (spring (first 87145)(second 82584)) + (spring (first 87145)(second 82586)) + (spring (first 82757)(second 87338)) + (spring (first 87338)(second 82640)) + (spring (first 87338)(second 82638)) + (spring (first 87339)(second 82756)) + (spring (first 87339)(second 82638)) + (spring (first 87339)(second 82635)) + (spring (first 82601)(second 87339)) + (spring (first 87339)(second 82602)) + (spring (first 82602)(second 87338)) + (spring (first 87338)(second 82603)) + ) +) diff --git a/examples/landingv2.construo b/examples/landingv2.construo new file mode 100644 index 0000000..c316798 --- /dev/null +++ b/examples/landingv2.construo @@ -0,0 +1,797 @@ +;; Written by construo 0.2.0pre3 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 1308) (pos 1674.833130 -1104.565063) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1309) (pos 1638.311279 -1125.684570) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1310) (pos 1710.289917 -1127.433350) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1311) (pos 1710.333130 -1084.421021) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1312) (pos 1639.330322 -1083.696899) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1313) (pos 1736.767944 -1108.068359) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1314) (pos 1565.331909 -1123.912354) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1315) (pos 1567.326782 -1082.950073) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1316) (pos 1674.562622 -1074.548706) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1317) (pos 1674.960083 -1140.577637) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1318) (pos 1765.297607 -1127.763916) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1319) (pos 1770.290283 -1086.872925) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1320) (pos 1729.594360 -1073.883423) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1321) (pos 1731.944458 -1141.961426) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1322) (pos 1783.729492 -1110.204834) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1323) (pos 1528.827515 -1103.021606) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1324) (pos 1490.323975 -1082.079712) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1325) (pos 1489.231689 -1127.067139) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1326) (pos 1817.283936 -1129.019531) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1327) (pos 1816.082764 -1095.982788) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1328) (pos 1858.046265 -1097.997681) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1329) (pos 1856.128784 -1135.960693) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1330) (pos 1832.594482 -1116.388184) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1331) (pos 1815.543945 -1076.963501) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1332) (pos 1818.727051 -1152.061279) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1333) (pos 1623.829346 -1145.339355) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1334) (pos 1630.818115 -1063.484009) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1335) (pos 1858.434937 -1082.001343) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1336) (pos 1677.184937 -1172.640137) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1337) (pos 1673.265991 -1045.508179) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1338) (pos 1760.215088 -1048.616333) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1339) (pos 1752.237549 -1171.460693) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1340) (pos 1453.310913 -1082.181519) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1341) (pos 1454.510132 -1115.220947) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1342) (pos 1412.716797 -1106.204956) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1343) (pos 1412.250732 -1084.187866) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1344) (pos 1374.630371 -1109.282227) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1345) (pos 1412.686523 -1066.192993) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1346) (pos 1411.255127 -1125.173828) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1347) (pos 1459.046753 -1134.337158) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1348) (pos 1450.772095 -1063.115601) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1349) (pos 1533.024536 -1136.134277) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1350) (pos 1529.701538 -1067.032593) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1351) (pos 1527.589722 -1154.008789) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1352) (pos 1579.501099 -1158.268311) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1353) (pos 1539.077515 -1175.292969) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1354) (pos 1497.355713 -1163.275635) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1355) (pos 1466.582642 -1153.525879) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1356) (pos 1887.749634 -1110.718994) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1357) (pos 1885.570190 -1088.503296) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1358) (pos 1384.082764 -1076.339233) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1722) (pos 1816.541504 -1029.132812) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1723) (pos 1816.761719 -991.120728) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1724) (pos 1776.749512 -990.941040) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1725) (pos 1776.550049 -1029.954346) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1726) (pos 1815.879639 -948.129578) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1727) (pos 1816.099854 -910.117065) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1728) (pos 1776.087646 -909.937866) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1729) (pos 1775.887939 -948.950378) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1730) (pos 1737.537720 -1029.754150) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1731) (pos 1737.757935 -991.741821) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1732) (pos 1697.746460 -991.562378) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1733) (pos 1697.546509 -1030.574951) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1734) (pos 1734.855591 -947.792175) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1735) (pos 1735.075806 -909.779419) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1736) (pos 1695.064087 -909.600220) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1737) (pos 1694.864380 -948.612732) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1738) (pos 1658.554565 -1031.374634) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1739) (pos 1658.774780 -993.362671) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1740) (pos 1618.762695 -993.183472) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1741) (pos 1618.563232 -1032.195923) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1742) (pos 1657.892700 -950.371521) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1743) (pos 1658.112915 -912.359009) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1744) (pos 1618.100830 -912.179810) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1745) (pos 1617.901123 -951.192078) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1746) (pos 1579.550903 -1031.995972) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1747) (pos 1579.770874 -993.983276) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1748) (pos 1539.759155 -993.804810) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1749) (pos 1539.559448 -1032.816772) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1750) (pos 1576.868774 -950.033875) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1751) (pos 1577.088989 -912.021606) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1752) (pos 1537.076782 -911.842163) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1753) (pos 1536.877319 -950.854675) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1754) (pos 1817.073486 -860.086182) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1755) (pos 1817.293457 -822.073914) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1756) (pos 1777.281494 -821.894470) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1757) (pos 1777.082031 -860.906982) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1758) (pos 1816.411621 -779.083069) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1759) (pos 1816.631348 -741.070374) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1760) (pos 1776.619385 -740.891174) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1761) (pos 1776.419922 -779.903442) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1762) (pos 1738.069946 -860.707275) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1763) (pos 1738.289917 -822.695007) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1764) (pos 1698.278198 -822.515808) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1765) (pos 1698.078247 -861.527832) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1766) (pos 1735.387573 -778.745667) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1767) (pos 1735.607788 -740.732483) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1768) (pos 1695.595825 -740.553284) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1769) (pos 1695.396362 -779.566040) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1770) (pos 1659.086548 -862.328125) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1771) (pos 1659.306763 -824.315857) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1772) (pos 1619.294678 -824.136414) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1773) (pos 1619.094971 -863.148926) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1774) (pos 1658.424438 -781.324341) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1775) (pos 1658.644653 -743.312378) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1776) (pos 1618.632812 -743.133179) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1777) (pos 1618.433105 -782.145386) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1778) (pos 1580.082642 -862.949219) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1779) (pos 1580.302856 -824.937195) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1780) (pos 1540.290894 -824.757751) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1781) (pos 1540.091187 -863.769775) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1782) (pos 1577.400513 -780.987183) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1783) (pos 1577.620483 -742.974731) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1784) (pos 1537.608765 -742.795532) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1785) (pos 1537.409058 -781.807495) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1850) (pos 1812.973389 -697.468140) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1851) (pos 1813.193848 -659.455627) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1852) (pos 1773.181641 -659.275940) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1853) (pos 1772.982178 -698.289551) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1854) (pos 1812.311523 -616.463989) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1855) (pos 1812.531738 -578.452026) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1856) (pos 1772.519775 -578.272827) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1857) (pos 1772.320068 -617.284790) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1858) (pos 1733.969849 -698.089233) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1859) (pos 1734.190063 -660.076721) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1860) (pos 1694.178345 -659.897522) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1861) (pos 1693.978638 -698.910400) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1862) (pos 1731.287964 -616.126587) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1863) (pos 1731.508179 -578.114136) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1864) (pos 1691.495972 -577.935181) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1865) (pos 1691.296509 -616.947144) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1866) (pos 1654.986694 -699.710205) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1867) (pos 1655.206909 -661.697388) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1868) (pos 1615.194824 -661.518188) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1869) (pos 1614.995117 -700.531494) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1870) (pos 1654.324829 -618.705933) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1871) (pos 1654.545044 -580.693726) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1872) (pos 1614.532715 -580.514526) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1873) (pos 1614.333008 -619.526489) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1874) (pos 1575.982544 -700.331543) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1875) (pos 1576.202515 -662.318237) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1876) (pos 1536.190796 -662.139526) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1877) (pos 1535.991089 -701.152344) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1878) (pos 1573.300415 -618.368530) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1879) (pos 1573.520630 -580.356323) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1880) (pos 1533.508667 -580.176880) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1881) (pos 1533.308960 -619.189331) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1882) (pos 1813.505615 -528.421082) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1883) (pos 1813.725586 -490.408569) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1884) (pos 1773.713623 -490.229156) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1885) (pos 1773.514160 -529.241882) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1886) (pos 1812.843506 -447.417877) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1887) (pos 1813.063477 -409.404877) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1888) (pos 1773.051514 -409.225677) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1889) (pos 1772.852051 -448.238068) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1890) (pos 1734.501831 -529.042175) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1891) (pos 1734.722046 -491.029663) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1892) (pos 1694.710083 -490.850464) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1893) (pos 1694.510376 -529.862732) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1894) (pos 1731.819702 -447.080353) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1895) (pos 1732.039673 -409.067108) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1896) (pos 1692.027954 -408.887787) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1897) (pos 1691.828247 -447.900665) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1898) (pos 1655.518677 -530.663025) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1899) (pos 1655.738647 -492.650513) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1900) (pos 1615.726562 -492.471069) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1901) (pos 1615.527100 -531.483826) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1902) (pos 1654.856567 -449.659088) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1903) (pos 1655.076538 -411.646820) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1904) (pos 1615.064697 -411.467743) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1905) (pos 1614.864990 -450.480133) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1906) (pos 1576.514282 -531.284119) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1907) (pos 1576.734497 -493.271851) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1908) (pos 1536.722534 -493.092407) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1909) (pos 1536.522827 -532.104675) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1910) (pos 1573.832153 -449.321808) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1911) (pos 1574.052368 -411.309174) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1912) (pos 1534.040405 -411.129974) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + (particle (id 1913) (pos 1533.840698 -450.142120) (velocity -317.621216 -64.261475) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 1309) (second 1310) (length 71.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1310) (second 1311) (length 43.012352) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1311) (second 1312) (length 71.006500) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1312) (second 1309) (length 42.000034) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1309) (second 1308) (length 42.188614) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1312) (second 1308) (length 41.181667) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1310) (second 1308) (length 42.191730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1308) (second 1311) (length 40.817062) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1311) (second 1313) (length 35.468239) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1313) (second 1310) (length 32.803791) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1309) (second 1314) (length 73.000885) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1314) (second 1315) (length 41.010826) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1315) (second 1312) (length 72.007416) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1312) (second 1314) (length 84.220238) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1309) (second 1315) (length 82.855515) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1312) (second 1316) (length 36.400608) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1316) (second 1311) (length 37.107841) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1309) (second 1317) (length 39.559299) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1317) (second 1310) (length 37.695747) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1317) (second 1308) (length 36.012798) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1316) (second 1308) (length 30.017576) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1310) (second 1318) (length 55.008682) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1318) (second 1313) (length 34.667805) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1311) (second 1319) (length 60.007267) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1319) (second 1313) (length 39.660984) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1318) (second 1319) (length 41.194660) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1316) (second 1320) (length 55.035759) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1320) (second 1319) (length 42.718678) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1320) (second 1311) (length 21.955317) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1320) (second 1313) (length 34.929504) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1317) (second 1321) (length 57.001175) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1321) (second 1318) (length 36.249165) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1321) (second 1310) (length 26.076506) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1321) (second 1313) (length 34.234573) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1318) (second 1322) (length 25.456940) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1322) (second 1319) (length 26.925644) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1322) (second 1313) (length 47.010120) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1313) (second 1308) (length 62.033817) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1314) (second 1323) (length 42.059410) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1323) (second 1315) (length 43.417278) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1323) (second 1308) (length 146.013779) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1315) (second 1324) (length 77.007729) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1324) (second 1325) (length 45.000687) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1325) (second 1314) (length 76.165581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1323) (second 1325) (length 46.325123) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1323) (second 1324) (length 43.830189) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1318) (second 1326) (length 52.001488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1326) (second 1322) (length 38.469383) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1322) (second 1327) (length 35.341206) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1327) (second 1326) (length 33.058571) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1327) (second 1319) (length 46.689838) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1327) (second 1328) (length 42.011845) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1328) (second 1329) (length 38.011406) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1329) (second 1326) (length 39.460133) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1326) (second 1330) (length 19.848520) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1330) (second 1327) (length 26.249134) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1330) (second 1328) (length 31.400698) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1330) (second 1329) (length 30.609581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1319) (second 1331) (length 46.325916) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1331) (second 1328) (length 47.422398) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1331) (second 1327) (length 19.026918) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1318) (second 1332) (length 58.694695) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1332) (second 1326) (length 23.086895) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1332) (second 1329) (length 40.720001) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1321) (second 1332) (length 87.368332) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1320) (second 1331) (length 86.004753) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1314) (second 1333) (length 62.298206) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1333) (second 1317) (length 51.351982) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1333) (second 1309) (length 24.413868) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1315) (second 1334) (length 66.408409) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1334) (second 1316) (length 45.122162) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1334) (second 1312) (length 21.932137) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1331) (second 1335) (length 43.185841) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1335) (second 1328) (length 16.001059) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1333) (second 1336) (length 59.934563) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1336) (second 1317) (length 32.139599) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1336) (second 1321) (length 62.767735) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1334) (second 1337) (length 46.097210) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1337) (second 1316) (length 29.069460) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1337) (second 1320) (length 63.071701) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1337) (second 1338) (length 87.004631) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1338) (second 1331) (length 62.167873) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1338) (second 1320) (length 39.699558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1336) (second 1339) (length 75.061882) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1339) (second 1332) (length 69.261757) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1339) (second 1321) (length 35.805256) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1324) (second 1340) (length 37.013203) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1340) (second 1341) (length 33.061184) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1341) (second 1325) (length 36.686768) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1341) (second 1324) (length 48.795212) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1340) (second 1325) (length 57.489311) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1341) (second 1342) (length 42.754776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1342) (second 1343) (length 22.022022) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1343) (second 1340) (length 41.109169) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1340) (second 1342) (length 47.169987) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1341) (second 1343) (length 52.430038) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1344) (second 1342) (length 38.210541) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1344) (second 1343) (length 45.221882) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1345) (second 1343) (length 18.000149) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1345) (second 1340) (length 43.657463) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1342) (second 1346) (length 19.025105) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1346) (second 1344) (length 39.923874) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1346) (second 1341) (length 44.385303) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1346) (second 1347) (length 48.662163) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1347) (second 1341) (length 19.647148) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1347) (second 1325) (length 31.048084) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1345) (second 1348) (length 38.209698) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1348) (second 1340) (length 19.234209) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1348) (second 1324) (length 43.863297) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1325) (second 1349) (length 44.721657) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1349) (second 1323) (length 33.377598) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1349) (second 1314) (length 34.541885) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1349) (second 1333) (length 91.270187) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1323) (second 1350) (length 35.999626) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1350) (second 1324) (length 42.154575) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1350) (second 1315) (length 40.853706) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1350) (second 1334) (length 101.178825) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1347) (second 1349) (length 73.999611) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1348) (second 1350) (length 79.026573) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1314) (second 1317) (length 110.887634) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1315) (second 1316) (length 107.564438) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1347) (second 1351) (length 71.309967) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1349) (second 1351) (length 18.682489) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1352) (second 1351) (length 52.085838) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1352) (second 1333) (length 46.175224) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1352) (second 1349) (length 51.478016) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1351) (second 1333) (length 96.629311) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1352) (second 1353) (length 43.862343) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1353) (second 1351) (length 24.186478) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1353) (second 1354) (length 43.418026) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1354) (second 1351) (length 31.622297) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1354) (second 1355) (length 32.280640) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1355) (second 1347) (length 20.615446) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1355) (second 1351) (length 61.008991) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1354) (second 1347) (length 48.010540) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1329) (second 1356) (length 40.460121) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1356) (second 1328) (length 32.312878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1356) (second 1357) (length 22.322348) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1357) (second 1335) (length 27.903358) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1358) (second 1344) (length 34.272270) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1358) (second 1345) (length 30.349979) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1343) (second 1358) (length 29.240990) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1334) (second 1338) (length 130.248322) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1337) (second 1309) (length 87.464767) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1722) (second 1723) (length 38.012722) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1723) (second 1724) (length 40.012611) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1724) (second 1725) (length 39.013817) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1725) (second 1722) (length 39.999893) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1722) (second 1724) (length 55.154457) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1723) (second 1725) (length 55.901951) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1726) (second 1727) (length 38.013149) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1727) (second 1728) (length 40.012608) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1728) (second 1729) (length 39.013023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1729) (second 1726) (length 40.000122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1726) (second 1728) (length 55.154415) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1727) (second 1729) (length 55.901917) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1730) (second 1731) (length 38.012966) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1731) (second 1732) (length 40.011875) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1732) (second 1733) (length 39.013084) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1733) (second 1730) (length 39.999634) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1730) (second 1732) (length 55.153927) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1731) (second 1733) (length 55.901436) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1734) (second 1735) (length 38.013393) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1735) (second 1736) (length 40.012119) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1736) (second 1737) (length 39.013023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1737) (second 1734) (length 39.999630) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1734) (second 1736) (length 55.154232) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1735) (second 1737) (length 55.901566) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1723) (second 1726) (length 43.000198) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1729) (second 1734) (length 41.048691) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1734) (second 1731) (length 44.045376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1731) (second 1724) (length 38.999798) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1724) (second 1729) (length 41.999500) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1728) (second 1735) (length 41.012146) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1737) (second 1732) (length 43.046238) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1730) (second 1725) (length 39.012844) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1725) (second 1731) (length 54.452045) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1731) (second 1729) (length 57.314960) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1729) (second 1735) (length 56.568493) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1728) (second 1734) (length 55.973488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1734) (second 1724) (length 60.140877) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1723) (second 1729) (length 58.728222) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1726) (second 1724) (length 57.999897) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1724) (second 1730) (length 55.172657) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1732) (second 1734) (length 57.383953) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1731) (second 1737) (length 60.827423) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1738) (second 1739) (length 38.012600) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1739) (second 1740) (length 40.012486) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1740) (second 1741) (length 39.012962) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1741) (second 1738) (length 39.999763) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1738) (second 1740) (length 55.153946) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1739) (second 1741) (length 55.901611) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1742) (second 1743) (length 38.013149) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1743) (second 1744) (length 40.012486) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1744) (second 1745) (length 39.012779) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1745) (second 1742) (length 39.999996) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1742) (second 1744) (length 55.154327) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1743) (second 1745) (length 55.901657) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1746) (second 1747) (length 38.013332) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1747) (second 1748) (length 40.012115) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1748) (second 1749) (length 39.012474) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1749) (second 1746) (length 39.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1746) (second 1748) (length 55.153858) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1747) (second 1749) (length 55.901691) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1750) (second 1751) (length 38.012905) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1751) (second 1752) (length 40.012608) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1752) (second 1753) (length 39.013023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1753) (second 1750) (length 39.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1750) (second 1752) (length 55.154415) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1751) (second 1753) (length 55.901569) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1739) (second 1742) (length 43.000198) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1745) (second 1750) (length 41.048691) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1750) (second 1747) (length 44.045113) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1747) (second 1740) (length 39.000023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1740) (second 1745) (length 42.000233) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1744) (second 1751) (length 41.012146) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1753) (second 1748) (length 43.046707) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1746) (second 1741) (length 39.012840) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1741) (second 1747) (length 54.452305) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1747) (second 1745) (length 57.314941) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1745) (second 1751) (length 56.568153) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1744) (second 1750) (length 55.973320) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1750) (second 1740) (length 60.141403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1739) (second 1745) (length 58.728313) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1742) (second 1740) (length 58.000175) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1740) (second 1746) (length 55.172230) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1748) (second 1750) (length 57.384830) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1747) (second 1753) (length 60.827076) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1742) (second 1737) (length 37.013489) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1732) (second 1739) (length 39.013241) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1738) (second 1733) (length 39.000141) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1736) (second 1743) (length 37.054016) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1743) (second 1737) (length 51.623665) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1739) (second 1733) (length 53.740124) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1732) (second 1738) (length 55.866093) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1739) (second 1737) (length 57.489269) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1732) (second 1742) (length 57.314999) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1742) (second 1736) (length 55.172558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1754) (second 1755) (length 38.012905) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1755) (second 1756) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1756) (second 1757) (length 39.013023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1757) (second 1754) (length 39.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1754) (second 1756) (length 55.154415) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1755) (second 1757) (length 55.901394) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1758) (second 1759) (length 38.013329) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1759) (second 1760) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1760) (second 1761) (length 39.012779) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1761) (second 1758) (length 40.000114) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1758) (second 1760) (length 55.154716) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1759) (second 1761) (length 55.901394) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1762) (second 1763) (length 38.012905) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1763) (second 1764) (length 40.012119) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1764) (second 1765) (length 39.012535) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1765) (second 1762) (length 40.000118) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1762) (second 1764) (length 55.154068) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1763) (second 1765) (length 55.901402) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1766) (second 1767) (length 38.013821) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1767) (second 1768) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1768) (second 1769) (length 39.013268) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1769) (second 1766) (length 39.999626) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1766) (second 1768) (length 55.154705) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1767) (second 1769) (length 55.901733) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1755) (second 1758) (length 42.999889) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1761) (second 1766) (length 41.048679) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1766) (second 1763) (length 44.045071) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1763) (second 1756) (length 38.999794) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1756) (second 1761) (length 41.999866) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1760) (second 1767) (length 41.011902) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1769) (second 1764) (length 43.046341) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1762) (second 1757) (length 39.012596) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1757) (second 1763) (length 54.451660) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1763) (second 1761) (length 57.315052) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1761) (second 1767) (length 56.568493) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1760) (second 1766) (length 55.973431) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1766) (second 1756) (length 60.140835) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1755) (second 1761) (length 58.728142) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1758) (second 1756) (length 57.999851) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1756) (second 1762) (length 55.172268) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1764) (second 1766) (length 57.384068) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1763) (second 1769) (length 60.827335) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1770) (second 1771) (length 38.012905) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1771) (second 1772) (length 40.012486) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1772) (second 1773) (length 39.013023) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1773) (second 1770) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1770) (second 1772) (length 55.154327) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1771) (second 1773) (length 55.901657) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1774) (second 1775) (length 38.012600) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1775) (second 1776) (length 40.012241) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1776) (second 1777) (length 39.012718) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1777) (second 1774) (length 39.999760) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1774) (second 1776) (length 55.153770) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1775) (second 1777) (length 55.901440) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1778) (second 1779) (length 38.012661) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1779) (second 1780) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1780) (second 1781) (length 39.012535) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1781) (second 1778) (length 39.999874) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1778) (second 1780) (length 55.154068) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1779) (second 1781) (length 55.901230) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1782) (second 1783) (length 38.013088) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1783) (second 1784) (length 40.012119) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1784) (second 1785) (length 39.012474) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1785) (second 1782) (length 39.999866) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1782) (second 1784) (length 55.154198) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1783) (second 1785) (length 55.901184) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1771) (second 1774) (length 43.000568) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1777) (second 1782) (length 41.048935) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1782) (second 1779) (length 44.045738) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1779) (second 1772) (length 39.000042) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1772) (second 1777) (length 41.999866) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1776) (second 1783) (length 41.012634) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1785) (second 1780) (length 43.046829) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1778) (second 1773) (length 39.012840) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1773) (second 1779) (length 54.451488) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1779) (second 1777) (length 57.315399) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1777) (second 1783) (length 56.568634) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1776) (second 1782) (length 55.973461) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1782) (second 1772) (length 60.141312) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1771) (second 1777) (length 58.728226) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1774) (second 1772) (length 58.000103) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1772) (second 1778) (length 55.172615) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1780) (second 1782) (length 57.384548) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1779) (second 1785) (length 60.828030) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1774) (second 1769) (length 37.013710) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1764) (second 1771) (length 39.012985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1770) (second 1765) (length 38.999912) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1768) (second 1775) (length 37.054039) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1775) (second 1769) (length 51.623795) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1771) (second 1765) (length 53.739735) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1764) (second 1770) (length 55.865967) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1771) (second 1769) (length 57.489174) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1764) (second 1774) (length 57.315437) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1774) (second 1768) (length 55.172375) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1727) (second 1754) (length 50.040356) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1757) (second 1735) (length 64.444069) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1728) (second 1762) (length 62.201260) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1762) (second 1736) (length 65.115463) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1735) (second 1765) (length 60.803249) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1765) (second 1743) (length 64.660934) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1752) (second 1781) (length 48.166805) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1778) (second 1751) (length 49.163616) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1744) (second 1773) (length 49.040962) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1743) (second 1770) (length 50.040356) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1736) (second 1765) (length 48.166790) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1728) (second 1757) (length 49.040966) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1727) (second 1757) (length 62.801456) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1754) (second 1728) (length 64.537041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1735) (second 1762) (length 49.163403) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1736) (second 1770) (length 59.405674) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1770) (second 1744) (length 64.536964) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1744) (second 1778) (length 62.201557) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1778) (second 1752) (length 65.115463) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1781) (second 1751) (length 60.803589) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1751) (second 1773) (length 64.444092) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1773) (second 1743) (length 62.801529) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1850) (second 1851) (length 38.013153) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1851) (second 1852) (length 40.012611) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1852) (second 1853) (length 39.014122) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1853) (second 1850) (length 39.999645) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1850) (second 1852) (length 55.154575) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1851) (second 1853) (length 55.902164) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1854) (second 1855) (length 38.012600) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1855) (second 1856) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1856) (second 1857) (length 39.012474) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1857) (second 1854) (length 39.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1854) (second 1856) (length 55.153858) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1855) (second 1857) (length 55.901360) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1858) (second 1859) (length 38.013149) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1859) (second 1860) (length 40.012119) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1860) (second 1861) (length 39.013390) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1861) (second 1858) (length 39.999641) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1858) (second 1860) (length 55.154064) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1859) (second 1861) (length 55.901821) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1862) (second 1863) (length 38.013088) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1863) (second 1864) (length 40.012608) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1864) (second 1865) (length 39.012474) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1865) (second 1862) (length 39.999874) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1862) (second 1864) (length 55.154202) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1863) (second 1865) (length 55.901527) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1851) (second 1854) (length 43.000690) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1857) (second 1862) (length 41.048447) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1862) (second 1859) (length 44.045845) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1859) (second 1852) (length 38.999798) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1852) (second 1857) (length 41.999989) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1856) (second 1863) (length 41.011902) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1865) (second 1860) (length 43.046951) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1858) (second 1853) (length 39.012844) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1853) (second 1859) (length 54.452259) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1859) (second 1857) (length 57.315327) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1857) (second 1863) (length 56.568104) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1856) (second 1862) (length 55.972935) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1862) (second 1852) (length 60.141056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1851) (second 1857) (length 58.728573) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1854) (second 1852) (length 58.000095) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1852) (second 1858) (length 55.172787) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1860) (second 1862) (length 57.384830) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1859) (second 1865) (length 60.827770) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1866) (second 1867) (length 38.013454) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1867) (second 1868) (length 40.012486) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1868) (second 1869) (length 39.013817) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1869) (second 1866) (length 40.000008) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1866) (second 1868) (length 55.154537) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1867) (second 1869) (length 55.902378) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1870) (second 1871) (length 38.012844) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1871) (second 1872) (length 40.012730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1872) (second 1873) (length 39.012474) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1873) (second 1870) (length 40.000240) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1870) (second 1872) (length 55.154293) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1871) (second 1873) (length 55.901623) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1874) (second 1875) (length 38.013943) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1875) (second 1876) (length 40.012119) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1876) (second 1877) (length 39.013329) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1877) (second 1874) (length 39.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1874) (second 1876) (length 55.154449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1875) (second 1877) (length 55.902115) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1878) (second 1879) (length 38.012844) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1879) (second 1880) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1880) (second 1881) (length 39.012962) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1881) (second 1878) (length 39.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1878) (second 1880) (length 55.154198) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1879) (second 1881) (length 55.901527) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1867) (second 1870) (length 43.000504) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1873) (second 1878) (length 41.048927) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1878) (second 1875) (length 44.045418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1875) (second 1868) (length 39.000515) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1868) (second 1873) (length 42.000542) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1872) (second 1879) (length 41.012390) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1881) (second 1876) (length 43.046768) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1874) (second 1869) (length 39.013084) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1869) (second 1875) (length 54.452908) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1875) (second 1873) (length 57.315514) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1873) (second 1879) (length 56.568119) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1872) (second 1878) (length 55.973461) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1878) (second 1868) (length 60.141788) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1867) (second 1873) (length 58.728703) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1870) (second 1868) (length 58.000401) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1868) (second 1874) (length 55.173176) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1876) (second 1878) (length 57.384876) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1875) (second 1881) (length 60.827293) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1870) (second 1865) (length 37.013489) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1860) (second 1867) (length 39.012978) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1866) (second 1861) (length 39.000145) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1864) (second 1871) (length 37.053753) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1871) (second 1865) (length 51.623447) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1867) (second 1861) (length 53.740631) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1860) (second 1866) (length 55.866226) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1867) (second 1865) (length 57.489510) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1860) (second 1870) (length 57.315353) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1870) (second 1864) (length 55.171986) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1882) (second 1883) (length 38.013149) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1883) (second 1884) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1884) (second 1885) (length 39.013237) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1885) (second 1882) (length 39.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1882) (second 1884) (length 55.154564) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1883) (second 1885) (length 55.901566) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1886) (second 1887) (length 38.013638) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1887) (second 1888) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1888) (second 1889) (length 39.012901) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1889) (second 1886) (length 39.999866) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1886) (second 1888) (length 55.154755) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1887) (second 1889) (length 55.901482) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1890) (second 1891) (length 38.013149) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1891) (second 1892) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1892) (second 1893) (length 39.012779) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1893) (second 1890) (length 39.999874) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1890) (second 1892) (length 55.154240) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1891) (second 1893) (length 55.901569) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1894) (second 1895) (length 38.013882) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1895) (second 1896) (length 40.012119) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1896) (second 1897) (length 39.013390) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1897) (second 1894) (length 39.999866) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1894) (second 1896) (length 55.154831) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1895) (second 1897) (length 55.901733) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1883) (second 1886) (length 42.999741) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1889) (second 1894) (length 41.048679) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1894) (second 1891) (length 44.045040) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1891) (second 1884) (length 38.999794) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1884) (second 1889) (length 41.999928) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1888) (second 1895) (length 41.012146) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1897) (second 1892) (length 43.046371) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1890) (second 1885) (length 39.012840) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1885) (second 1891) (length 54.451832) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1891) (second 1889) (length 57.315075) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1889) (second 1895) (length 56.568668) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1888) (second 1894) (length 55.973553) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1894) (second 1884) (length 60.140835) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1883) (second 1889) (length 58.728161) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1886) (second 1884) (length 57.999599) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1884) (second 1890) (length 55.172592) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1892) (second 1894) (length 57.384201) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1891) (second 1897) (length 60.827530) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1898) (second 1899) (length 38.013149) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1899) (second 1900) (length 40.012486) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1900) (second 1901) (length 39.013268) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1901) (second 1898) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1898) (second 1900) (length 55.154671) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1899) (second 1901) (length 55.901653) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1902) (second 1903) (length 38.012905) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1903) (second 1904) (length 40.012241) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1904) (second 1905) (length 39.012901) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1905) (second 1902) (length 40.000004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1902) (second 1904) (length 55.154072) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1903) (second 1905) (length 55.901653) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1906) (second 1907) (length 38.012905) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1907) (second 1908) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1908) (second 1909) (length 39.012779) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1909) (second 1906) (length 39.999874) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1906) (second 1908) (length 55.154240) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1907) (second 1909) (length 55.901402) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1910) (second 1911) (length 38.013271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1911) (second 1912) (length 40.012363) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1912) (second 1913) (length 39.012657) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1913) (second 1910) (length 39.999866) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1910) (second 1912) (length 55.154324) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1911) (second 1913) (length 55.901485) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1899) (second 1902) (length 43.000473) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1905) (second 1910) (length 41.049183) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1910) (second 1907) (length 44.045769) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1907) (second 1900) (length 39.000286) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1900) (second 1905) (length 41.999775) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1904) (second 1911) (length 41.012634) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1913) (second 1908) (length 43.046860) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1906) (second 1901) (length 39.013329) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1901) (second 1907) (length 54.452007) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1907) (second 1905) (length 57.315491) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1905) (second 1911) (length 56.568844) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1904) (second 1910) (length 55.973682) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1910) (second 1900) (length 60.141502) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1899) (second 1905) (length 58.728161) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1902) (second 1900) (length 58.000198) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1900) (second 1906) (length 55.172962) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1908) (second 1910) (length 57.384571) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1907) (second 1913) (length 60.828049) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1902) (second 1897) (length 37.013474) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1892) (second 1899) (length 39.012985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1898) (second 1893) (length 38.999912) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1896) (second 1903) (length 37.054276) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1903) (second 1897) (length 51.623924) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1899) (second 1893) (length 53.740082) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1892) (second 1898) (length 55.865967) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1899) (second 1897) (length 57.489201) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1892) (second 1902) (length 57.315201) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1902) (second 1896) (length 55.172558) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1855) (second 1882) (length 50.040421) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1885) (second 1863) (length 64.443771) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1856) (second 1890) (length 62.201458) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1890) (second 1864) (length 65.115509) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1863) (second 1893) (length 60.803253) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1893) (second 1871) (length 64.660789) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1880) (second 1909) (length 48.166607) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1906) (second 1879) (length 49.163433) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1872) (second 1901) (length 49.040783) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1871) (second 1898) (length 50.040173) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1864) (second 1893) (length 48.166866) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1856) (second 1885) (length 49.041027) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1855) (second 1885) (length 62.801350) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1882) (second 1856) (length 64.537086) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1863) (second 1890) (length 49.163189) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1864) (second 1898) (length 59.405575) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1898) (second 1872) (length 64.536980) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1872) (second 1906) (length 62.201561) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1906) (second 1880) (length 65.115166) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1909) (second 1879) (length 60.803444) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1879) (second 1901) (length 64.444275) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1901) (second 1871) (length 62.801388) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1784) (second 1877) (length 41.674599) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1877) (second 1783) (length 59.009480) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1783) (second 1869) (length 56.553440) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1869) (second 1775) (length 61.118622) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1775) (second 1861) (length 56.745274) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1861) (second 1767) (length 59.009090) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1767) (second 1858) (length 42.674694) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1760) (second 1853) (length 42.756607) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1759) (second 1850) (length 43.755405) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1850) (second 1760) (length 56.631912) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1759) (second 1853) (length 61.118317) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1853) (second 1767) (length 56.553051) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1760) (second 1858) (length 60.423416) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1858) (second 1768) (length 57.234268) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1768) (second 1861) (length 41.674274) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1866) (second 1775) (length 43.755344) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1866) (second 1768) (length 57.595646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1776) (second 1866) (length 56.631786) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1776) (second 1869) (length 42.756710) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1776) (second 1874) (length 60.423717) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1874) (second 1784) (length 57.234058) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1783) (second 1874) (length 42.674633) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1738) (second 1337) (length 20.400568) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1337) (second 1733) (length 28.505173) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1733) (second 1320) (length 53.876606) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1320) (second 1730) (length 44.838486) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1730) (second 1338) (length 29.496525) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1338) (second 1725) (length 24.801224) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1334) (second 1741) (length 33.602478) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1334) (second 1738) (length 42.430210) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1741) (second 1337) (length 56.299271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1331) (second 1725) (length 61.076874) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1722) (second 1331) (length 47.841091) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1746) (second 1315) (length 52.399902) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1746) (second 1334) (length 60.164970) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1315) (second 1741) (length 72.119049) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1350) (second 1749) (length 35.607594) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1749) (second 1315) (length 57.309448) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1350) (second 1746) (length 60.930485) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1328) (second 1357) (length 29.115458) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1319) (second 1338) (length 39.561047) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 -3757.806152 -1145.313110) (pos2 -274.947235 -1011.158569)) + )) + +;; EOF ;; diff --git a/examples/logo.construo b/examples/logo.construo new file mode 100644 index 0000000..3592714 --- /dev/null +++ b/examples/logo.construo @@ -0,0 +1,223 @@ + +(construo-scene + (particles + (particle (id 20521) (pos 160 157 0 ) (velocity 0 0 0 ) ) + (particle (id 20522) (pos 71 139 0 ) (velocity 0 0 0 ) ) + (particle (id 20523) (pos 28 189 0 ) (velocity 0 0 0 ) ) + (particle (id 20524) (pos 33 268 0 ) (velocity 0 0 0 ) ) + (particle (id 20525) (pos 102 317 0 ) (velocity 0 0 0 ) ) + (particle (id 20526) (pos 164 284 0 ) (velocity 0 0 0 ) ) + (particle (id 20527) (pos 155 255 0 ) (velocity 0 0 0 ) ) + (particle (id 20528) (pos 91 268 0 ) (velocity 0 0 0 ) ) + (particle (id 20529) (pos 62 235 0 ) (velocity 0 0 0 ) ) + (particle (id 20530) (pos 61 192 0 ) (velocity 0 0 0 ) ) + (particle (id 20531) (pos 94 168 0 ) (velocity 0 0 0 ) ) + (particle (id 20532) (pos 148 196 0 ) (velocity 0 0 0 ) ) + (particle (id 20533) (pos 200 203 0 ) (velocity 0 0 0 ) ) + (particle (id 20534) (pos 168 229 0 ) (velocity 0 0 0 ) ) + (particle (id 20535) (pos 199 310 0 ) (velocity 0 0 0 ) ) + (particle (id 20536) (pos 244 218 0 ) (velocity 0 0 0 ) ) + (particle (id 20537) (pos 270 258 0 ) (velocity 0 0 0 ) ) + (particle (id 20538) (pos 261 293 0 ) (velocity 0 0 0 ) ) + (particle (id 20539) (pos 195 238 0 ) (velocity 0 0 0 ) ) + (particle (id 20540) (pos 229 244 0 ) (velocity 0 0 0 ) ) + (particle (id 20541) (pos 233 272 0 ) (velocity 0 0 0 ) ) + (particle (id 20542) (pos 297 212 0 ) (velocity 0 0 0 ) ) + (particle (id 20543) (pos 290 304 0 ) (velocity 0 0 0 ) ) + (particle (id 20544) (pos 320 305 0 ) (velocity 0 0 0 ) ) + (particle (id 20545) (pos 323 244 0 ) (velocity 0 0 0 ) ) + (particle (id 20546) (pos 356 308 0 ) (velocity 0 0 0 ) ) + (particle (id 20547) (pos 383 308 0 ) (velocity 0 0 0 ) ) + (particle (id 20548) (pos 382 187 0 ) (velocity 0 0 0 ) ) + (particle (id 20549) (pos 352 182 0 ) (velocity 0 0 0 ) ) + (particle (id 20550) (pos 357 255 0 ) (velocity 0 0 0 ) ) + (particle (id 20551) (pos 313 187 0 ) (velocity 0 0 0 ) ) + (particle (id 20552) (pos 447 185 0 ) (velocity 0 0 0 ) ) + (particle (id 20553) (pos 402 216 0 ) (velocity 0 0 0 ) ) + (particle (id 20554) (pos 438 253 0 ) (velocity 0 0 0 ) ) + (particle (id 20555) (pos 398 275 0 ) (velocity 0 0 0 ) ) + (particle (id 20556) (pos 437 315 0 ) (velocity 0 0 0 ) ) + (particle (id 20557) (pos 481 275 0 ) (velocity 0 0 0 ) ) + (particle (id 20558) (pos 459 217 0 ) (velocity 0 0 0 ) ) + (particle (id 20559) (pos 486 193 0 ) (velocity 0 0 0 ) ) + (particle (id 20560) (pos 497 306 0 ) (velocity 0 0 0 ) ) + (particle (id 20561) (pos 505 234 0 ) (velocity 0 0 0 ) ) + (particle (id 20562) (pos 508 174 0 ) (velocity 0 0 0 ) ) + (particle (id 20563) (pos 371 159 0 ) (velocity 0 0 0 ) ) + (particle (id 20564) (pos 369 124 0 ) (velocity 0 0 0 ) ) + (particle (id 20565) (pos 452 144 0 ) (velocity 0 0 0 ) ) + (particle (id 20566) (pos 517 144 0 ) (velocity 0 0 0 ) ) + (particle (id 20567) (pos 727 154 0 ) (velocity 0 0 0 ) ) + (particle (id 20568) (pos 729 186 0 ) (velocity 0 0 0 ) ) + (particle (id 20569) (pos 552 176 0 ) (velocity 0 0 0 ) ) + (particle (id 20570) (pos 530 298 0 ) (velocity 0 0 0 ) ) + (particle (id 20571) (pos 578 218 0 ) (velocity 0 0 0 ) ) + (particle (id 20572) (pos 570 266 0 ) (velocity 0 0 0 ) ) + (particle (id 20573) (pos 557 305 0 ) (velocity 0 0 0 ) ) + (particle (id 20574) (pos 592 308 0 ) (velocity 0 0 0 ) ) + (particle (id 20575) (pos 602 264 0 ) (velocity 0 0 0 ) ) + (particle (id 20576) (pos 642 260 0 ) (velocity 0 0 0 ) ) + (particle (id 20577) (pos 627 229 0 ) (velocity 0 0 0 ) ) + (particle (id 20578) (pos 598 236 0 ) (velocity 0 0 0 ) ) + (particle (id 20579) (pos 636 291 0 ) (velocity 0 0 0 ) ) + (particle (id 20580) (pos 637 326 0 ) (velocity 0 0 0 ) ) + (particle (id 20581) (pos 679 331 0 ) (velocity 0 0 0 ) ) + (particle (id 20582) (pos 686 228 0 ) (velocity 0 0 0 ) ) + (particle (id 20583) (pos 711 234 0 ) (velocity 0 0 0 ) ) + (particle (id 20584) (pos 704 312 0 ) (velocity 0 0 0 ) ) + (particle (id 20585) (pos 756 263 0 ) (velocity 0 0 0 ) ) + (particle (id 20586) (pos 737 292 0 ) (velocity 0 0 0 ) ) + (particle (id 20587) (pos 760 313 0 ) (velocity 0 0 0 ) ) + (particle (id 20588) (pos 773 284 0 ) (velocity 0 0 0 ) ) + (particle (id 20589) (pos 748 238 0 ) (velocity 0 0 0 ) ) + (particle (id 20590) (pos 751 345 0 ) (velocity 0 0 0 ) ) + (particle (id 20591) (pos 796 311 0 ) (velocity 0 0 0 ) ) + (particle (id 20592) (pos 786 255 0 ) (velocity 0 0 0 ) ) + (particle (id 20593) (pos 654 227 0 ) (velocity 0 0 0 ) ) + (particle (id 20594) (pos 629 201 0 ) (velocity 0 0 0 ) ) + (particle (id 20595) (pos 609 330 0 ) (velocity 0 0 0 ) ) + (particle (id 20596) (pos 476 154 0 ) (velocity 0 0 0 ) ) + (particle (id 20597) (pos 681 300 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 20521)(second 20522)) + (spring (first 20522)(second 20523)) + (spring (first 20523)(second 20524)) + (spring (first 20524)(second 20525)) + (spring (first 20525)(second 20526)) + (spring (first 20526)(second 20527)) + (spring (first 20527)(second 20528)) + (spring (first 20528)(second 20529)) + (spring (first 20529)(second 20530)) + (spring (first 20530)(second 20531)) + (spring (first 20531)(second 20532)) + (spring (first 20532)(second 20521)) + (spring (first 20535)(second 20534)) + (spring (first 20534)(second 20533)) + (spring (first 20533)(second 20536)) + (spring (first 20536)(second 20537)) + (spring (first 20537)(second 20538)) + (spring (first 20538)(second 20535)) + (spring (first 20536)(second 20540)) + (spring (first 20540)(second 20539)) + (spring (first 20541)(second 20540)) + (spring (first 20541)(second 20539)) + (spring (first 20539)(second 20534)) + (spring (first 20533)(second 20539)) + (spring (first 20542)(second 20543)) + (spring (first 20543)(second 20544)) + (spring (first 20544)(second 20545)) + (spring (first 20545)(second 20546)) + (spring (first 20546)(second 20547)) + (spring (first 20547)(second 20548)) + (spring (first 20548)(second 20549)) + (spring (first 20549)(second 20550)) + (spring (first 20550)(second 20551)) + (spring (first 20551)(second 20542)) + (spring (first 20552)(second 20553)) + (spring (first 20553)(second 20554)) + (spring (first 20554)(second 20555)) + (spring (first 20555)(second 20547)) + (spring (first 20547)(second 20556)) + (spring (first 20556)(second 20557)) + (spring (first 20557)(second 20558)) + (spring (first 20558)(second 20559)) + (spring (first 20559)(second 20552)) + (spring (first 20560)(second 20561)) + (spring (first 20561)(second 20562)) + (spring (first 20562)(second 20563)) + (spring (first 20563)(second 20564)) + (spring (first 20564)(second 20565)) + (spring (first 20565)(second 20566)) + (spring (first 20566)(second 20567)) + (spring (first 20567)(second 20568)) + (spring (first 20568)(second 20569)) + (spring (first 20569)(second 20570)) + (spring (first 20570)(second 20560)) + (spring (first 20571)(second 20572)) + (spring (first 20573)(second 20572)) + (spring (first 20573)(second 20574)) + (spring (first 20574)(second 20575)) + (spring (first 20575)(second 20576)) + (spring (first 20576)(second 20577)) + (spring (first 20571)(second 20578)) + (spring (first 20578)(second 20577)) + (spring (first 20579)(second 20580)) + (spring (first 20581)(second 20582)) + (spring (first 20582)(second 20583)) + (spring (first 20583)(second 20584)) + (spring (first 20584)(second 20585)) + (spring (first 20585)(second 20586)) + (spring (first 20586)(second 20587)) + (spring (first 20587)(second 20588)) + (spring (first 20588)(second 20585)) + (spring (first 20584)(second 20589)) + (spring (first 20584)(second 20590)) + (spring (first 20590)(second 20591)) + (spring (first 20591)(second 20592)) + (spring (first 20592)(second 20589)) + (spring (first 20584)(second 20581)) + (spring (first 20581)(second 20580)) + (spring (first 20579)(second 20593)) + (spring (first 20593)(second 20594)) + (spring (first 20594)(second 20579)) + (spring (first 20594)(second 20595)) + (spring (first 20595)(second 20580)) + (spring (first 20579)(second 20584)) + (spring (first 20528)(second 20525)) + (spring (first 20525)(second 20527)) + (spring (first 20524)(second 20528)) + (spring (first 20523)(second 20529)) + (spring (first 20524)(second 20529)) + (spring (first 20522)(second 20530)) + (spring (first 20523)(second 20530)) + (spring (first 20531)(second 20522)) + (spring (first 20531)(second 20521)) + (spring (first 20539)(second 20535)) + (spring (first 20541)(second 20535)) + (spring (first 20541)(second 20538)) + (spring (first 20540)(second 20537)) + (spring (first 20537)(second 20541)) + (spring (first 20542)(second 20545)) + (spring (first 20551)(second 20545)) + (spring (first 20545)(second 20543)) + (spring (first 20545)(second 20550)) + (spring (first 20550)(second 20546)) + (spring (first 20550)(second 20547)) + (spring (first 20550)(second 20548)) + (spring (first 20555)(second 20556)) + (spring (first 20555)(second 20557)) + (spring (first 20554)(second 20557)) + (spring (first 20554)(second 20558)) + (spring (first 20553)(second 20558)) + (spring (first 20552)(second 20558)) + (spring (first 20564)(second 20562)) + (spring (first 20565)(second 20563)) + (spring (first 20596)(second 20565)) + (spring (first 20596)(second 20569)) + (spring (first 20596)(second 20566)) + (spring (first 20566)(second 20562)) + (spring (first 20562)(second 20570)) + (spring (first 20560)(second 20569)) + (spring (first 20561)(second 20569)) + (spring (first 20561)(second 20570)) + (spring (first 20569)(second 20566)) + (spring (first 20569)(second 20567)) + (spring (first 20568)(second 20566)) + (spring (first 20571)(second 20575)) + (spring (first 20578)(second 20575)) + (spring (first 20577)(second 20575)) + (spring (first 20573)(second 20575)) + (spring (first 20572)(second 20574)) + (spring (first 20595)(second 20576)) + (spring (first 20579)(second 20595)) + (spring (first 20581)(second 20583)) + (spring (first 20580)(second 20597)) + (spring (first 20584)(second 20587)) + (spring (first 20587)(second 20590)) + (spring (first 20587)(second 20591)) + (spring (first 20588)(second 20592)) + (spring (first 20589)(second 20585)) + (spring (first 20585)(second 20592)) + ) +) diff --git a/examples/monster.construo b/examples/monster.construo new file mode 100644 index 0000000..6c8d6a9 --- /dev/null +++ b/examples/monster.construo @@ -0,0 +1,346 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 1) (pos 257.219849 324.620575 0.000000) (velocity 0.765554 5.762051 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 381.143066 308.079498 0.000000) (velocity 0.571170 6.516360 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 317.176483 321.071960 0.000000) (velocity 0.674560 7.231258 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 322.134369 286.055878 0.000000) (velocity 0.469187 7.099008 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 240.033127 246.692596 0.000000) (velocity 0.313002 5.925886 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 229.157822 290.574432 0.000000) (velocity 0.614895 5.602356 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 293.162628 241.059723 0.000000) (velocity 0.742401 7.230630 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 295.121887 302.083923 0.000000) (velocity 0.513632 7.330045 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 70) (pos 352.123383 276.143494 0.000000) (velocity 0.490632 7.366271 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 71) (pos 346.174805 329.076508 0.000000) (velocity 0.553521 7.015798 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 261) (pos 346.103424 245.154541 0.000000) (velocity 0.567070 7.535870 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 262) (pos 372.107330 274.138947 0.000000) (velocity 0.477783 7.247910 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 263) (pos 325.222595 344.075928 0.000000) (velocity 0.781282 7.242383 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 264) (pos 368.124390 343.111053 0.000000) (velocity 0.273887 6.807890 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 265) (pos 357.119171 304.143829 0.000000) (velocity 0.392830 7.248806 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 266) (pos 226.380661 311.439484 0.000000) (velocity 1.199908 5.283651 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 269) (pos 247.326187 340.609406 0.000000) (velocity 1.044280 5.750491 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 270) (pos 273.313538 352.658936 0.000000) (velocity 1.035873 5.707078 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 272) (pos 229.337311 345.325897 0.000000) (velocity 1.052391 4.994976 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 273) (pos 253.244095 365.396790 0.000000) (velocity 0.788888 5.019997 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 274) (pos 286.184235 365.825104 0.000000) (velocity 0.568108 6.236153 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 407) (pos 449.873230 577.167480 0.000000) (velocity -0.616652 -0.956955 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 408) (pos 434.966644 599.000000 0.000000) (velocity 0.004061 -0.011564 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 409) (pos 470.055237 599.000000 0.000000) (velocity -0.013316 0.023866 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 411) (pos 150.973648 599.000000 0.000000) (velocity -0.015185 -0.017697 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 412) (pos 183.015259 599.000000 0.000000) (velocity 0.007840 -0.015988 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 675) (pos 354.139496 366.189178 0.000000) (velocity 0.631082 7.522379 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 676) (pos 328.129517 369.103119 0.000000) (velocity 0.532566 7.332920 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 677) (pos 307.088287 377.997284 0.000000) (velocity 0.274778 6.861992 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 678) (pos 262.003143 391.599884 0.000000) (velocity -0.096033 5.457042 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 679) (pos 275.916382 402.753815 0.000000) (velocity -0.423025 5.928600 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 680) (pos 313.929749 404.029999 0.000000) (velocity -0.363098 7.000237 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 681) (pos 341.052399 385.170990 0.000000) (velocity 0.222596 7.605791 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 682) (pos 330.846649 418.130585 0.000000) (velocity -0.751168 7.420854 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 683) (pos 304.813904 421.972321 0.000000) (velocity -0.880628 6.733182 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 684) (pos 276.834564 419.749939 0.000000) (velocity -0.832007 5.920307 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 685) (pos 301.721130 436.954254 0.000000) (velocity -1.279835 6.630581 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 686) (pos 320.725494 437.072083 0.000000) (velocity -1.299419 7.149513 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 835) (pos 169.859299 573.394409 0.000000) (velocity -0.390795 0.860766 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 836) (pos 284.162659 212.092606 0.000000) (velocity 0.857633 7.394997 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 837) (pos 322.162811 212.093246 0.000000) (velocity 0.831961 7.394183 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 838) (pos 295.104431 184.121674 0.000000) (velocity 0.684912 7.522655 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 839) (pos 319.099976 181.106323 0.000000) (velocity 0.667916 7.425637 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 841) (pos 264.049316 161.198395 0.000000) (velocity 0.389442 7.937932 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 842) (pos 270.015106 127.192444 0.000000) (velocity 0.152612 7.908188 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 843) (pos 303.009338 118.150604 0.000000) (velocity 0.123825 7.628846 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 844) (pos 331.017792 119.135590 0.000000) (velocity 0.129026 7.456317 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 845) (pos 351.038818 141.126129 0.000000) (velocity 0.289269 7.348204 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 846) (pos 350.077148 167.125076 0.000000) (velocity 0.528938 7.336223 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 847) (pos 313.056030 157.128616 0.000000) (velocity 0.442433 7.516356 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 849) (pos 382.081024 238.119339 0.000000) (velocity 0.523419 7.356668 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 850) (pos 414.069672 252.137344 0.000000) (velocity 0.465437 7.524128 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 851) (pos 428.073761 227.128265 0.000000) (velocity 0.498675 7.473577 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 852) (pos 457.063599 237.165817 0.000000) (velocity 0.451537 7.684507 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 853) (pos 466.066254 215.174652 0.000000) (velocity 0.481348 7.782886 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 854) (pos 498.054871 222.171387 0.000000) (velocity 0.387662 7.744554 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 855) (pos 480.030090 188.179291 0.000000) (velocity 0.269754 7.801380 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 856) (pos 504.020142 164.180740 0.000000) (velocity 0.211077 7.767437 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 857) (pos 556.018860 170.196457 0.000000) (velocity 0.181618 7.919477 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 858) (pos 522.018555 184.177963 0.000000) (velocity 0.234930 7.787021 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 859) (pos 516.045776 207.179062 0.000000) (velocity 0.404640 7.777291 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 860) (pos 540.043213 216.198120 0.000000) (velocity 0.349671 7.930743 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 861) (pos 568.031616 205.195953 0.000000) (velocity 0.319178 7.920641 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 862) (pos 544.031921 236.200668 0.000000) (velocity 0.283458 7.947968 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1397) (pos 191.948975 245.785767 0.000000) (velocity -0.028770 6.075064 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1398) (pos 188.010406 264.792542 0.000000) (velocity 0.216257 6.096188 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1399) (pos 158.909271 240.925598 0.000000) (velocity -0.240993 6.617242 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1400) (pos 156.958115 256.919006 0.000000) (velocity 0.001024 6.594765 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1401) (pos 119.894836 236.095551 0.000000) (velocity -0.382914 7.425925 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1402) (pos 125.944328 256.064819 0.000000) (velocity -0.084658 7.269464 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1403) (pos 101.963905 267.130920 0.000000) (velocity -0.004896 7.594094 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1404) (pos 83.997772 284.173950 0.000000) (velocity 0.073453 7.736663 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1405) (pos 58.986450 280.212494 0.000000) (velocity 0.014941 7.992316 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1406) (pos 42.957306 247.220779 0.000000) (velocity -0.291026 8.119756 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1407) (pos 73.960335 259.196686 0.000000) (velocity -0.176696 7.850996 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1408) (pos 89.919006 246.152496 0.000000) (velocity -0.251199 7.726901 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1409) (pos 86.910805 222.144318 0.000000) (velocity -0.469126 7.739770 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1410) (pos 48.916904 218.175644 0.000000) (velocity -0.506121 7.825828 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1411) (pos 94.908310 199.144669 0.000000) (velocity -0.582548 7.700509 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1412) (pos 120.915474 209.109818 0.000000) (velocity -0.518346 7.475336 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1697) (pos 128.967392 599.000000 0.000000) (velocity -0.024805 -0.014298 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1698) (pos 208.015762 599.000000 0.000000) (velocity 0.024444 0.014062 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1699) (pos 413.014160 598.977783 0.000000) (velocity 0.732155 -1.574353 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1700) (pos 501.119293 598.981262 0.000000) (velocity -0.437371 0.577364 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1839) (pos 274.000000 439.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1840) (pos 304.000000 464.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1841) (pos 324.000000 463.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1976) (pos 387.000000 213.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1977) (pos 400.000000 200.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1978) (pos 417.000000 195.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1979) (pos 432.000000 202.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1980) (pos 412.000000 215.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2071) (pos 207.000000 223.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2072) (pos 231.000000 226.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2211) (pos 176.000000 283.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 3) (second 4) (length 65.306969)) + (spring (first 4) (second 5) (length 35.355339)) + (spring (first 5) (second 1) (length 75.802376)) + (spring (first 4) (second 1) (length 60.133186)) + (spring (first 6) (second 5) (length 90.801979)) + (spring (first 6) (second 1) (length 79.831070)) + (spring (first 7) (second 8) (length 81.215759)) + (spring (first 8) (second 9) (length 61.032780)) + (spring (first 9) (second 7) (length 66.910385)) + (spring (first 1) (second 7) (length 44.045429)) + (spring (first 8) (second 5) (length 53.535034)) + (spring (first 5) (second 3) (length 62.968246)) + (spring (first 5) (second 70) (length 31.622776)) + (spring (first 70) (second 3) (length 43.185646)) + (spring (first 4) (second 71) (length 30.083218)) + (spring (first 71) (second 3) (length 40.816662)) + (spring (first 7) (second 9) (length 66.910385)) + (spring (first 9) (second 4) (length 29.068884)) + (spring (first 8) (second 4) (length 83.522453)) + (spring (first 9) (second 5) (length 31.384710)) + (spring (first 7) (second 6) (length 45.354160)) + (spring (first 6) (second 8) (length 53.338543)) + (spring (first 8) (second 70) (length 68.600288)) + (spring (first 8) (second 261) (length 53.150730)) + (spring (first 261) (second 70) (length 31.575306)) + (spring (first 261) (second 262) (length 38.948685)) + (spring (first 262) (second 3) (length 35.171009)) + (spring (first 262) (second 70) (length 20.099751)) + (spring (first 1) (second 263) (length 70.604530)) + (spring (first 263) (second 71) (length 25.806976)) + (spring (first 4) (second 263) (length 24.351591)) + (spring (first 263) (second 264) (length 43.011627)) + (spring (first 264) (second 3) (length 37.336308)) + (spring (first 264) (second 71) (length 26.076809)) + (spring (first 264) (second 5) (length 73.246162)) + (spring (first 264) (second 265) (length 40.521599)) + (spring (first 265) (second 5) (length 39.357338)) + (spring (first 3) (second 265) (length 24.331051)) + (spring (first 265) (second 70) (length 28.442924)) + (spring (first 266) (second 1) (length 33.615471)) + (spring (first 266) (second 7) (length 21.213203)) + (spring (first 266) (second 269) (length 35.805027)) + (spring (first 269) (second 1) (length 18.867962)) + (spring (first 269) (second 263) (length 78.057671)) + (spring (first 269) (second 270) (length 28.635643)) + (spring (first 270) (second 263) (length 52.773098)) + (spring (first 266) (second 272) (length 34.132095)) + (spring (first 272) (second 270) (length 44.553337)) + (spring (first 272) (second 269) (length 18.681541)) + (spring (first 272) (second 273) (length 31.240999)) + (spring (first 273) (second 270) (length 23.853722)) + (spring (first 273) (second 274) (length 33.000000)) + (spring (first 274) (second 263) (length 44.777225)) + (spring (first 270) (second 274) (length 18.384777)) + (spring (first 407) (second 408) (length 26.627054)) + (spring (first 408) (second 409) (length 35.000000)) + (spring (first 409) (second 407) (length 29.732138)) + (spring (first 407) (second 3) (length 278.677246)) + (spring (first 411) (second 412) (length 32.000000)) + (spring (first 407) (second 264) (length 248.895554)) + (spring (first 263) (second 675) (length 36.400551)) + (spring (first 675) (second 264) (length 26.925823)) + (spring (first 675) (second 676) (length 26.172504)) + (spring (first 676) (second 263) (length 25.179358)) + (spring (first 676) (second 677) (length 22.847319)) + (spring (first 677) (second 274) (length 24.186773)) + (spring (first 677) (second 263) (length 38.470768)) + (spring (first 273) (second 678) (length 27.513634)) + (spring (first 678) (second 274) (length 35.383614)) + (spring (first 678) (second 679) (length 17.804493)) + (spring (first 679) (second 677) (length 39.824615)) + (spring (first 679) (second 274) (length 38.327538)) + (spring (first 679) (second 680) (length 38.013157)) + (spring (first 680) (second 274) (length 47.201694)) + (spring (first 680) (second 676) (length 37.696156)) + (spring (first 680) (second 677) (length 26.925823)) + (spring (first 680) (second 681) (length 33.015148)) + (spring (first 681) (second 675) (length 23.021729)) + (spring (first 681) (second 676) (length 20.615528)) + (spring (first 681) (second 682) (length 34.481880)) + (spring (first 682) (second 680) (length 22.022715)) + (spring (first 682) (second 683) (length 26.305893)) + (spring (first 683) (second 679) (length 34.669872)) + (spring (first 683) (second 680) (length 20.124611)) + (spring (first 683) (second 684) (length 28.071337)) + (spring (first 684) (second 678) (length 31.764761)) + (spring (first 684) (second 679) (length 17.029387)) + (spring (first 684) (second 685) (length 30.232433)) + (spring (first 685) (second 683) (length 15.297058)) + (spring (first 685) (second 686) (length 19.000000)) + (spring (first 686) (second 682) (length 21.470911)) + (spring (first 686) (second 683) (length 21.931713)) + (spring (first 835) (second 412) (length 29.068884)) + (spring (first 835) (second 411) (length 32.202484)) + (spring (first 835) (second 272) (length 237.446838)) + (spring (first 835) (second 266) (length 269.874054)) + (spring (first 835) (second 273) (length 225.807434)) + (spring (first 6) (second 836) (length 56.222771)) + (spring (first 836) (second 837) (length 38.000000)) + (spring (first 837) (second 261) (length 40.804413)) + (spring (first 837) (second 8) (length 41.012192)) + (spring (first 8) (second 836) (length 30.364452)) + (spring (first 836) (second 838) (length 30.083218)) + (spring (first 838) (second 839) (length 24.186773)) + (spring (first 839) (second 837) (length 31.144823)) + (spring (first 836) (second 839) (length 46.754681)) + (spring (first 838) (second 837) (length 38.897301)) + (spring (first 838) (second 841) (length 38.600517)) + (spring (first 841) (second 842) (length 34.525352)) + (spring (first 842) (second 843) (length 34.205261)) + (spring (first 843) (second 844) (length 28.017851)) + (spring (first 844) (second 845) (length 29.732138)) + (spring (first 845) (second 846) (length 26.019224)) + (spring (first 846) (second 839) (length 34.014702)) + (spring (first 839) (second 847) (length 24.738634)) + (spring (first 847) (second 838) (length 32.449963)) + (spring (first 841) (second 847) (length 49.162994)) + (spring (first 847) (second 846) (length 38.327538)) + (spring (first 847) (second 845) (length 41.231056)) + (spring (first 847) (second 843) (length 40.261642)) + (spring (first 847) (second 844) (length 42.047592)) + (spring (first 847) (second 842) (length 52.430908)) + (spring (first 261) (second 849) (length 36.674240)) + (spring (first 849) (second 262) (length 37.363083)) + (spring (first 262) (second 850) (length 47.413078)) + (spring (first 850) (second 849) (length 34.928497)) + (spring (first 849) (second 851) (length 47.296936)) + (spring (first 851) (second 850) (length 28.653097)) + (spring (first 850) (second 852) (length 45.541191)) + (spring (first 852) (second 851) (length 30.675724)) + (spring (first 851) (second 853) (length 39.849716)) + (spring (first 853) (second 852) (length 23.769728)) + (spring (first 852) (second 854) (length 43.657761)) + (spring (first 854) (second 853) (length 32.756680)) + (spring (first 853) (second 855) (length 30.413813)) + (spring (first 854) (second 855) (length 38.470768)) + (spring (first 855) (second 856) (length 33.941124)) + (spring (first 856) (second 857) (length 52.345009)) + (spring (first 857) (second 858) (length 36.769554)) + (spring (first 858) (second 859) (length 23.769728)) + (spring (first 859) (second 860) (length 25.632011)) + (spring (first 860) (second 861) (length 30.083218)) + (spring (first 861) (second 862) (length 39.204590)) + (spring (first 862) (second 854) (length 48.083260)) + (spring (first 854) (second 859) (length 23.430750)) + (spring (first 859) (second 855) (length 40.706264)) + (spring (first 856) (second 859) (length 44.643028)) + (spring (first 855) (second 858) (length 42.190044)) + (spring (first 858) (second 856) (length 26.907248)) + (spring (first 860) (second 862) (length 20.396078)) + (spring (first 860) (second 854) (length 42.426407)) + (spring (first 859) (second 862) (length 40.311287)) + (spring (first 262) (second 851) (length 73.109505)) + (spring (first 850) (second 853) (length 63.820061)) + (spring (first 5) (second 851) (length 121.313644)) + (spring (first 263) (second 849) (length 120.353645)) + (spring (first 851) (second 854) (length 70.178345)) + (spring (first 849) (second 860) (length 159.524292)) + (spring (first 264) (second 849) (length 105.929222)) + (spring (first 264) (second 851) (length 130.598618)) + (spring (first 264) (second 852) (length 138.408813)) + (spring (first 264) (second 854) (length 177.597855)) + (spring (first 6) (second 1397) (length 48.010414)) + (spring (first 1397) (second 1398) (length 19.416489)) + (spring (first 1398) (second 7) (length 48.548943)) + (spring (first 1398) (second 6) (length 55.027267)) + (spring (first 1397) (second 7) (length 58.258045)) + (spring (first 1397) (second 1399) (length 33.376640)) + (spring (first 1399) (second 1400) (length 16.124516)) + (spring (first 1400) (second 1398) (length 32.015621)) + (spring (first 1398) (second 1399) (length 37.643059)) + (spring (first 1400) (second 1397) (length 36.687874)) + (spring (first 1399) (second 1401) (length 39.319206)) + (spring (first 1401) (second 1402) (length 20.880613)) + (spring (first 1402) (second 1400) (length 31.016125)) + (spring (first 1400) (second 1402) (length 31.016125)) + (spring (first 1399) (second 1402) (length 36.249138)) + (spring (first 1401) (second 1400) (length 42.544094)) + (spring (first 1402) (second 1403) (length 26.400757)) + (spring (first 1403) (second 1404) (length 24.758837)) + (spring (first 1404) (second 1405) (length 25.317978)) + (spring (first 1405) (second 1406) (length 36.674240)) + (spring (first 1406) (second 1407) (length 33.241539)) + (spring (first 1407) (second 1408) (length 20.615528)) + (spring (first 1408) (second 1409) (length 24.186773)) + (spring (first 1409) (second 1410) (length 38.209946)) + (spring (first 1410) (second 1411) (length 49.769470)) + (spring (first 1411) (second 1412) (length 27.856777)) + (spring (first 1412) (second 1401) (length 27.018513)) + (spring (first 1412) (second 1409) (length 36.400551)) + (spring (first 1411) (second 1409) (length 24.351591)) + (spring (first 1409) (second 1401) (length 35.846897)) + (spring (first 1408) (second 1401) (length 31.622776)) + (spring (first 1408) (second 1402) (length 37.363083)) + (spring (first 1408) (second 1403) (length 24.186773)) + (spring (first 1408) (second 1404) (length 38.470768)) + (spring (first 1404) (second 1407) (length 26.925823)) + (spring (first 1407) (second 1405) (length 25.806976)) + (spring (first 266) (second 1398) (length 60.440052)) + (spring (first 272) (second 1400) (length 114.477074)) + (spring (first 272) (second 1402) (length 136.780853)) + (spring (first 411) (second 1697) (length 22.000000)) + (spring (first 1697) (second 835) (length 48.548943)) + (spring (first 835) (second 1698) (length 46.043457)) + (spring (first 1698) (second 412) (length 25.000000)) + (spring (first 408) (second 1699) (length 22.022715)) + (spring (first 1699) (second 407) (length 42.544094)) + (spring (first 407) (second 1700) (length 55.542778)) + (spring (first 1700) (second 409) (length 31.000000)) + (spring (first 1412) (second 1400) (length 59.873119)) + (spring (first 1403) (second 1400) (length 55.934303)) + (spring (first 1408) (second 1399) (length 69.187981)) + (spring (first 678) (second 1839) (length 48.894741)) + (spring (first 1839) (second 685) (length 27.796513)) + (spring (first 1839) (second 1840) (length 39.051247)) + (spring (first 1840) (second 686) (length 31.699446)) + (spring (first 1840) (second 1841) (length 20.024984)) + (spring (first 1841) (second 682) (length 45.388775)) + (spring (first 1841) (second 686) (length 26.133873)) + (spring (first 269) (second 1400) (length 123.168465)) + (spring (first 849) (second 1976) (length 25.596436)) + (spring (first 1976) (second 1977) (length 18.384777)) + (spring (first 1977) (second 1978) (length 17.720045)) + (spring (first 1978) (second 1979) (length 16.552946)) + (spring (first 1979) (second 851) (length 25.433149)) + (spring (first 851) (second 1979) (length 25.433149)) + (spring (first 853) (second 1979) (length 36.525074)) + (spring (first 1979) (second 1980) (length 23.853722)) + (spring (first 1980) (second 1977) (length 19.209373)) + (spring (first 1980) (second 1978) (length 20.615528)) + (spring (first 1980) (second 1976) (length 25.079872)) + (spring (first 1980) (second 851) (length 20.136053)) + (spring (first 1980) (second 849) (length 37.810699)) + (spring (first 1399) (second 2071) (length 51.322952)) + (spring (first 2071) (second 2072) (length 24.186773)) + (spring (first 2072) (second 6) (length 22.578329)) + (spring (first 2072) (second 1397) (length 43.777382)) + (spring (first 1397) (second 2071) (length 27.307957)) + (spring (first 862) (second 852) (length 86.973679)) + (spring (first 407) (second 675) (length 231.682526)) + (spring (first 272) (second 2211) (length 82.032837)) + (spring (first 2211) (second 1402) (length 56.842541)) + (spring (first 2211) (second 1398) (length 21.811956)) + )) + +;; EOF ;; diff --git a/examples/moonlander.construo b/examples/moonlander.construo new file mode 100644 index 0000000..d3f5821 --- /dev/null +++ b/examples/moonlander.construo @@ -0,0 +1,230 @@ + +(construo-scene + (particles + (particle (id 96014) (pos 246 124 0 ) (velocity 0 0 0 ) ) + (particle (id 96015) (pos 203 161 0 ) (velocity 0 0 0 ) ) + (particle (id 96016) (pos 246 197 0 ) (velocity 0 0 0 ) ) + (particle (id 96017) (pos 282 164 0 ) (velocity 0 0 0 ) ) + (particle (id 96018) (pos 358 126 0 ) (velocity 0 0 0 ) ) + (particle (id 96019) (pos 315 162 0 ) (velocity 0 0 0 ) ) + (particle (id 96020) (pos 354 199 0 ) (velocity 0 0 0 ) ) + (particle (id 96021) (pos 392 165 0 ) (velocity 0 0 0 ) ) + (particle (id 96022) (pos 479 130 0 ) (velocity 0 0 0 ) ) + (particle (id 96023) (pos 432 163 0 ) (velocity 0 0 0 ) ) + (particle (id 96024) (pos 471 202 0 ) (velocity 0 0 0 ) ) + (particle (id 96025) (pos 513 166 0 ) (velocity 0 0 0 ) ) + (particle (id 96136) (pos 363 85 0 ) (velocity 0 0 0 ) ) + (particle (id 96206) (pos 250 224 0 ) (velocity 0 0 0 ) ) + (particle (id 96207) (pos 345 225 0 ) (velocity 0 0 0 ) ) + (particle (id 96208) (pos 258 252 0 ) (velocity 0 0 0 ) ) + (particle (id 96209) (pos 337 256 0 ) (velocity 0 0 0 ) ) + (particle (id 96210) (pos 271 281 0 ) (velocity 0 0 0 ) ) + (particle (id 96211) (pos 333 282 0 ) (velocity 0 0 0 ) ) + (particle (id 96212) (pos 373 230 0 ) (velocity 0 0 0 ) ) + (particle (id 96213) (pos 383 258 0 ) (velocity 0 0 0 ) ) + (particle (id 96214) (pos 394 283 0 ) (velocity 0 0 0 ) ) + (particle (id 96215) (pos 445 283 0 ) (velocity 0 0 0 ) ) + (particle (id 96216) (pos 453 257 0 ) (velocity 0 0 0 ) ) + (particle (id 96217) (pos 461 226 0 ) (velocity 0 0 0 ) ) + (particle (id 96569) (pos 281 309 0 ) (velocity 0 0 0 ) ) + (particle (id 96570) (pos 329 308 0 ) (velocity 0 0 0 ) ) + (particle (id 96571) (pos 397 314 0 ) (velocity 0 0 0 ) ) + (particle (id 96572) (pos 441 311 0 ) (velocity 0 0 0 ) ) + (particle (id 98827) (pos 327 337 0 ) (velocity 0 0 0 ) ) + (particle (id 98828) (pos 393 342 0 ) (velocity 0 0 0 ) ) + (particle (id 99056) (pos 328 393 0 ) (velocity 0 0 0 ) ) + (particle (id 99057) (pos 395 398 0 ) (velocity 0 0 0 ) ) + (particle (id 101070) (pos 251 88 0 ) (velocity 0 0 0 ) ) + (particle (id 101071) (pos 461 89 0 ) (velocity 0 0 0 ) ) + (particle (id 101653) (pos 506 396 0 ) (velocity 0 0 0 ) ) + (particle (id 101654) (pos 503 143 0 ) (velocity 0 0 0 ) ) + (particle (id 101655) (pos 173 391 0 ) (velocity 0 0 0 ) ) + (particle (id 102088) (pos 205 386 0 ) (velocity 0 0 0 ) ) + (particle (id 102089) (pos 475 392 0 ) (velocity 0 0 0 ) ) + (particle (id 102090) (pos 532 393 0 ) (velocity 0 0 0 ) ) + (particle (id 102091) (pos 145 390 0 ) (velocity 0 0 0 ) ) + (particle (id 102698) (pos 358 21 0 ) (velocity 0 0 0 ) ) + (particle (id 103537) (pos 157 88 0 ) (velocity 0 0 0 ) ) + (particle (id 103538) (pos 572 89 0 ) (velocity 0 0 0 ) ) + (particle (id 103539) (pos 162 55 0 ) (velocity 0 0 0 ) ) + (particle (id 103540) (pos 253 58 0 ) (velocity 0 0 0 ) ) + (particle (id 103541) (pos 455 54 0 ) (velocity 0 0 0 ) ) + (particle (id 103542) (pos 576 55 0 ) (velocity 0 0 0 ) ) + (particle (id 103816) (pos 83 55 0 ) (velocity 0 0 0 ) ) + (particle (id 103817) (pos 656 58 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 96014)(second 96015)) + (spring (first 96015)(second 96016)) + (spring (first 96016)(second 96017)) + (spring (first 96017)(second 96014)) + (spring (first 96015)(second 96017)) + (spring (first 96014)(second 96016)) + (spring (first 96018)(second 96019)) + (spring (first 96019)(second 96020)) + (spring (first 96020)(second 96021)) + (spring (first 96021)(second 96018)) + (spring (first 96018)(second 96020)) + (spring (first 96019)(second 96021)) + (spring (first 96022)(second 96023)) + (spring (first 96023)(second 96024)) + (spring (first 96024)(second 96025)) + (spring (first 96025)(second 96022)) + (spring (first 96023)(second 96025)) + (spring (first 96022)(second 96024)) + (spring (first 96018)(second 96136)) + (spring (first 96136)(second 96014)) + (spring (first 96136)(second 96022)) + (spring (first 96021)(second 96023)) + (spring (first 96019)(second 96017)) + (spring (first 96014)(second 96018)) + (spring (first 96018)(second 96022)) + (spring (first 96016)(second 96020)) + (spring (first 96020)(second 96206)) + (spring (first 96206)(second 96016)) + (spring (first 96206)(second 96207)) + (spring (first 96207)(second 96020)) + (spring (first 96016)(second 96207)) + (spring (first 96206)(second 96208)) + (spring (first 96208)(second 96209)) + (spring (first 96209)(second 96207)) + (spring (first 96208)(second 96210)) + (spring (first 96210)(second 96211)) + (spring (first 96211)(second 96209)) + (spring (first 96208)(second 96211)) + (spring (first 96211)(second 96209)) + (spring (first 96209)(second 96210)) + (spring (first 96208)(second 96207)) + (spring (first 96206)(second 96209)) + (spring (first 96020)(second 96212)) + (spring (first 96212)(second 96213)) + (spring (first 96213)(second 96214)) + (spring (first 96214)(second 96215)) + (spring (first 96215)(second 96216)) + (spring (first 96216)(second 96217)) + (spring (first 96217)(second 96024)) + (spring (first 96217)(second 96212)) + (spring (first 96213)(second 96216)) + (spring (first 96217)(second 96213)) + (spring (first 96212)(second 96216)) + (spring (first 96216)(second 96214)) + (spring (first 96213)(second 96215)) + (spring (first 96024)(second 96212)) + (spring (first 96020)(second 96217)) + (spring (first 96024)(second 96020)) + (spring (first 96210)(second 96207)) + (spring (first 96206)(second 96211)) + (spring (first 96208)(second 96020)) + (spring (first 96016)(second 96209)) + (spring (first 96214)(second 96217)) + (spring (first 96212)(second 96215)) + (spring (first 96213)(second 96024)) + (spring (first 96020)(second 96216)) + (spring (first 96210)(second 96569)) + (spring (first 96569)(second 96570)) + (spring (first 96570)(second 96211)) + (spring (first 96210)(second 96570)) + (spring (first 96211)(second 96569)) + (spring (first 96214)(second 96571)) + (spring (first 96571)(second 96572)) + (spring (first 96572)(second 96215)) + (spring (first 96571)(second 96215)) + (spring (first 96214)(second 96572)) + (spring (first 96572)(second 96213)) + (spring (first 96216)(second 96571)) + (spring (first 96570)(second 96208)) + (spring (first 96569)(second 96209)) + (spring (first 96211)(second 96016)) + (spring (first 96210)(second 96020)) + (spring (first 96212)(second 96020)) + (spring (first 96215)(second 96020)) + (spring (first 96024)(second 96214)) + (spring (first 96015)(second 96025)) + (spring (first 96211)(second 96571)) + (spring (first 96214)(second 96570)) + (spring (first 96211)(second 96213)) + (spring (first 96209)(second 96214)) + (spring (first 96212)(second 96209)) + (spring (first 96207)(second 96213)) + (spring (first 96570)(second 96213)) + (spring (first 96209)(second 96571)) + (spring (first 96213)(second 96207)) + (spring (first 96020)(second 96209)) + (spring (first 96020)(second 96214)) + (spring (first 96212)(second 96211)) + (spring (first 96207)(second 96214)) + (spring (first 96569)(second 98827)) + (spring (first 98827)(second 98828)) + (spring (first 98828)(second 96572)) + (spring (first 96571)(second 98828)) + (spring (first 96570)(second 98827)) + (spring (first 96570)(second 98828)) + (spring (first 96571)(second 98827)) + (spring (first 96569)(second 99056)) + (spring (first 99056)(second 98827)) + (spring (first 98828)(second 99057)) + (spring (first 99057)(second 96572)) + (spring (first 96217)(second 96025)) + (spring (first 96216)(second 96025)) + (spring (first 96572)(second 96025)) + (spring (first 96025)(second 96215)) + (spring (first 96569)(second 96015)) + (spring (first 96210)(second 96015)) + (spring (first 96208)(second 96015)) + (spring (first 96206)(second 96015)) + (spring (first 96025)(second 96018)) + (spring (first 96018)(second 96015)) + (spring (first 96015)(second 96020)) + (spring (first 96020)(second 96025)) + (spring (first 96014)(second 101070)) + (spring (first 101070)(second 96136)) + (spring (first 96136)(second 101071)) + (spring (first 101071)(second 96022)) + (spring (first 101071)(second 96018)) + (spring (first 101070)(second 96018)) + (spring (first 96572)(second 101653)) + (spring (first 101654)(second 96025)) + (spring (first 96025)(second 101653)) + (spring (first 96015)(second 101655)) + (spring (first 101655)(second 96569)) + (spring (first 96015)(second 102088)) + (spring (first 102088)(second 96569)) + (spring (first 96572)(second 102089)) + (spring (first 102089)(second 96025)) + (spring (first 96572)(second 102090)) + (spring (first 102090)(second 96025)) + (spring (first 96015)(second 102091)) + (spring (first 102091)(second 96569)) + (spring (first 96015)(second 102698)) + (spring (first 102698)(second 96025)) + (spring (first 102698)(second 96136)) + (spring (first 101070)(second 103537)) + (spring (first 103537)(second 96014)) + (spring (first 101071)(second 103538)) + (spring (first 103538)(second 96022)) + (spring (first 103537)(second 103539)) + (spring (first 103539)(second 103540)) + (spring (first 103540)(second 101070)) + (spring (first 103540)(second 103541)) + (spring (first 103541)(second 101071)) + (spring (first 103541)(second 103542)) + (spring (first 103542)(second 103538)) + (spring (first 103539)(second 101070)) + (spring (first 103540)(second 96136)) + (spring (first 96136)(second 103541)) + (spring (first 103542)(second 101071)) + (spring (first 103537)(second 103816)) + (spring (first 103816)(second 103539)) + (spring (first 103542)(second 103817)) + (spring (first 103817)(second 103538)) + (spring (first 102698)(second 103816)) + (spring (first 102698)(second 103817)) + (spring (first 103540)(second 102698)) + (spring (first 102698)(second 103541)) + (spring (first 103541)(second 103538)) + (spring (first 103540)(second 103537)) + (spring (first 101070)(second 102698)) + (spring (first 102698)(second 101071)) + (spring (first 96020)(second 96136)) + ) +) diff --git a/examples/mrwooble.construo b/examples/mrwooble.construo new file mode 100644 index 0000000..a8e5255 --- /dev/null +++ b/examples/mrwooble.construo @@ -0,0 +1,87 @@ +;; Written by construo 0.2.1rc1 +(construo-scene + (version 3) + (author "Pasi Kallinen" "") + (particles + (particle (id 0) (pos 319.798676 582.486389) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 1) (pos 412.211975 512.398743) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 455.411957 436.919647) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 462.323975 317.134705) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 453.683960 216.910721) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 412.557526 158.297012) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 313.093842 53.372803) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 246.323975 -0.817281) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 299.062469 -102.700157) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 825.203979 -104.497284) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 10) (pos 884.370605 2.638719) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 799.283997 51.022720) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 735.347961 95.950722) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 667.955994 159.886719) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 647.219971 237.646713) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 654.131958 315.406708) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 634.017944 391.300537) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 671.411987 458.485168) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 726.707947 531.406738) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 807.923950 583.246704) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 21) (pos 449.121948 -135.808502) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 1061.939697 -140.577957) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 534.830872 -296.581818) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 624.411011 -351.324951) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 1211.653198 -326.441528) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 644.316895 -351.324799) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 365.625031 99.061096) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 574.643616 -383.673004) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 636.851868 -271.698730) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 477.599487 372.776306) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 115.984894) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 86.967422) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 4) (length 100.595711) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 5) (length 71.602730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 85.992905) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 114.723442) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 526.144531) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 10) (length 122.387962) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 13) (length 78.143089) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 92.895042) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 15) (length 80.477325) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 16) (length 78.066589) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 17) (length 78.513992) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 76.890114) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 19) (length 91.516113) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 20) (length 96.350510) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 19) (length 410.102783) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 20) (length 402.004242) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 19) (length 287.279175) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 18) (length 264.747650) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 3) (length 252.384140) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 16) (length 232.927094) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 4) (length 223.340225) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 15) (length 201.258224) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 14) (length 221.730103) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 5) (length 247.715240) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 5) (length 489.221771) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 14) (length 452.807129) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 10) (length 638.055969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 10) (length 97.881271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 12) (length 486.195831) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 21) (length 243.617828) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 22) (length 228.126709) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 13) (length 440.782135) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 21) (length 277.801361) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 25) (length 238.661682) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 26) (length 122.409081) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 27) (length 69.620010) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 5) (length 75.574814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 23) (length 430.306793) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 26) (length 76.816483) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 29) (length 79.975227) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 28) (length 128.094131) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 30) (length 67.872345) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 3) (length 57.700340) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + )) + +;; EOF ;; diff --git a/examples/needle.construo b/examples/needle.construo new file mode 100644 index 0000000..111755d --- /dev/null +++ b/examples/needle.construo @@ -0,0 +1,81 @@ +;; Written by construo 0.2.1 +(construo-scene + (version 3) + (author "Michael Edwards,OneArmedMan LLC,201 533 0343,201 533 0343" "") + (particles + (particle (id 0) (pos 2112.492676 379.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos 2112.492676 399.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 2222.492432 419.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 2302.492432 419.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 2382.492432 409.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 2492.492432 409.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 2512.492432 409.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 2512.492432 379.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 2512.492432 329.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 2492.492432 369.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 10) (pos 2382.492432 369.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos 2302.492432 359.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 2222.492432 359.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 2222.492432 389.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 2292.492432 389.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 2232.492676 439.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 2322.492432 439.187408) (velocity -783.398132 23.202637) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 111.803162) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 3) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 4) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 5) (length 110.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 6) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 44.721359) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 10) (length 110.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 11) (length 80.622574) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 12) (length 80.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 0) (length 111.803162) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 0) (length 117.046768) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 2) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 0) (length 110.453369) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 13) (length 110.453369) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 11) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 12) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 3) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 13) (length 85.440041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 2) (length 76.157730) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 4) (length 92.195442) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 10) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 3) (length 94.339813) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 9) (length 40.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 9) (length 44.721359) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 7) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 5) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 10) (length 117.046997) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 4) (length 117.046997) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 13) (length 85.440041) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 10) (length 92.195442) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 11) (length 94.339813) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 12) (length 117.046768) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 89.999756) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 3) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 2) (length 22.360788) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 18) (length 101.980392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 399.293793 532.501343) (pos2 475.934113 739.991028)) + (rect (pos1 389.985107 221.015747) (pos2 485.318207 441.590393)) + (rect (pos1 190.117111 544.965881) (pos2 287.020386 703.241272)) + (rect (pos1 99.548950 321.201172) (pos2 199.144012 455.789093)) + (rect (pos1 -35.563835 567.276550) (pos2 93.640579 610.344727)) + (rect (pos1 -191.195099 366.267853) (pos2 -61.990685 482.013489)) + (rect (pos1 -306.127594 573.210876) (pos2 -136.546799 618.970764)) + (rect (pos1 -595.627625 587.740784) (pos2 -481.674988 634.893616)) + (rect (pos1 -589.772339 416.139191) (pos2 -305.041107 503.140411)) + (rect (pos1 -916.548523 249.350769) (pos2 -880.930115 486.806763)) + (rect (pos1 -873.521362 224.544235) (pos2 383.800354 318.950623)) + )) + +;; EOF ;; diff --git a/examples/pendel45.construo b/examples/pendel45.construo new file mode 100644 index 0000000..308a2eb --- /dev/null +++ b/examples/pendel45.construo @@ -0,0 +1,443 @@ + +(construo-scene + (particles + (particle (id 82581) (pos 165.383 600 0 ) (velocity 0.0168484 -0.0669207 0 ) ) + (particle (id 82582) (pos 100.47 550.831 0 ) (velocity 0.779085 0.00767554 0 ) ) + (particle (id 82583) (pos 47.8005 505.717 0 ) (velocity 0.278569 -0.0238803 0 ) ) + (particle (id 82584) (pos 0.00507942 439.873 0 ) (velocity -0.0672846 0.0636154 0 ) ) + (particle (id 82585) (pos 0 385.712 0 ) (velocity 0.0102829 0.039308 0 ) ) + (particle (id 82586) (pos 60.4009 456.349 0 ) (velocity 0.327349 0.295261 0 ) ) + (particle (id 82587) (pos 116.012 508.343 0 ) (velocity -0.0798742 -0.142661 0 ) ) + (particle (id 82588) (pos 163.47 544.246 0 ) (velocity 0.210947 -0.0722836 0 ) ) + (particle (id 82589) (pos 222.307 599.52 0 ) (velocity 0.195117 -0.00979782 0 ) ) + (particle (id 82590) (pos 616.603 600 0 ) (velocity -0.0306415 -0.0677084 0 ) ) + (particle (id 82591) (pos 675.418 559.906 0 ) (velocity 0.339079 -0.108074 0 ) ) + (particle (id 82592) (pos 738.318 510.208 0 ) (velocity 0.105724 0.0730763 0 ) ) + (particle (id 82593) (pos 799.057 448.673 0 ) (velocity 0.125187 0.288705 0 ) ) + (particle (id 82594) (pos 800 399.587 0 ) (velocity -0.0147316 0.0259388 0 ) ) + (particle (id 82595) (pos 742.136 445.286 0 ) (velocity 0.0619587 -0.570204 0 ) ) + (particle (id 82596) (pos 677.584 501.01 0 ) (velocity -1.87951 -0.875229 0 ) ) + (particle (id 82597) (pos 619.039 538.291 0 ) (velocity -1.55811 -1.08786 0 ) ) + (particle (id 82598) (pos 543.69 597.733 0 ) (velocity 0.0440932 0.871301 0 ) ) + (particle (id 82599) (pos 153 427 0 ) (velocity 0 0 0 ) ) + (particle (id 82600) (pos 208 353 0 ) (velocity 0 0 0 ) ) + (particle (id 82601) (pos 313 294 0 ) (velocity 0 0 0 ) ) + (particle (id 82602) (pos 404 275 0 ) (velocity 0 0 0 ) ) + (particle (id 82603) (pos 499 306 0 ) (velocity 0 0 0 ) ) + (particle (id 82604) (pos 564 356 0 ) (velocity 0 0 0 ) ) + (particle (id 82605) (pos 619 422 0 ) (velocity 0 0 0 ) ) + (particle (id 82633) (pos 227 372 0 ) (velocity 0 0 0 ) ) + (particle (id 82634) (pos 190 331 0 ) (velocity 0 0 0 ) ) + (particle (id 82635) (pos 298 269 0 ) (velocity 0 0 0 ) ) + (particle (id 82636) (pos 329 317 0 ) (velocity 0 0 0 ) ) + (particle (id 82637) (pos 406 308 0 ) (velocity 0 0 0 ) ) + (particle (id 82638) (pos 402 245 0 ) (velocity 0 0 0 ) ) + (particle (id 82639) (pos 479 329 0 ) (velocity 0 0 0 ) ) + (particle (id 82640) (pos 520 282 0 ) (velocity 0 0 0 ) ) + (particle (id 82641) (pos 584 329 0 ) (velocity 0 0 0 ) ) + (particle (id 82642) (pos 536 377 0 ) (velocity 0 0 0 ) ) + (particle (id 82643) (pos 599 349 0 ) (velocity 0 0 0 ) ) + (particle (id 82752) (pos 110 466 0 ) (velocity 0 0 0 ) ) + (particle (id 82753) (pos 144 495 0 ) (velocity 0 0 0 ) ) + (particle (id 82754) (pos 650 494 0 ) (velocity 0 0 0 ) ) + (particle (id 82755) (pos 677 470 0 ) (velocity 0 0 0 ) ) + (particle (id 82756) (pos 350 220 0 ) (velocity 0 0 0 ) ) + (particle (id 82757) (pos 462 226 0 ) (velocity 0 0 0 ) ) + (particle (id 82758) (pos 427 185 0 ) (velocity 0 0 0 ) ) + (particle (id 82759) (pos 387 184 0 ) (velocity 0 0 0 ) ) + (particle (id 82760) (pos 423 116 0 ) (velocity 0 0 0 ) ) + (particle (id 82761) (pos 389 117 0 ) (velocity 0 0 0 ) ) + (particle (id 82762) (pos 390 54 0 ) (velocity 0 0 0 ) ) + (particle (id 82763) (pos 420 49 0 ) (velocity 0 0 0 ) ) + (particle (id 82861) (pos 295 53 0 ) (velocity 0 0 0 ) ) + (particle (id 82862) (pos 515 55 0 ) (velocity 0 0 0 ) ) + (particle (id 82863) (pos 514 20 0 ) (velocity 0 0 0 ) ) + (particle (id 82864) (pos 422 19 0 ) (velocity 0 0 0 ) ) + (particle (id 82865) (pos 388 21 0 ) (velocity 0 0 0 ) ) + (particle (id 82866) (pos 298 22 0 ) (velocity 0 0 0 ) ) + (particle (id 82867) (pos 402 0 0 ) (velocity 0 0 0 ) ) + (particle (id 83160) (pos 27 365 0 ) (velocity 0 0 0 ) ) + (particle (id 83161) (pos 1 264 0 ) (velocity 0 0 0 ) ) + (particle (id 83162) (pos 797 221 0 ) (velocity 0 0 0 ) ) + (particle (id 83163) (pos 799 331 0 ) (velocity 0 0 0 ) ) + (particle (id 83288) (pos 14 489 0 ) (velocity 0 0 0 ) ) + (particle (id 83289) (pos 55 536 0 ) (velocity 0 0 0 ) ) + (particle (id 83290) (pos 113 584 0 ) (velocity 0 0 0 ) ) + (particle (id 83291) (pos 780 498 0 ) (velocity 0 0 0 ) ) + (particle (id 83292) (pos 726 549 0 ) (velocity 0 0 0 ) ) + (particle (id 83293) (pos 664 590 0 ) (velocity 0 0 0 ) ) + (particle (id 83359) (pos 215 47 0 ) (velocity 0 0 0 ) ) + (particle (id 83360) (pos 219 16 0 ) (velocity 0 0 0 ) ) + (particle (id 83361) (pos 605 24 0 ) (velocity 0 0 0 ) ) + (particle (id 83362) (pos 604 52 0 ) (velocity 0 0 0 ) ) + (particle (id 83363) (pos 129 19 0 ) (velocity 0 0 0 ) ) + (particle (id 83364) (pos 130 49 0 ) (velocity 0 0 0 ) ) + (particle (id 83365) (pos 704 26 0 ) (velocity 0 0 0 ) ) + (particle (id 83366) (pos 705 54 0 ) (velocity 0 0 0 ) ) + (particle (id 83367) (pos 677 34 0 ) (velocity 0 0 0 ) ) + (particle (id 83462) (pos 268 239 0 ) (velocity 0 0 0 ) ) + (particle (id 84865) (pos 71 49 0 ) (velocity 0 0 0 ) ) + (particle (id 84866) (pos 68 20 0 ) (velocity 0 0 0 ) ) + (particle (id 84946) (pos 743 30 0 ) (velocity 0 0 0 ) ) + (particle (id 84947) (pos 748 56 0 ) (velocity 0 0 0 ) ) + (particle (id 85289) (pos 405 84 0 ) (velocity 0 0 0 ) ) + (particle (id 85778) (pos 203 411 0 ) (velocity 0 0 0 ) ) + (particle (id 85779) (pos 157 377 0 ) (velocity 0 0 0 ) ) + (particle (id 85780) (pos 570 410 0 ) (velocity 0 0 0 ) ) + (particle (id 85977) (pos 173 494 0 ) (velocity 0 0 0 ) ) + (particle (id 85978) (pos 102 430 0 ) (velocity 0 0 0 ) ) + (particle (id 85979) (pos 601 485 0 ) (velocity 0 0 0 ) ) + (particle (id 85980) (pos 688 413 0 ) (velocity 0 0 0 ) ) + (particle (id 86559) (pos 595 577 0 ) (velocity 0 0 0 ) ) + (particle (id 86560) (pos 180 579 0 ) (velocity 0 0 0 ) ) + (particle (id 86656) (pos 62 327 0 ) (velocity 0 0 0 ) ) + (particle (id 87145) (pos 55 418 0 ) (velocity 0 0 0 ) ) + (particle (id 87338) (pos 459 257 0 ) (velocity 0 0 0 ) ) + (particle (id 87339) (pos 356 248 0 ) (velocity 0 0 0 ) ) + (particle (id 88122) (pos 262 151 0 ) (velocity 0 0 0 ) ) + (particle (id 88123) (pos 243 171 0 ) (velocity 0 0 0 ) ) + (particle (id 88124) (pos 198 148 0 ) (velocity 0 0 0 ) ) + (particle (id 88125) (pos 218 123 0 ) (velocity 0 0 0 ) ) + (particle (id 88126) (pos 262 190 0 ) (velocity 0 0 0 ) ) + (particle (id 88127) (pos 289 154 0 ) (velocity 0 0 0 ) ) + (particle (id 88128) (pos 155 122 0 ) (velocity 0 0 0 ) ) + (particle (id 88129) (pos 177 96 0 ) (velocity 0 0 0 ) ) + (particle (id 88130) (pos 153 80 0 ) (velocity 0 0 0 ) ) + (particle (id 88131) (pos 119 107 0 ) (velocity 0 0 0 ) ) + (particle (id 88557) (pos 253 383 0 ) (velocity 0 0 0 ) ) + (particle (id 88558) (pos 510 391 0 ) (velocity 0 0 0 ) ) + (particle (id 88559) (pos 455 349 0 ) (velocity 0 0 0 ) ) + (particle (id 88560) (pos 385 337 0 ) (velocity 0 0 0 ) ) + (particle (id 88561) (pos 325 353 0 ) (velocity 0 0 0 ) ) + (particle (id 88678) (pos 765 425 0 ) (velocity 0 0 0 ) ) + (particle (id 89026) (pos 145 567 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 82581)(second 82582)) + (spring (first 82582)(second 82583)) + (spring (first 82583)(second 82584)) + (spring (first 82584)(second 82585)) + (spring (first 82585)(second 82586)) + (spring (first 82586)(second 82587)) + (spring (first 82587)(second 82588)) + (spring (first 82588)(second 82589)) + (spring (first 82589)(second 82581)) + (spring (first 82581)(second 82588)) + (spring (first 82588)(second 82582)) + (spring (first 82582)(second 82587)) + (spring (first 82587)(second 82583)) + (spring (first 82583)(second 82586)) + (spring (first 82586)(second 82584)) + (spring (first 82590)(second 82591)) + (spring (first 82591)(second 82592)) + (spring (first 82592)(second 82593)) + (spring (first 82593)(second 82594)) + (spring (first 82594)(second 82595)) + (spring (first 82595)(second 82596)) + (spring (first 82596)(second 82597)) + (spring (first 82597)(second 82598)) + (spring (first 82598)(second 82590)) + (spring (first 82590)(second 82597)) + (spring (first 82597)(second 82591)) + (spring (first 82591)(second 82596)) + (spring (first 82596)(second 82592)) + (spring (first 82592)(second 82595)) + (spring (first 82595)(second 82593)) + (spring (first 82587)(second 82599)) + (spring (first 82599)(second 82600)) + (spring (first 82600)(second 82601)) + (spring (first 82601)(second 82602)) + (spring (first 82602)(second 82603)) + (spring (first 82603)(second 82604)) + (spring (first 82604)(second 82605)) + (spring (first 82605)(second 82596)) + (spring (first 82597)(second 82605)) + (spring (first 82605)(second 82595)) + (spring (first 82588)(second 82599)) + (spring (first 82599)(second 82586)) + (spring (first 82599)(second 82633)) + (spring (first 82633)(second 82600)) + (spring (first 82599)(second 82600)) + (spring (first 82600)(second 82634)) + (spring (first 82634)(second 82599)) + (spring (first 82634)(second 82635)) + (spring (first 82635)(second 82601)) + (spring (first 82601)(second 82636)) + (spring (first 82636)(second 82633)) + (spring (first 82636)(second 82637)) + (spring (first 82637)(second 82602)) + (spring (first 82602)(second 82638)) + (spring (first 82638)(second 82635)) + (spring (first 82637)(second 82639)) + (spring (first 82639)(second 82603)) + (spring (first 82603)(second 82640)) + (spring (first 82640)(second 82638)) + (spring (first 82640)(second 82641)) + (spring (first 82641)(second 82604)) + (spring (first 82604)(second 82642)) + (spring (first 82642)(second 82639)) + (spring (first 82642)(second 82605)) + (spring (first 82605)(second 82643)) + (spring (first 82643)(second 82641)) + (spring (first 82641)(second 82605)) + (spring (first 82633)(second 82601)) + (spring (first 82601)(second 82638)) + (spring (first 82638)(second 82603)) + (spring (first 82603)(second 82642)) + (spring (first 82634)(second 82601)) + (spring (first 82603)(second 82641)) + (spring (first 82603)(second 82637)) + (spring (first 82637)(second 82601)) + (spring (first 82600)(second 82636)) + (spring (first 82636)(second 82602)) + (spring (first 82602)(second 82639)) + (spring (first 82639)(second 82604)) + (spring (first 82586)(second 82752)) + (spring (first 82752)(second 82753)) + (spring (first 82753)(second 82588)) + (spring (first 82753)(second 82587)) + (spring (first 82587)(second 82752)) + (spring (first 82752)(second 82599)) + (spring (first 82599)(second 82753)) + (spring (first 82754)(second 82755)) + (spring (first 82755)(second 82595)) + (spring (first 82754)(second 82597)) + (spring (first 82754)(second 82596)) + (spring (first 82596)(second 82755)) + (spring (first 82755)(second 82605)) + (spring (first 82754)(second 82605)) + (spring (first 82635)(second 82756)) + (spring (first 82756)(second 82757)) + (spring (first 82757)(second 82640)) + (spring (first 82757)(second 82638)) + (spring (first 82638)(second 82756)) + (spring (first 82757)(second 82758)) + (spring (first 82758)(second 82759)) + (spring (first 82759)(second 82756)) + (spring (first 82759)(second 82757)) + (spring (first 82758)(second 82756)) + (spring (first 82758)(second 82760)) + (spring (first 82760)(second 82761)) + (spring (first 82761)(second 82759)) + (spring (first 82761)(second 82762)) + (spring (first 82762)(second 82763)) + (spring (first 82763)(second 82760)) + (spring (first 82762)(second 82760)) + (spring (first 82763)(second 82761)) + (spring (first 82761)(second 82758)) + (spring (first 82760)(second 82756)) + (spring (first 82757)(second 82761)) + (spring (first 82760)(second 82759)) + (spring (first 82762)(second 82861)) + (spring (first 82763)(second 82862)) + (spring (first 82862)(second 82863)) + (spring (first 82863)(second 82864)) + (spring (first 82864)(second 82763)) + (spring (first 82864)(second 82865)) + (spring (first 82865)(second 82762)) + (spring (first 82865)(second 82763)) + (spring (first 82864)(second 82762)) + (spring (first 82865)(second 82866)) + (spring (first 82866)(second 82861)) + (spring (first 82861)(second 82865)) + (spring (first 82862)(second 82864)) + (spring (first 82864)(second 82867)) + (spring (first 82867)(second 82865)) + (spring (first 82866)(second 82867)) + (spring (first 82867)(second 82863)) + (spring (first 82863)(second 82763)) + (spring (first 82866)(second 82762)) + (spring (first 82586)(second 83160)) + (spring (first 83160)(second 83161)) + (spring (first 83161)(second 82585)) + (spring (first 82585)(second 83160)) + (spring (first 82595)(second 83162)) + (spring (first 83162)(second 83163)) + (spring (first 83163)(second 82594)) + (spring (first 83163)(second 82594)) + (spring (first 82594)(second 82595)) + (spring (first 82595)(second 83163)) + (spring (first 82594)(second 83163)) + (spring (first 82583)(second 83288)) + (spring (first 83288)(second 82584)) + (spring (first 82583)(second 83289)) + (spring (first 83289)(second 82582)) + (spring (first 82582)(second 83290)) + (spring (first 83290)(second 82581)) + (spring (first 83290)(second 82588)) + (spring (first 82587)(second 83289)) + (spring (first 83288)(second 82586)) + (spring (first 82583)(second 82752)) + (spring (first 82582)(second 82753)) + (spring (first 82593)(second 83291)) + (spring (first 83291)(second 82592)) + (spring (first 82592)(second 83292)) + (spring (first 83292)(second 82591)) + (spring (first 82591)(second 83293)) + (spring (first 83293)(second 82590)) + (spring (first 83293)(second 82597)) + (spring (first 82596)(second 83292)) + (spring (first 83291)(second 82595)) + (spring (first 82592)(second 82755)) + (spring (first 82591)(second 82754)) + (spring (first 82861)(second 83359)) + (spring (first 83359)(second 83360)) + (spring (first 83360)(second 82866)) + (spring (first 82866)(second 83359)) + (spring (first 83360)(second 82861)) + (spring (first 82863)(second 83361)) + (spring (first 83361)(second 83362)) + (spring (first 83362)(second 82862)) + (spring (first 82862)(second 83361)) + (spring (first 82863)(second 83362)) + (spring (first 83360)(second 83363)) + (spring (first 83363)(second 83364)) + (spring (first 83364)(second 83359)) + (spring (first 83360)(second 83364)) + (spring (first 83363)(second 83359)) + (spring (first 83361)(second 83365)) + (spring (first 83365)(second 83366)) + (spring (first 83366)(second 83362)) + (spring (first 83361)(second 83366)) + (spring (first 83367)(second 83362)) + (spring (first 83365)(second 83367)) + (spring (first 83367)(second 83366)) + (spring (first 83367)(second 83361)) + (spring (first 83360)(second 82867)) + (spring (first 82867)(second 82762)) + (spring (first 82867)(second 82763)) + (spring (first 82867)(second 83361)) + (spring (first 82867)(second 83365)) + (spring (first 83363)(second 82867)) + (spring (first 82760)(second 82863)) + (spring (first 82761)(second 82866)) + (spring (first 83364)(second 84865)) + (spring (first 84865)(second 84866)) + (spring (first 84866)(second 83363)) + (spring (first 84865)(second 83363)) + (spring (first 84866)(second 83364)) + (spring (first 83365)(second 84946)) + (spring (first 84946)(second 84947)) + (spring (first 84947)(second 83366)) + (spring (first 83365)(second 84947)) + (spring (first 84946)(second 83366)) + (spring (first 82763)(second 85289)) + (spring (first 85289)(second 82762)) + (spring (first 85289)(second 82861)) + (spring (first 85289)(second 82862)) + (spring (first 85289)(second 83362)) + (spring (first 85289)(second 83359)) + (spring (first 85289)(second 83364)) + (spring (first 85289)(second 83366)) + (spring (first 85289)(second 84947)) + (spring (first 85289)(second 84865)) + (spring (first 82599)(second 85778)) + (spring (first 85778)(second 82633)) + (spring (first 82599)(second 85779)) + (spring (first 85779)(second 82634)) + (spring (first 82642)(second 85780)) + (spring (first 85780)(second 82605)) + (spring (first 82599)(second 85977)) + (spring (first 85977)(second 82588)) + (spring (first 82586)(second 85978)) + (spring (first 85978)(second 82599)) + (spring (first 82605)(second 85979)) + (spring (first 85979)(second 82597)) + (spring (first 82605)(second 85980)) + (spring (first 85980)(second 82595)) + (spring (first 85978)(second 82752)) + (spring (first 82753)(second 85977)) + (spring (first 85980)(second 82755)) + (spring (first 85979)(second 82754)) + (spring (first 82584)(second 83160)) + (spring (first 82590)(second 86559)) + (spring (first 86559)(second 82597)) + (spring (first 86559)(second 82598)) + (spring (first 82588)(second 86560)) + (spring (first 86560)(second 82581)) + (spring (first 86560)(second 82589)) + (spring (first 82584)(second 86656)) + (spring (first 86656)(second 82586)) + (spring (first 85779)(second 83288)) + (spring (first 86656)(second 83288)) + (spring (first 86559)(second 82591)) + (spring (first 82590)(second 82754)) + (spring (first 83292)(second 82595)) + (spring (first 83289)(second 85978)) + (spring (first 83288)(second 82753)) + (spring (first 83160)(second 87145)) + (spring (first 87145)(second 85978)) + (spring (first 87145)(second 82584)) + (spring (first 87145)(second 82586)) + (spring (first 82757)(second 87338)) + (spring (first 87338)(second 82640)) + (spring (first 87338)(second 82638)) + (spring (first 87339)(second 82756)) + (spring (first 87339)(second 82638)) + (spring (first 87339)(second 82635)) + (spring (first 82601)(second 87339)) + (spring (first 87339)(second 82602)) + (spring (first 82602)(second 87338)) + (spring (first 87338)(second 82603)) + (spring (first 82638)(second 88122)) + (spring (first 88122)(second 88123)) + (spring (first 88123)(second 82638)) + (spring (first 88123)(second 88124)) + (spring (first 88124)(second 88125)) + (spring (first 88125)(second 88122)) + (spring (first 88122)(second 88124)) + (spring (first 88125)(second 88126)) + (spring (first 88126)(second 88123)) + (spring (first 88126)(second 88124)) + (spring (first 88126)(second 88127)) + (spring (first 88127)(second 88122)) + (spring (first 88127)(second 88125)) + (spring (first 88124)(second 88128)) + (spring (first 88128)(second 88129)) + (spring (first 88129)(second 88125)) + (spring (first 88129)(second 88124)) + (spring (first 88128)(second 88125)) + (spring (first 88129)(second 88130)) + (spring (first 88130)(second 88131)) + (spring (first 88131)(second 88128)) + (spring (first 88131)(second 88129)) + (spring (first 88130)(second 88128)) + (spring (first 83291)(second 83292)) + (spring (first 83292)(second 83293)) + (spring (first 83290)(second 83289)) + (spring (first 83288)(second 83289)) + (spring (first 85778)(second 88557)) + (spring (first 88557)(second 82636)) + (spring (first 88557)(second 82633)) + (spring (first 85780)(second 88558)) + (spring (first 88558)(second 82639)) + (spring (first 88558)(second 82642)) + (spring (first 88558)(second 82639)) + (spring (first 88559)(second 88558)) + (spring (first 88559)(second 82637)) + (spring (first 88559)(second 82639)) + (spring (first 88559)(second 88560)) + (spring (first 88560)(second 82636)) + (spring (first 82637)(second 88560)) + (spring (first 88560)(second 88561)) + (spring (first 88561)(second 82636)) + (spring (first 88561)(second 88557)) + (spring (first 82633)(second 88561)) + (spring (first 82593)(second 82594)) + (spring (first 88678)(second 82593)) + (spring (first 88678)(second 82594)) + (spring (first 88678)(second 83163)) + (spring (first 88678)(second 82595)) + (spring (first 88678)(second 85980)) + (spring (first 82605)(second 88678)) + (spring (first 88678)(second 82755)) + (spring (first 86560)(second 89026)) + (spring (first 89026)(second 82588)) + (spring (first 89026)(second 82581)) + (spring (first 89026)(second 83290)) + (spring (first 82582)(second 89026)) + (spring (first 89026)(second 82753)) + (spring (first 86560)(second 82587)) + (spring (first 82589)(second 85977)) + ) +) diff --git a/examples/pendulum.construo b/examples/pendulum.construo new file mode 100644 index 0000000..3ed174e --- /dev/null +++ b/examples/pendulum.construo @@ -0,0 +1,35 @@ +;; Written by construo 0.2.1rc2 +(construo-scene + (version 3) + (author "Pasi Kallinen" "") + (particles + (particle (id 0) (pos 656.630432 130.138901) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 1) (pos 677.495361 -834.314758) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 677.495544 18.856321) (velocity -507.729828 -173.880493) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 700.678894 134.775742) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 4) (pos 679.813721 -250.078598) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 676.771912 -500.957581) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 671.448059 -894.009644) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 625.176025 -826.915222) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 696.897644 -766.761658) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 726.974426 -824.601624) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 964.679321) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 853.171082) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 3) (length 969.367798) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 4) (length 584.240723) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 5) (length 250.897415) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 81.503143) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 93.607918) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 9) (length 65.192596) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 6) (length 88.885605) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 1) (length 60.000408) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 7) (length 52.840004) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 9) (length 50.423435) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 8) (length 70.284210) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + )) + +;; EOF ;; diff --git a/examples/penguin.construo b/examples/penguin.construo new file mode 100644 index 0000000..6da3c41 --- /dev/null +++ b/examples/penguin.construo @@ -0,0 +1,318 @@ + +(construo-scene + (particles + (particle (id 17155) (pos 262.736 122.768 0 ) (velocity 0.898926 -0.771695 0 ) ) + (particle (id 17156) (pos 263.85 154.801 0 ) (velocity 0.300406 -0.348626 0 ) ) + (particle (id 17157) (pos 310.794 157.131 0 ) (velocity 0.434029 -0.0112796 0 ) ) + (particle (id 17158) (pos 312.549 130.199 0 ) (velocity 0.437461 -0.143093 0 ) ) + (particle (id 17159) (pos 260.85 187.702 0 ) (velocity 0.626231 -0.0904307 0 ) ) + (particle (id 17160) (pos 318.911 189.289 0 ) (velocity 0.250537 0.393809 0 ) ) + (particle (id 17161) (pos 361.879 190.53 0 ) (velocity -0.0870696 0.237337 0 ) ) + (particle (id 17162) (pos 362.849 157.571 0 ) (velocity 0.744462 0.210195 0 ) ) + (particle (id 17163) (pos 366.72 124.684 0 ) (velocity -0.0219984 -0.0844393 0 ) ) + (particle (id 17164) (pos 266.893 219.887 0 ) (velocity -0.0148663 0.121224 0 ) ) + (particle (id 17165) (pos 307.981 219.789 0 ) (velocity -0.0522047 0.366894 0 ) ) + (particle (id 17166) (pos 369.985 226.703 0 ) (velocity 0.0179877 0.103614 0 ) ) + (particle (id 17231) (pos 235.527 260.244 0 ) (velocity 0.138965 0.598227 0 ) ) + (particle (id 17232) (pos 270.837 292.988 0 ) (velocity -0.109716 0.268052 0 ) ) + (particle (id 17233) (pos 294.622 264.542 0 ) (velocity 0.0213293 0.139359 0 ) ) + (particle (id 17234) (pos 312.068 288.924 0 ) (velocity 0.0665858 -0.356215 0 ) ) + (particle (id 17235) (pos 324.848 264.25 0 ) (velocity 0.278248 -0.086771 0 ) ) + (particle (id 17236) (pos 369.068 292.922 0 ) (velocity 0.836613 -0.261386 0 ) ) + (particle (id 17237) (pos 386.374 262.344 0 ) (velocity 0.574548 -0.330206 0 ) ) + (particle (id 17466) (pos 294.318 316.45 0 ) (velocity 0.230225 -0.138234 0 ) ) + (particle (id 17467) (pos 339.954 320.964 0 ) (velocity 0.378022 -0.650604 0 ) ) + (particle (id 17468) (pos 248.42 312.65 0 ) (velocity 0.247164 1.03724 0 ) ) + (particle (id 17469) (pos 226.836 289.21 0 ) (velocity -0.0723923 1.02404 0 ) ) + (particle (id 17470) (pos 397.865 317.876 0 ) (velocity 0.71966 -0.0035067 0 ) ) + (particle (id 17471) (pos 418.946 292.778 0 ) (velocity 0.905975 0.098363 0 ) ) + (particle (id 17472) (pos 268.96 338.987 0 ) (velocity 0.87833 0.428693 0 ) ) + (particle (id 17473) (pos 321.284 344.525 0 ) (velocity 0.147529 -0.430197 0 ) ) + (particle (id 17474) (pos 378.51 349.048 0 ) (velocity -0.104111 -0.441756 0 ) ) + (particle (id 17475) (pos 422.114 352.389 0 ) (velocity -0.0289931 0.235192 0 ) ) + (particle (id 17476) (pos 438.985 333.166 0 ) (velocity 0.0896536 0.725726 0 ) ) + (particle (id 17477) (pos 229.125 336.511 0 ) (velocity 0.582501 0.969834 0 ) ) + (particle (id 17478) (pos 197.525 311.146 0 ) (velocity -0.212762 1.56005 0 ) ) + (particle (id 17479) (pos 182.222 334.258 0 ) (velocity 0.575779 2.65647 0 ) ) + (particle (id 17480) (pos 462.65 358.687 0 ) (velocity -0.42364 1.66344 0 ) ) + (particle (id 17865) (pos 161.266 370.596 0 ) (velocity 2.10227 3.94732 0 ) ) + (particle (id 17866) (pos 208.11 350.338 0 ) (velocity 1.49659 1.62014 0 ) ) + (particle (id 17867) (pos 494.648 396.484 0 ) (velocity -1.82823 3.16897 0 ) ) + (particle (id 17868) (pos 442.752 375.762 0 ) (velocity -0.956948 1.3007 0 ) ) + (particle (id 18023) (pos 128.524 408.83 0 ) (velocity 4.20139 6.09228 0 ) ) + (particle (id 18024) (pos 135.36 356.624 0 ) (velocity 1.64394 5.35848 0 ) ) + (particle (id 18025) (pos 82.569 415.959 0 ) (velocity 4.20633 8.28713 0 ) ) + (particle (id 18026) (pos 91.703 458.979 0 ) (velocity 6.953 7.93004 0 ) ) + (particle (id 18027) (pos 552.803 393.003 0 ) (velocity -1.59651 4.8043 0 ) ) + (particle (id 18028) (pos 551.734 432.022 0 ) (velocity -3.17603 5.12589 0 ) ) + (particle (id 18029) (pos 570.491 473.165 0 ) (velocity -3.84667 5.57939 0 ) ) + (particle (id 18030) (pos 580.292 422.591 0 ) (velocity -2.61697 6.05662 0 ) ) + (particle (id 18451) (pos 270.174 383.918 0 ) (velocity 0.02684 -0.0927539 0 ) ) + (particle (id 18452) (pos 338.822 386.486 0 ) (velocity 0.0841405 -0.19883 0 ) ) + (particle (id 18453) (pos 237.532 402.254 0 ) (velocity 0.0993228 0.180959 0 ) ) + (particle (id 18454) (pos 384.046 394.824 0 ) (velocity 0.0945014 0.0332887 0 ) ) + (particle (id 18707) (pos 100.44 371.912 0 ) (velocity 2.60675 8.00928 0 ) ) + (particle (id 18708) (pos 133.637 441.846 0 ) (velocity 5.87681 5.65599 0 ) ) + (particle (id 18709) (pos 163.428 402.636 0 ) (velocity 3.76051 4.03588 0 ) ) + (particle (id 18710) (pos 415.073 405.374 0 ) (velocity -1.61028 0.840452 0 ) ) + (particle (id 18711) (pos 475.979 426.568 0 ) (velocity -2.48946 2.58425 0 ) ) + (particle (id 18712) (pos 606.567 454.142 0 ) (velocity -3.20121 6.54718 0 ) ) + (particle (id 18713) (pos 593.429 493.484 0 ) (velocity -4.07441 6.28543 0 ) ) + (particle (id 19041) (pos 255.828 472.255 0 ) (velocity -0.202385 -0.255969 0 ) ) + (particle (id 19042) (pos 362.424 468.125 0 ) (velocity -0.096207 -0.161947 0 ) ) + (particle (id 19043) (pos 298.748 575.724 0 ) (velocity -0.0107638 0.105929 0 ) ) + (particle (id 19516) (pos 254.109 526.094 0 ) (velocity -0.0615189 0.375121 0 ) ) + (particle (id 19517) (pos 354.463 532.678 0 ) (velocity 0.0657622 0.0545019 0 ) ) + (particle (id 20890) (pos 489.721 338.055 0 ) (velocity -0.00327847 2.10589 0 ) ) + (particle (id 20891) (pos 457.394 302.085 0 ) (velocity 0.277641 1.61474 0 ) ) + (particle (id 21939) (pos 233.233 600 0 ) (velocity 0.00636903 -0.213464 0 ) ) + (particle (id 21940) (pos 366.259 600 0 ) (velocity 0.00549263 -0.449509 0 ) ) + (particle (id 21941) (pos 434.275 600 0 ) (velocity 0.00344289 -0.00745446 0 ) ) + (particle (id 21942) (pos 172.185 600 0 ) (velocity 0.00513477 -0.0136919 0 ) ) + (particle (id 22173) (pos 315.564 96.2688 0 ) (velocity 1.06611 -0.323306 0 ) ) + (particle (id 22174) (pos 222.773 156.677 0 ) (velocity 0.743015 1.14597 0 ) ) + (particle (id 23485) (pos 380.599 572.608 0 ) (velocity -0.00715572 -0.0940827 0 ) ) + (particle (id 23486) (pos 215.256 579.156 0 ) (velocity 0.119554 -0.000119746 0 ) ) + (particle (id 23559) (pos 264.652 257.989 0 ) (velocity -0.231998 0.402616 0 ) ) + (particle (id 23710) (pos 201.396 401.401 0 ) (velocity 3.31306 2.00624 0 ) ) + (particle (id 23711) (pos 168.565 428.646 0 ) (velocity 4.98404 3.84127 0 ) ) + (particle (id 23712) (pos 106.808 487.952 0 ) (velocity 8.84235 7.23261 0 ) ) + (particle (id 23793) (pos 303.917 503.044 0 ) (velocity 0.0410419 -0.0915114 0 ) ) + ) + (springs + (spring (first 17155)(second 17156)) + (spring (first 17157)(second 17158)) + (spring (first 17155)(second 17158)) + (spring (first 17157)(second 17156)) + (spring (first 17156)(second 17158)) + (spring (first 17155)(second 17157)) + (spring (first 17156)(second 17159)) + (spring (first 17159)(second 17160)) + (spring (first 17160)(second 17157)) + (spring (first 17157)(second 17159)) + (spring (first 17156)(second 17160)) + (spring (first 17160)(second 17161)) + (spring (first 17161)(second 17162)) + (spring (first 17162)(second 17157)) + (spring (first 17158)(second 17162)) + (spring (first 17163)(second 17158)) + (spring (first 17163)(second 17162)) + (spring (first 17163)(second 17157)) + (spring (first 17157)(second 17161)) + (spring (first 17162)(second 17160)) + (spring (first 17159)(second 17164)) + (spring (first 17164)(second 17165)) + (spring (first 17165)(second 17160)) + (spring (first 17165)(second 17166)) + (spring (first 17166)(second 17161)) + (spring (first 17160)(second 17166)) + (spring (first 17161)(second 17165)) + (spring (first 17165)(second 17159)) + (spring (first 17160)(second 17164)) + (spring (first 17164)(second 17231)) + (spring (first 17231)(second 17232)) + (spring (first 17232)(second 17233)) + (spring (first 17233)(second 17164)) + (spring (first 17165)(second 17233)) + (spring (first 17233)(second 17234)) + (spring (first 17234)(second 17235)) + (spring (first 17235)(second 17165)) + (spring (first 17235)(second 17166)) + (spring (first 17235)(second 17236)) + (spring (first 17236)(second 17237)) + (spring (first 17237)(second 17166)) + (spring (first 17231)(second 17233)) + (spring (first 17233)(second 17235)) + (spring (first 17235)(second 17237)) + (spring (first 17232)(second 17466)) + (spring (first 17466)(second 17234)) + (spring (first 17234)(second 17467)) + (spring (first 17467)(second 17236)) + (spring (first 17232)(second 17468)) + (spring (first 17468)(second 17469)) + (spring (first 17469)(second 17231)) + (spring (first 17236)(second 17470)) + (spring (first 17470)(second 17471)) + (spring (first 17470)(second 17471)) + (spring (first 17471)(second 17237)) + (spring (first 17236)(second 17471)) + (spring (first 17236)(second 17234)) + (spring (first 17234)(second 17232)) + (spring (first 17232)(second 17469)) + (spring (first 17468)(second 17472)) + (spring (first 17472)(second 17466)) + (spring (first 17466)(second 17473)) + (spring (first 17473)(second 17467)) + (spring (first 17467)(second 17474)) + (spring (first 17474)(second 17470)) + (spring (first 17470)(second 17475)) + (spring (first 17475)(second 17476)) + (spring (first 17476)(second 17471)) + (spring (first 17470)(second 17476)) + (spring (first 17470)(second 17467)) + (spring (first 17467)(second 17466)) + (spring (first 17466)(second 17468)) + (spring (first 17468)(second 17477)) + (spring (first 17477)(second 17478)) + (spring (first 17478)(second 17469)) + (spring (first 17478)(second 17468)) + (spring (first 17477)(second 17472)) + (spring (first 17472)(second 17473)) + (spring (first 17473)(second 17474)) + (spring (first 17474)(second 17475)) + (spring (first 17477)(second 17479)) + (spring (first 17479)(second 17478)) + (spring (first 17475)(second 17480)) + (spring (first 17480)(second 17476)) + (spring (first 17479)(second 17865)) + (spring (first 17865)(second 17866)) + (spring (first 17866)(second 17472)) + (spring (first 17480)(second 17867)) + (spring (first 17867)(second 17868)) + (spring (first 17868)(second 17474)) + (spring (first 17865)(second 18023)) + (spring (first 18023)(second 18024)) + (spring (first 18024)(second 17479)) + (spring (first 18024)(second 18025)) + (spring (first 18025)(second 18023)) + (spring (first 18025)(second 18026)) + (spring (first 18026)(second 18023)) + (spring (first 17480)(second 18027)) + (spring (first 18027)(second 17867)) + (spring (first 17867)(second 18028)) + (spring (first 18028)(second 18027)) + (spring (first 18028)(second 18029)) + (spring (first 18029)(second 18030)) + (spring (first 18030)(second 18028)) + (spring (first 18030)(second 18027)) + (spring (first 17155)(second 17156)) + (spring (first 17156)(second 17159)) + (spring (first 17159)(second 17164)) + (spring (first 17164)(second 17165)) + (spring (first 17165)(second 17166)) + (spring (first 17166)(second 17161)) + (spring (first 17161)(second 17162)) + (spring (first 17162)(second 17163)) + (spring (first 17163)(second 17158)) + (spring (first 17158)(second 17155)) + (spring (first 17164)(second 18451)) + (spring (first 18451)(second 17165)) + (spring (first 17165)(second 18452)) + (spring (first 18452)(second 17166)) + (spring (first 17231)(second 18453)) + (spring (first 18453)(second 17233)) + (spring (first 17235)(second 18454)) + (spring (first 18454)(second 17237)) + (spring (first 18024)(second 17478)) + (spring (first 18024)(second 18707)) + (spring (first 18707)(second 18025)) + (spring (first 18026)(second 18708)) + (spring (first 18708)(second 18023)) + (spring (first 18023)(second 18709)) + (spring (first 18709)(second 17865)) + (spring (first 18709)(second 17866)) + (spring (first 18708)(second 18709)) + (spring (first 18708)(second 18025)) + (spring (first 18707)(second 18023)) + (spring (first 18024)(second 18709)) + (spring (first 17865)(second 18024)) + (spring (first 18024)(second 17866)) + (spring (first 17866)(second 17478)) + (spring (first 17475)(second 17867)) + (spring (first 17867)(second 17868)) + (spring (first 17474)(second 18710)) + (spring (first 17868)(second 18710)) + (spring (first 17867)(second 18710)) + (spring (first 17868)(second 17475)) + (spring (first 17868)(second 17480)) + (spring (first 18710)(second 17867)) + (spring (first 18710)(second 18711)) + (spring (first 17867)(second 18711)) + (spring (first 18711)(second 18028)) + (spring (first 18711)(second 18029)) + (spring (first 18711)(second 18030)) + (spring (first 18030)(second 18712)) + (spring (first 18712)(second 18029)) + (spring (first 18029)(second 18713)) + (spring (first 18713)(second 18712)) + (spring (first 18453)(second 19041)) + (spring (first 19041)(second 18451)) + (spring (first 18452)(second 19042)) + (spring (first 19042)(second 18454)) + (spring (first 19041)(second 19043)) + (spring (first 19043)(second 19042)) + (spring (first 19042)(second 19041)) + (spring (first 19041)(second 19516)) + (spring (first 19516)(second 19043)) + (spring (first 19043)(second 19517)) + (spring (first 19517)(second 19042)) + (spring (first 19517)(second 18451)) + (spring (first 19516)(second 18452)) + (spring (first 18453)(second 18451)) + (spring (first 18452)(second 18454)) + (spring (first 18451)(second 19043)) + (spring (first 19043)(second 18452)) + (spring (first 18451)(second 18452)) + (spring (first 18027)(second 20890)) + (spring (first 20890)(second 17480)) + (spring (first 20890)(second 17867)) + (spring (first 20890)(second 17476)) + (spring (first 20890)(second 20891)) + (spring (first 20891)(second 17471)) + (spring (first 20891)(second 17237)) + (spring (first 20891)(second 17476)) + (spring (first 19043)(second 21939)) + (spring (first 21939)(second 19516)) + (spring (first 19043)(second 21940)) + (spring (first 21940)(second 19517)) + (spring (first 21940)(second 21941)) + (spring (first 21941)(second 19517)) + (spring (first 21939)(second 21942)) + (spring (first 21942)(second 19516)) + (spring (first 17155)(second 22173)) + (spring (first 22173)(second 17158)) + (spring (first 22173)(second 17163)) + (spring (first 17156)(second 22174)) + (spring (first 22174)(second 17158)) + (spring (first 22174)(second 17160)) + (spring (first 21940)(second 21939)) + (spring (first 21939)(second 19042)) + (spring (first 19041)(second 21940)) + (spring (first 19517)(second 18453)) + (spring (first 18454)(second 19516)) + (spring (first 17865)(second 17472)) + (spring (first 17865)(second 17466)) + (spring (first 17231)(second 17478)) + (spring (first 18024)(second 17233)) + (spring (first 17867)(second 17471)) + (spring (first 18711)(second 17470)) + (spring (first 17480)(second 17234)) + (spring (first 20891)(second 17235)) + (spring (first 18027)(second 17236)) + (spring (first 21941)(second 23485)) + (spring (first 23485)(second 19517)) + (spring (first 23485)(second 21940)) + (spring (first 21939)(second 23486)) + (spring (first 23486)(second 21942)) + (spring (first 23486)(second 19516)) + (spring (first 23486)(second 19043)) + (spring (first 19043)(second 23485)) + (spring (first 23559)(second 17478)) + (spring (first 23559)(second 17233)) + (spring (first 23559)(second 17164)) + (spring (first 17866)(second 23710)) + (spring (first 23710)(second 18709)) + (spring (first 23710)(second 23711)) + (spring (first 23711)(second 18708)) + (spring (first 23711)(second 18709)) + (spring (first 18026)(second 23712)) + (spring (first 23712)(second 18708)) + (spring (first 23711)(second 23712)) + (spring (first 23485)(second 19517)) + (spring (first 23793)(second 19517)) + (spring (first 23793)(second 19516)) + (spring (first 23793)(second 19043)) + (spring (first 23793)(second 21939)) + (spring (first 23793)(second 21940)) + ) +) diff --git a/examples/penguin2.construo b/examples/penguin2.construo new file mode 100644 index 0000000..4b173d8 --- /dev/null +++ b/examples/penguin2.construo @@ -0,0 +1,318 @@ + +(construo-scene + (particles + (particle (id 17155) (pos 253 118 0 ) (velocity 0 0 0 ) ) + (particle (id 17156) (pos 255 150 0 ) (velocity 0 0 0 ) ) + (particle (id 17157) (pos 302 151 0 ) (velocity 0 0 0 ) ) + (particle (id 17158) (pos 303 124 0 ) (velocity 0 0 0 ) ) + (particle (id 17159) (pos 253 183 0 ) (velocity 0 0 0 ) ) + (particle (id 17160) (pos 311 183 0 ) (velocity 0 0 0 ) ) + (particle (id 17161) (pos 354 183 0 ) (velocity 0 0 0 ) ) + (particle (id 17162) (pos 354 150 0 ) (velocity 0 0 0 ) ) + (particle (id 17163) (pos 357 117 0 ) (velocity 0 0 0 ) ) + (particle (id 17164) (pos 260 215 0 ) (velocity 0 0 0 ) ) + (particle (id 17165) (pos 301 214 0 ) (velocity 0 0 0 ) ) + (particle (id 17166) (pos 363 219 0 ) (velocity 0 0 0 ) ) + (particle (id 17231) (pos 230 256 0 ) (velocity 0 0 0 ) ) + (particle (id 17232) (pos 266 288 0 ) (velocity 0 0 0 ) ) + (particle (id 17233) (pos 289 259 0 ) (velocity 0 0 0 ) ) + (particle (id 17234) (pos 307 283 0 ) (velocity 0 0 0 ) ) + (particle (id 17235) (pos 319 258 0 ) (velocity 0 0 0 ) ) + (particle (id 17236) (pos 364 285 0 ) (velocity 0 0 0 ) ) + (particle (id 17237) (pos 380 254 0 ) (velocity 0 0 0 ) ) + (particle (id 17466) (pos 290 311 0 ) (velocity 0 0 0 ) ) + (particle (id 17467) (pos 336 314 0 ) (velocity 0 0 0 ) ) + (particle (id 17468) (pos 244 308 0 ) (velocity 0 0 0 ) ) + (particle (id 17469) (pos 222 285 0 ) (velocity 0 0 0 ) ) + (particle (id 17470) (pos 394 308 0 ) (velocity 0 0 0 ) ) + (particle (id 17471) (pos 414 282 0 ) (velocity 0 0 0 ) ) + (particle (id 17472) (pos 265 334 0 ) (velocity 0 0 0 ) ) + (particle (id 17473) (pos 318 338 0 ) (velocity 0 0 0 ) ) + (particle (id 17474) (pos 376 340 0 ) (velocity 0 0 0 ) ) + (particle (id 17475) (pos 420 341 0 ) (velocity 0 0 0 ) ) + (particle (id 17476) (pos 436 321 0 ) (velocity 0 0 0 ) ) + (particle (id 17477) (pos 225 332 0 ) (velocity 0 0 0 ) ) + (particle (id 17478) (pos 193 307 0 ) (velocity 0 0 0 ) ) + (particle (id 17479) (pos 178 330 0 ) (velocity 0 0 0 ) ) + (particle (id 17480) (pos 461 345 0 ) (velocity 0 0 0 ) ) + (particle (id 17865) (pos 157 366 0 ) (velocity 0 0 0 ) ) + (particle (id 17866) (pos 204 346 0 ) (velocity 0 0 0 ) ) + (particle (id 17867) (pos 495 381 0 ) (velocity 0 0 0 ) ) + (particle (id 17868) (pos 442 363 0 ) (velocity 0 0 0 ) ) + (particle (id 18023) (pos 124 404 0 ) (velocity 0 0 0 ) ) + (particle (id 18024) (pos 131 352 0 ) (velocity 0 0 0 ) ) + (particle (id 18025) (pos 78 411 0 ) (velocity 0 0 0 ) ) + (particle (id 18026) (pos 87 454 0 ) (velocity 0 0 0 ) ) + (particle (id 18027) (pos 553 374 0 ) (velocity 0 0 0 ) ) + (particle (id 18028) (pos 554 413 0 ) (velocity 0 0 0 ) ) + (particle (id 18029) (pos 575 453 0 ) (velocity 0 0 0 ) ) + (particle (id 18030) (pos 582 402 0 ) (velocity 0 0 0 ) ) + (particle (id 18451) (pos 269 380 0 ) (velocity 0 0 0 ) ) + (particle (id 18452) (pos 337 381 0 ) (velocity 0 0 0 ) ) + (particle (id 18453) (pos 237 399 0 ) (velocity 0 0 0 ) ) + (particle (id 18454) (pos 382 388 0 ) (velocity 0 0 0 ) ) + (particle (id 18707) (pos 96 367 0 ) (velocity 0 0 0 ) ) + (particle (id 18708) (pos 129 437 0 ) (velocity 0 0 0 ) ) + (particle (id 18709) (pos 159 398 0 ) (velocity 0 0 0 ) ) + (particle (id 18710) (pos 416 394 0 ) (velocity 0 0 0 ) ) + (particle (id 18711) (pos 478 412 0 ) (velocity 0 0 0 ) ) + (particle (id 18712) (pos 610 432 0 ) (velocity 0 0 0 ) ) + (particle (id 18713) (pos 599 472 0 ) (velocity 0 0 0 ) ) + (particle (id 19041) (pos 256 469 0 ) (velocity 0 0 0 ) ) + (particle (id 19042) (pos 362 463 0 ) (velocity 0 0 0 ) ) + (particle (id 19043) (pos 300 572 0 ) (velocity 0 0 0 ) ) + (particle (id 19516) (pos 255 523 0 ) (velocity 0 0 0 ) ) + (particle (id 19517) (pos 356 529 0 ) (velocity 0 0 0 ) ) + (particle (id 20890) (pos 487 323 0 ) (velocity 0 0 0 ) ) + (particle (id 20891) (pos 453 289 0 ) (velocity 0 0 0 ) ) + (particle (id 21939) (pos 235 598 0 ) (velocity 0 0 0 ) ) + (particle (id 21940) (pos 367 598 0 ) (velocity 0 0 0 ) ) + (particle (id 21941) (pos 435 597 0 ) (velocity 0 0 0 ) ) + (particle (id 21942) (pos 174 598 0 ) (velocity 0 0 0 ) ) + (particle (id 22173) (pos 305 90 0 ) (velocity 0 0 0 ) ) + (particle (id 22174) (pos 214 153 0 ) (velocity 0 0 0 ) ) + (particle (id 23485) (pos 381 570 0 ) (velocity 0 0 0 ) ) + (particle (id 23486) (pos 217 577 0 ) (velocity 0 0 0 ) ) + (particle (id 23559) (pos 259 253 0 ) (velocity 0 0 0 ) ) + (particle (id 23710) (pos 197 397 0 ) (velocity 0 0 0 ) ) + (particle (id 23711) (pos 164 424 0 ) (velocity 0 0 0 ) ) + (particle (id 23712) (pos 102 483 0 ) (velocity 0 0 0 ) ) + (particle (id 23793) (pos 305 500 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 17155)(second 17156)) + (spring (first 17157)(second 17158)) + (spring (first 17155)(second 17158)) + (spring (first 17157)(second 17156)) + (spring (first 17156)(second 17158)) + (spring (first 17155)(second 17157)) + (spring (first 17156)(second 17159)) + (spring (first 17159)(second 17160)) + (spring (first 17160)(second 17157)) + (spring (first 17157)(second 17159)) + (spring (first 17156)(second 17160)) + (spring (first 17160)(second 17161)) + (spring (first 17161)(second 17162)) + (spring (first 17162)(second 17157)) + (spring (first 17158)(second 17162)) + (spring (first 17163)(second 17158)) + (spring (first 17163)(second 17162)) + (spring (first 17163)(second 17157)) + (spring (first 17157)(second 17161)) + (spring (first 17162)(second 17160)) + (spring (first 17159)(second 17164)) + (spring (first 17164)(second 17165)) + (spring (first 17165)(second 17160)) + (spring (first 17165)(second 17166)) + (spring (first 17166)(second 17161)) + (spring (first 17160)(second 17166)) + (spring (first 17161)(second 17165)) + (spring (first 17165)(second 17159)) + (spring (first 17160)(second 17164)) + (spring (first 17164)(second 17231)) + (spring (first 17231)(second 17232)) + (spring (first 17232)(second 17233)) + (spring (first 17233)(second 17164)) + (spring (first 17165)(second 17233)) + (spring (first 17233)(second 17234)) + (spring (first 17234)(second 17235)) + (spring (first 17235)(second 17165)) + (spring (first 17235)(second 17166)) + (spring (first 17235)(second 17236)) + (spring (first 17236)(second 17237)) + (spring (first 17237)(second 17166)) + (spring (first 17231)(second 17233)) + (spring (first 17233)(second 17235)) + (spring (first 17235)(second 17237)) + (spring (first 17232)(second 17466)) + (spring (first 17466)(second 17234)) + (spring (first 17234)(second 17467)) + (spring (first 17467)(second 17236)) + (spring (first 17232)(second 17468)) + (spring (first 17468)(second 17469)) + (spring (first 17469)(second 17231)) + (spring (first 17236)(second 17470)) + (spring (first 17470)(second 17471)) + (spring (first 17470)(second 17471)) + (spring (first 17471)(second 17237)) + (spring (first 17236)(second 17471)) + (spring (first 17236)(second 17234)) + (spring (first 17234)(second 17232)) + (spring (first 17232)(second 17469)) + (spring (first 17468)(second 17472)) + (spring (first 17472)(second 17466)) + (spring (first 17466)(second 17473)) + (spring (first 17473)(second 17467)) + (spring (first 17467)(second 17474)) + (spring (first 17474)(second 17470)) + (spring (first 17470)(second 17475)) + (spring (first 17475)(second 17476)) + (spring (first 17476)(second 17471)) + (spring (first 17470)(second 17476)) + (spring (first 17470)(second 17467)) + (spring (first 17467)(second 17466)) + (spring (first 17466)(second 17468)) + (spring (first 17468)(second 17477)) + (spring (first 17477)(second 17478)) + (spring (first 17478)(second 17469)) + (spring (first 17478)(second 17468)) + (spring (first 17477)(second 17472)) + (spring (first 17472)(second 17473)) + (spring (first 17473)(second 17474)) + (spring (first 17474)(second 17475)) + (spring (first 17477)(second 17479)) + (spring (first 17479)(second 17478)) + (spring (first 17475)(second 17480)) + (spring (first 17480)(second 17476)) + (spring (first 17479)(second 17865)) + (spring (first 17865)(second 17866)) + (spring (first 17866)(second 17472)) + (spring (first 17480)(second 17867)) + (spring (first 17867)(second 17868)) + (spring (first 17868)(second 17474)) + (spring (first 17865)(second 18023)) + (spring (first 18023)(second 18024)) + (spring (first 18024)(second 17479)) + (spring (first 18024)(second 18025)) + (spring (first 18025)(second 18023)) + (spring (first 18025)(second 18026)) + (spring (first 18026)(second 18023)) + (spring (first 17480)(second 18027)) + (spring (first 18027)(second 17867)) + (spring (first 17867)(second 18028)) + (spring (first 18028)(second 18027)) + (spring (first 18028)(second 18029)) + (spring (first 18029)(second 18030)) + (spring (first 18030)(second 18028)) + (spring (first 18030)(second 18027)) + (spring (first 17155)(second 17156)) + (spring (first 17156)(second 17159)) + (spring (first 17159)(second 17164)) + (spring (first 17164)(second 17165)) + (spring (first 17165)(second 17166)) + (spring (first 17166)(second 17161)) + (spring (first 17161)(second 17162)) + (spring (first 17162)(second 17163)) + (spring (first 17163)(second 17158)) + (spring (first 17158)(second 17155)) + (spring (first 17164)(second 18451)) + (spring (first 18451)(second 17165)) + (spring (first 17165)(second 18452)) + (spring (first 18452)(second 17166)) + (spring (first 17231)(second 18453)) + (spring (first 18453)(second 17233)) + (spring (first 17235)(second 18454)) + (spring (first 18454)(second 17237)) + (spring (first 18024)(second 17478)) + (spring (first 18024)(second 18707)) + (spring (first 18707)(second 18025)) + (spring (first 18026)(second 18708)) + (spring (first 18708)(second 18023)) + (spring (first 18023)(second 18709)) + (spring (first 18709)(second 17865)) + (spring (first 18709)(second 17866)) + (spring (first 18708)(second 18709)) + (spring (first 18708)(second 18025)) + (spring (first 18707)(second 18023)) + (spring (first 18024)(second 18709)) + (spring (first 17865)(second 18024)) + (spring (first 18024)(second 17866)) + (spring (first 17866)(second 17478)) + (spring (first 17475)(second 17867)) + (spring (first 17867)(second 17868)) + (spring (first 17474)(second 18710)) + (spring (first 17868)(second 18710)) + (spring (first 17867)(second 18710)) + (spring (first 17868)(second 17475)) + (spring (first 17868)(second 17480)) + (spring (first 18710)(second 17867)) + (spring (first 18710)(second 18711)) + (spring (first 17867)(second 18711)) + (spring (first 18711)(second 18028)) + (spring (first 18711)(second 18029)) + (spring (first 18711)(second 18030)) + (spring (first 18030)(second 18712)) + (spring (first 18712)(second 18029)) + (spring (first 18029)(second 18713)) + (spring (first 18713)(second 18712)) + (spring (first 18453)(second 19041)) + (spring (first 19041)(second 18451)) + (spring (first 18452)(second 19042)) + (spring (first 19042)(second 18454)) + (spring (first 19041)(second 19043)) + (spring (first 19043)(second 19042)) + (spring (first 19042)(second 19041)) + (spring (first 19041)(second 19516)) + (spring (first 19516)(second 19043)) + (spring (first 19043)(second 19517)) + (spring (first 19517)(second 19042)) + (spring (first 19517)(second 18451)) + (spring (first 19516)(second 18452)) + (spring (first 18453)(second 18451)) + (spring (first 18452)(second 18454)) + (spring (first 18451)(second 19043)) + (spring (first 19043)(second 18452)) + (spring (first 18451)(second 18452)) + (spring (first 18027)(second 20890)) + (spring (first 20890)(second 17480)) + (spring (first 20890)(second 17867)) + (spring (first 20890)(second 17476)) + (spring (first 20890)(second 20891)) + (spring (first 20891)(second 17471)) + (spring (first 20891)(second 17237)) + (spring (first 20891)(second 17476)) + (spring (first 19043)(second 21939)) + (spring (first 21939)(second 19516)) + (spring (first 19043)(second 21940)) + (spring (first 21940)(second 19517)) + (spring (first 21940)(second 21941)) + (spring (first 21941)(second 19517)) + (spring (first 21939)(second 21942)) + (spring (first 21942)(second 19516)) + (spring (first 17155)(second 22173)) + (spring (first 22173)(second 17158)) + (spring (first 22173)(second 17163)) + (spring (first 17156)(second 22174)) + (spring (first 22174)(second 17158)) + (spring (first 22174)(second 17160)) + (spring (first 21940)(second 21939)) + (spring (first 21939)(second 19042)) + (spring (first 19041)(second 21940)) + (spring (first 19517)(second 18453)) + (spring (first 18454)(second 19516)) + (spring (first 17865)(second 17472)) + (spring (first 17865)(second 17466)) + (spring (first 17231)(second 17478)) + (spring (first 18024)(second 17233)) + (spring (first 17867)(second 17471)) + (spring (first 18711)(second 17470)) + (spring (first 17480)(second 17234)) + (spring (first 20891)(second 17235)) + (spring (first 18027)(second 17236)) + (spring (first 21941)(second 23485)) + (spring (first 23485)(second 19517)) + (spring (first 23485)(second 21940)) + (spring (first 21939)(second 23486)) + (spring (first 23486)(second 21942)) + (spring (first 23486)(second 19516)) + (spring (first 23486)(second 19043)) + (spring (first 19043)(second 23485)) + (spring (first 23559)(second 17478)) + (spring (first 23559)(second 17233)) + (spring (first 23559)(second 17164)) + (spring (first 17866)(second 23710)) + (spring (first 23710)(second 18709)) + (spring (first 23710)(second 23711)) + (spring (first 23711)(second 18708)) + (spring (first 23711)(second 18709)) + (spring (first 18026)(second 23712)) + (spring (first 23712)(second 18708)) + (spring (first 23711)(second 23712)) + (spring (first 23485)(second 19517)) + (spring (first 23793)(second 19517)) + (spring (first 23793)(second 19516)) + (spring (first 23793)(second 19043)) + (spring (first 23793)(second 21939)) + (spring (first 23793)(second 21940)) + ) +) diff --git a/examples/pig.construo b/examples/pig.construo new file mode 100644 index 0000000..8fedd67 --- /dev/null +++ b/examples/pig.construo @@ -0,0 +1,187 @@ +;; Written by construo 0.2.0pre2 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 622.389587 125.228165) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos 650.496704 152.850418) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 621.062012 166.510513) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 591.049316 144.664795) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 692.025330 132.966232) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 725.144714 167.435379) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 688.027588 184.966415) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 661.952820 91.885132) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 647.263428 199.909470) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 599.533264 181.393982) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 611.988770 107.428589) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 721.534729 210.388519) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 716.459229 99.306290) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 959.709351 206.877197) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 931.733337 179.122177) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 961.232727 165.601562) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 991.141357 187.589172) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 890.110901 198.809387) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 857.155518 164.183746) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 894.354858 146.828720) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 919.988770 240.032578) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 935.189697 132.079010) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos 982.831726 150.820358) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 970.025757 224.725937) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos 860.968750 121.247948) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 865.518066 232.353516) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 747.449219 134.457947) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 758.816040 178.716339) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 783.309692 164.291794) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 836.805420 197.865982) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 825.297119 141.442932) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 41) (pos 766.177673 104.974701) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 801.754578 110.479034) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 45) (pos 784.118958 106.738632) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 677.290222 230.843445) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 764.414673 221.836182) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 814.039307 228.108688) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos 797.959412 200.323334) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 51) (pos 787.854248 224.760147) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 749.650269 199.173462) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 53) (pos 756.950867 120.194145) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 911.464661 268.771423) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 874.156982 264.755646) (velocity -249.404907 -20.885437) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 39.408108)) + (spring (first 1) (second 2) (length 32.449951)) + (spring (first 2) (second 0) (length 41.303688)) + (spring (first 0) (second 3) (length 36.878113)) + (spring (first 3) (second 2) (length 37.121387)) + (spring (first 3) (second 1) (length 60.008301)) + (spring (first 1) (second 4) (length 46.043541)) + (spring (first 4) (second 5) (length 47.801838)) + (spring (first 5) (second 6) (length 41.048973)) + (spring (first 6) (second 1) (length 49.396400)) + (spring (first 1) (second 5) (length 76.059494)) + (spring (first 4) (second 6) (length 52.153629)) + (spring (first 0) (second 15) (length 51.739803)) + (spring (first 15) (second 4) (length 50.911812)) + (spring (first 4) (second 0) (length 70.064362)) + (spring (first 15) (second 1) (length 62.032318)) + (spring (first 2) (second 16) (length 42.450024)) + (spring (first 16) (second 6) (length 43.416721)) + (spring (first 1) (second 16) (length 47.169994)) + (spring (first 3) (second 17) (length 37.696293)) + (spring (first 17) (second 2) (length 26.172592)) + (spring (first 17) (second 16) (length 51.195621)) + (spring (first 15) (second 19) (length 52.325954)) + (spring (first 19) (second 3) (length 42.719971)) + (spring (first 19) (second 0) (length 20.615574)) + (spring (first 2) (second 6) (length 69.462280)) + (spring (first 16) (second 20) (length 75.006912)) + (spring (first 20) (second 6) (length 42.059624)) + (spring (first 5) (second 20) (length 43.104572)) + (spring (first 15) (second 21) (length 55.009293)) + (spring (first 21) (second 4) (length 41.593353)) + (spring (first 21) (second 5) (length 68.680496)) + (spring (first 22) (second 23) (length 39.408100)) + (spring (first 23) (second 24) (length 32.450287)) + (spring (first 24) (second 22) (length 41.303738)) + (spring (first 22) (second 25) (length 36.878162)) + (spring (first 25) (second 24) (length 37.121170)) + (spring (first 25) (second 23) (length 60.008358)) + (spring (first 23) (second 26) (length 46.043606)) + (spring (first 26) (second 27) (length 47.801594)) + (spring (first 27) (second 28) (length 41.048603)) + (spring (first 28) (second 23) (length 49.396538)) + (spring (first 23) (second 27) (length 76.059242)) + (spring (first 26) (second 28) (length 52.153629)) + (spring (first 22) (second 29) (length 51.739769)) + (spring (first 29) (second 26) (length 50.912067)) + (spring (first 26) (second 22) (length 70.064499)) + (spring (first 29) (second 23) (length 62.032345)) + (spring (first 24) (second 30) (length 42.449982)) + (spring (first 30) (second 28) (length 43.417023)) + (spring (first 23) (second 30) (length 47.169968)) + (spring (first 25) (second 31) (length 37.696095)) + (spring (first 31) (second 24) (length 26.172520)) + (spring (first 31) (second 30) (length 51.195713)) + (spring (first 29) (second 32) (length 52.325840)) + (spring (first 32) (second 25) (length 42.720112)) + (spring (first 32) (second 22) (length 20.615667)) + (spring (first 24) (second 28) (length 69.462715)) + (spring (first 30) (second 33) (length 75.007072)) + (spring (first 33) (second 28) (length 42.059578)) + (spring (first 27) (second 33) (length 43.104797)) + (spring (first 29) (second 34) (length 55.009323)) + (spring (first 34) (second 26) (length 41.593460)) + (spring (first 34) (second 27) (length 68.680779)) + (spring (first 21) (second 35) (length 46.861694)) + (spring (first 35) (second 5) (length 39.812084)) + (spring (first 20) (second 36) (length 48.918537)) + (spring (first 36) (second 5) (length 35.510818)) + (spring (first 35) (second 36) (length 45.694748)) + (spring (first 35) (second 38) (length 46.647957)) + (spring (first 38) (second 36) (length 28.425455)) + (spring (first 27) (second 39) (length 39.352501)) + (spring (first 39) (second 34) (length 44.875450)) + (spring (first 39) (second 38) (length 63.158680)) + (spring (first 38) (second 40) (length 47.801826)) + (spring (first 40) (second 27) (length 39.142078)) + (spring (first 40) (second 39) (length 57.584732)) + (spring (first 38) (second 27) (length 73.845901)) + (spring (first 5) (second 38) (length 58.249866)) + (spring (first 35) (second 4) (length 55.443958)) + (spring (first 21) (second 41) (length 50.040531)) + (spring (first 41) (second 35) (length 34.928738)) + (spring (first 40) (second 33) (length 40.991493)) + (spring (first 33) (second 42) (length 60.185444)) + (spring (first 42) (second 40) (length 38.897484)) + (spring (first 41) (second 38) (length 61.741589)) + (spring (first 38) (second 45) (length 57.558849)) + (spring (first 45) (second 42) (length 18.027914)) + (spring (first 42) (second 38) (length 56.886086)) + (spring (first 45) (second 40) (length 53.851921)) + (spring (first 2) (second 47) (length 85.442017)) + (spring (first 38) (second 48) (length 60.567139)) + (spring (first 48) (second 49) (length 50.019482)) + (spring (first 49) (second 34) (length 51.653473)) + (spring (first 39) (second 49) (length 37.853893)) + (spring (first 49) (second 50) (length 32.102787)) + (spring (first 50) (second 48) (length 39.850372)) + (spring (first 38) (second 50) (length 38.895836)) + (spring (first 50) (second 39) (length 38.923656)) + (spring (first 50) (second 40) (length 64.917267)) + (spring (first 20) (second 51) (length 67.858841)) + (spring (first 51) (second 36) (length 54.435741)) + (spring (first 36) (second 52) (length 22.416628)) + (spring (first 52) (second 20) (length 30.269804)) + (spring (first 52) (second 5) (length 40.097733)) + (spring (first 52) (second 51) (length 45.980675)) + (spring (first 53) (second 42) (length 45.844910)) + (spring (first 45) (second 53) (length 30.317585)) + (spring (first 53) (second 38) (length 51.374996)) + (spring (first 53) (second 40) (length 71.573189)) + (spring (first 47) (second 20) (length 48.744030)) + (spring (first 47) (second 6) (length 47.116798)) + (spring (first 47) (second 1) (length 82.466995)) + (spring (first 4) (second 47) (length 98.980164)) + (spring (first 47) (second 15) (length 139.802170)) + (spring (first 21) (second 47) (length 137.245163)) + (spring (first 41) (second 47) (length 154.090622)) + (spring (first 5) (second 47) (length 79.439507)) + (spring (first 3) (second 47) (length 121.919044)) + (spring (first 25) (second 54) (length 113.749435)) + (spring (first 54) (second 27) (length 117.847633)) + (spring (first 26) (second 54) (length 73.148270)) + (spring (first 54) (second 23) (length 91.911949)) + (spring (first 28) (second 54) (length 123.137192)) + (spring (first 30) (second 54) (length 138.736053)) + (spring (first 34) (second 54) (length 58.628948)) + (spring (first 32) (second 54) (length 73.276237)) + (spring (first 41) (second 45) (length 18.027788)) + (spring (first 48) (second 51) (length 23.621246)) + (spring (first 54) (second 39) (length 102.963989)) + (spring (first 54) (second 55) (length 37.523182)) + (spring (first 55) (second 49) (length 70.406921)) + (spring (first 34) (second 55) (length 33.533997)) + (spring (first 55) (second 39) (length 76.611794)) + )) + +;; EOF ;; diff --git a/examples/plane.construo b/examples/plane.construo new file mode 100644 index 0000000..e3707d1 --- /dev/null +++ b/examples/plane.construo @@ -0,0 +1,168 @@ + +(construo-scene + (particles + (particle (id 55891) (pos 371 367 0 ) (velocity 0 0 0 ) ) + (particle (id 55892) (pos 250 378 0 ) (velocity 0 0 0 ) ) + (particle (id 55893) (pos 185 393 0 ) (velocity 0 0 0 ) ) + (particle (id 55894) (pos 134 406 0 ) (velocity 0 0 0 ) ) + (particle (id 55895) (pos 95.9999 441 0 ) (velocity 0 0 0 ) ) + (particle (id 55896) (pos 107 467 0 ) (velocity 0 0 0 ) ) + (particle (id 55897) (pos 163 477 0 ) (velocity 0 0 0 ) ) + (particle (id 55898) (pos 261 481 0 ) (velocity 0 0 0 ) ) + (particle (id 55899) (pos 419 476 0 ) (velocity 0 0 0 ) ) + (particle (id 55900) (pos 576 474 0 ) (velocity 0 0 0 ) ) + (particle (id 55901) (pos 669 454 0 ) (velocity 0 0 0 ) ) + (particle (id 55902) (pos 740 423 0 ) (velocity 0 0 0 ) ) + (particle (id 55903) (pos 767 346 0 ) (velocity 0 0 0 ) ) + (particle (id 55904) (pos 767 289 0 ) (velocity 0 0 0 ) ) + (particle (id 55905) (pos 696 272 0 ) (velocity 0 0 0 ) ) + (particle (id 55906) (pos 671 322 0 ) (velocity 0 0 0 ) ) + (particle (id 55907) (pos 644 372 0 ) (velocity 0 0 0 ) ) + (particle (id 55908) (pos 579 377 0 ) (velocity 0 0 0 ) ) + (particle (id 55909) (pos 416 368 0 ) (velocity 0 0 0 ) ) + (particle (id 55910) (pos 251 414 0 ) (velocity 0 0 0 ) ) + (particle (id 55911) (pos 300 422 0 ) (velocity 0 0 0 ) ) + (particle (id 55912) (pos 368 413 0 ) (velocity 0 0 0 ) ) + (particle (id 55913) (pos 477 409 0 ) (velocity 0 0 0 ) ) + (particle (id 55914) (pos 507 391 0 ) (velocity 0 0 0 ) ) + (particle (id 56116) (pos 161 509 0 ) (velocity 0 0 0 ) ) + (particle (id 56117) (pos 139 524 0 ) (velocity 0 0 0 ) ) + (particle (id 56118) (pos 157 544 0 ) (velocity 0 0 0 ) ) + (particle (id 56119) (pos 189 530 0 ) (velocity 0 0 0 ) ) + (particle (id 56120) (pos 469 499 0 ) (velocity 0 0 0 ) ) + (particle (id 56121) (pos 463 528 0 ) (velocity 0 0 0 ) ) + (particle (id 56122) (pos 429 539 0 ) (velocity 0 0 0 ) ) + (particle (id 56123) (pos 459 556 0 ) (velocity 0 0 0 ) ) + (particle (id 56124) (pos 490 547 0 ) (velocity 0 0 0 ) ) + (particle (id 57944) (pos 614 346 0 ) (velocity 0 0 0 ) ) + (particle (id 61651) (pos 208 552 0 ) (velocity 0 0 0 ) ) + (particle (id 61652) (pos 156 570 0 ) (velocity 0 0 0 ) ) + (particle (id 61653) (pos 116 537 0 ) (velocity 0 0 0 ) ) + (particle (id 61654) (pos 397 552 0 ) (velocity 0 0 0 ) ) + (particle (id 61655) (pos 456 581 0 ) (velocity 0 0 0 ) ) + (particle (id 61656) (pos 520 567 0 ) (velocity 0 0 0 ) ) + (particle (id 61657) (pos 117 0 0 ) (velocity 0 0 0 ) ) + (particle (id 62193) (pos 335 488 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 55891)(second 55892)) + (spring (first 55892)(second 55893)) + (spring (first 55893)(second 55894)) + (spring (first 55894)(second 55895)) + (spring (first 55895)(second 55896)) + (spring (first 55896)(second 55897)) + (spring (first 55897)(second 55898)) + (spring (first 55898)(second 55899)) + (spring (first 55899)(second 55900)) + (spring (first 55900)(second 55901)) + (spring (first 55901)(second 55902)) + (spring (first 55902)(second 55903)) + (spring (first 55903)(second 55904)) + (spring (first 55904)(second 55905)) + (spring (first 55905)(second 55906)) + (spring (first 55906)(second 55907)) + (spring (first 55907)(second 55908)) + (spring (first 55908)(second 55909)) + (spring (first 55909)(second 55891)) + (spring (first 55910)(second 55892)) + (spring (first 55910)(second 55911)) + (spring (first 55911)(second 55912)) + (spring (first 55912)(second 55913)) + (spring (first 55913)(second 55914)) + (spring (first 55914)(second 55891)) + (spring (first 55892)(second 55911)) + (spring (first 55910)(second 55891)) + (spring (first 55892)(second 55912)) + (spring (first 55911)(second 55891)) + (spring (first 55912)(second 55891)) + (spring (first 55891)(second 55913)) + (spring (first 55914)(second 55912)) + (spring (first 55894)(second 55898)) + (spring (first 55897)(second 55894)) + (spring (first 55895)(second 55897)) + (spring (first 55896)(second 55894)) + (spring (first 55896)(second 55892)) + (spring (first 55897)(second 55910)) + (spring (first 55894)(second 55899)) + (spring (first 55910)(second 55898)) + (spring (first 55911)(second 55899)) + (spring (first 55911)(second 55898)) + (spring (first 55910)(second 55899)) + (spring (first 55912)(second 55899)) + (spring (first 55913)(second 55899)) + (spring (first 55913)(second 55900)) + (spring (first 55913)(second 55901)) + (spring (first 55914)(second 55901)) + (spring (first 55914)(second 55908)) + (spring (first 55914)(second 55902)) + (spring (first 55907)(second 55901)) + (spring (first 55907)(second 55902)) + (spring (first 55907)(second 55903)) + (spring (first 55907)(second 55904)) + (spring (first 55897)(second 56116)) + (spring (first 56116)(second 56117)) + (spring (first 56117)(second 56118)) + (spring (first 56118)(second 56119)) + (spring (first 56119)(second 56116)) + (spring (first 56117)(second 56119)) + (spring (first 56116)(second 56118)) + (spring (first 55900)(second 56120)) + (spring (first 55899)(second 56120)) + (spring (first 56120)(second 56121)) + (spring (first 56121)(second 56122)) + (spring (first 56122)(second 56123)) + (spring (first 56123)(second 56121)) + (spring (first 56123)(second 56121)) + (spring (first 56124)(second 56123)) + (spring (first 56123)(second 56121)) + (spring (first 56124)(second 56122)) + (spring (first 56121)(second 56124)) + (spring (first 56116)(second 55898)) + (spring (first 55896)(second 56116)) + (spring (first 56121)(second 55900)) + (spring (first 55899)(second 56121)) + (spring (first 56121)(second 55913)) + (spring (first 56120)(second 55913)) + (spring (first 56116)(second 55894)) + (spring (first 56116)(second 55892)) + (spring (first 56121)(second 55891)) + (spring (first 56121)(second 55908)) + (spring (first 56121)(second 55907)) + (spring (first 55893)(second 55898)) + (spring (first 55893)(second 55897)) + (spring (first 55907)(second 57944)) + (spring (first 57944)(second 55908)) + (spring (first 57944)(second 55905)) + (spring (first 57944)(second 55900)) + (spring (first 55891)(second 57944)) + (spring (first 57944)(second 55904)) + (spring (first 57944)(second 55903)) + (spring (first 57944)(second 55902)) + (spring (first 57944)(second 55901)) + (spring (first 57944)(second 55913)) + (spring (first 55899)(second 57944)) + (spring (first 55900)(second 55902)) + (spring (first 55903)(second 55900)) + (spring (first 55904)(second 55900)) + (spring (first 55899)(second 55892)) + (spring (first 55899)(second 55893)) + (spring (first 55909)(second 55913)) + (spring (first 55909)(second 55912)) + (spring (first 55909)(second 57944)) + (spring (first 56119)(second 61651)) + (spring (first 61651)(second 61652)) + (spring (first 61652)(second 61653)) + (spring (first 61653)(second 56117)) + (spring (first 61653)(second 61651)) + (spring (first 56122)(second 61654)) + (spring (first 61654)(second 61655)) + (spring (first 61655)(second 61656)) + (spring (first 61656)(second 56124)) + (spring (first 61654)(second 61656)) + (spring (first 55906)(second 55903)) + (spring (first 55906)(second 57944)) + (spring (first 55898)(second 62193)) + (spring (first 62193)(second 55899)) + (spring (first 62193)(second 56121)) + ) +) diff --git a/examples/planelanding.construo b/examples/planelanding.construo new file mode 100644 index 0000000..bd9fb99 --- /dev/null +++ b/examples/planelanding.construo @@ -0,0 +1,185 @@ +;; Written by construo 0.2.0pre3 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 62199) (pos 636.869446 -1032.820435) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62200) (pos 515.669983 -1041.342529) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62201) (pos 449.106842 -1036.947754) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62202) (pos 396.682922 -1032.283813) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62203) (pos 359.297943 -1007.290100) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62204) (pos 360.260651 -976.395569) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62205) (pos 413.935883 -957.555725) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62206) (pos 510.030365 -937.910095) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62207) (pos 666.791931 -917.539246) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62208) (pos 822.084900 -894.366699) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62209) (pos 917.087769 -899.212769) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62210) (pos 992.136108 -918.440002) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62211) (pos 1031.120850 -990.121277) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62212) (pos 1040.250366 -1046.385864) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62213) (pos 972.889343 -1074.538330) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62214) (pos 940.204224 -1029.187622) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62215) (pos 905.543884 -984.158142) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62216) (pos 840.582153 -989.633850) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62217) (pos 681.128723 -1024.625610) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62218) (pos 510.890625 -1005.647034) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62219) (pos 557.976990 -989.902161) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62220) (pos 626.540710 -987.894470) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62221) (pos 734.773987 -974.384460) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62222) (pos 767.269836 -987.347229) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62223) (pos 406.836548 -926.289124) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62224) (pos 382.717926 -915.006409) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62225) (pos 397.282928 -892.381958) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62226) (pos 431.111694 -901.075928) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62227) (pos 712.461914 -886.827881) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62228) (pos 701.894287 -859.163208) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62229) (pos 666.571716 -853.750488) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62230) (pos 693.461487 -832.165649) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62231) (pos 725.503113 -836.084351) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62232) (pos 880.095886 -1014.627380) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62233) (pos 446.342590 -876.316650) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62234) (pos 392.130463 -866.877441) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62235) (pos 357.932861 -905.858093) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62236) (pos 632.902100 -846.044312) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62237) (pos 686.495667 -807.968384) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62238) (pos 751.911194 -811.536987) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62239) (pos 581.953674 -919.148621) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62240) (pos 452.087708 -961.046936) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62241) (pos 391.250580 -980.368347) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62242) (pos 439.959534 -933.530945) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62243) (pos 500.765198 -922.189758) (velocity -613.230835 -89.041992) (fixed #f) (mass 0.100000)) + (particle (id 62244) (pos 805.090820 -943.876892) (velocity -613.230835 -89.041992) (fixed #f) (mass 2.100000)) + ) + (springs + (spring (first 62199) (second 62200) (length 121.498711)) + (spring (first 62200) (second 62201) (length 66.708061)) + (spring (first 62201) (second 62202) (length 52.630978)) + (spring (first 62202) (second 62203) (length 44.970238)) + (spring (first 62203) (second 62204) (length 30.909527)) + (spring (first 62204) (second 62205) (length 56.885590)) + (spring (first 62205) (second 62206) (length 98.082108)) + (spring (first 62206) (second 62207) (length 158.079605)) + (spring (first 62207) (second 62208) (length 157.012329)) + (spring (first 62208) (second 62209) (length 95.126389)) + (spring (first 62209) (second 62210) (length 77.472191)) + (spring (first 62210) (second 62211) (length 81.596664)) + (spring (first 62211) (second 62212) (length 57.000454)) + (spring (first 62212) (second 62213) (length 73.007317)) + (spring (first 62213) (second 62214) (length 55.901733)) + (spring (first 62214) (second 62215) (length 56.824230)) + (spring (first 62215) (second 62216) (length 65.192101)) + (spring (first 62216) (second 62217) (length 163.247726)) + (spring (first 62217) (second 62199) (length 45.011539)) + (spring (first 62218) (second 62200) (length 36.014034)) + (spring (first 62218) (second 62219) (length 49.649036)) + (spring (first 62219) (second 62220) (length 68.593109)) + (spring (first 62220) (second 62221) (length 109.073196)) + (spring (first 62221) (second 62222) (length 34.985905)) + (spring (first 62222) (second 62199) (length 138.101685)) + (spring (first 62200) (second 62219) (length 66.603264)) + (spring (first 62218) (second 62199) (length 128.876129)) + (spring (first 62200) (second 62220) (length 123.081329)) + (spring (first 62219) (second 62199) (length 89.810898)) + (spring (first 62220) (second 62199) (length 46.097996)) + (spring (first 62199) (second 62221) (length 114.017815)) + (spring (first 62222) (second 62220) (length 140.730194)) + (spring (first 62202) (second 62206) (length 147.492508)) + (spring (first 62205) (second 62202) (length 76.693886)) + (spring (first 62203) (second 62205) (length 73.883774)) + (spring (first 62204) (second 62202) (length 66.708900)) + (spring (first 62204) (second 62200) (length 168.434464)) + (spring (first 62205) (second 62218) (length 108.226593)) + (spring (first 62202) (second 62207) (length 293.470947)) + (spring (first 62218) (second 62206) (length 67.742401)) + (spring (first 62219) (second 62207) (length 130.679306)) + (spring (first 62219) (second 62206) (length 70.725197)) + (spring (first 62218) (second 62207) (length 179.075958)) + (spring (first 62220) (second 62207) (length 81.055649)) + (spring (first 62221) (second 62207) (length 88.616806)) + (spring (first 62221) (second 62208) (length 118.431572)) + (spring (first 62221) (second 62209) (length 197.203186)) + (spring (first 62222) (second 62209) (length 173.819153)) + (spring (first 62222) (second 62216) (length 73.347969)) + (spring (first 62222) (second 62210) (length 235.187256)) + (spring (first 62215) (second 62209) (length 85.726181)) + (spring (first 62215) (second 62210) (length 108.706429)) + (spring (first 62215) (second 62211) (length 125.718468)) + (spring (first 62215) (second 62212) (length 148.385056)) + (spring (first 62205) (second 62223) (length 32.062454)) + (spring (first 62223) (second 62224) (length 26.627195)) + (spring (first 62224) (second 62225) (length 26.907343)) + (spring (first 62225) (second 62226) (length 34.928078)) + (spring (first 62226) (second 62223) (length 34.999828)) + (spring (first 62224) (second 62226) (length 50.358864)) + (spring (first 62223) (second 62225) (length 35.227367)) + (spring (first 62208) (second 62227) (length 109.881905)) + (spring (first 62207) (second 62227) (length 55.035763)) + (spring (first 62227) (second 62228) (length 29.614336)) + (spring (first 62228) (second 62229) (length 35.734879)) + (spring (first 62229) (second 62230) (length 34.481373)) + (spring (first 62230) (second 62228) (length 28.283922)) + (spring (first 62230) (second 62228) (length 28.283922)) + (spring (first 62231) (second 62230) (length 32.280365)) + (spring (first 62230) (second 62228) (length 28.283922)) + (spring (first 62231) (second 62229) (length 61.522369)) + (spring (first 62228) (second 62231) (length 33.015305)) + (spring (first 62228) (second 62208) (length 125.240044)) + (spring (first 62207) (second 62228) (length 68.117081)) + (spring (first 62201) (second 62206) (length 116.276108)) + (spring (first 62201) (second 62205) (length 86.833694)) + (spring (first 62215) (second 62232) (length 39.698551)) + (spring (first 62232) (second 62216) (length 46.754803)) + (spring (first 62232) (second 62213) (length 110.453369)) + (spring (first 62232) (second 62208) (length 133.521179)) + (spring (first 62199) (second 62232) (length 243.905899)) + (spring (first 62232) (second 62212) (length 163.272964)) + (spring (first 62232) (second 62211) (length 153.000290)) + (spring (first 62232) (second 62210) (length 147.665237)) + (spring (first 62232) (second 62209) (length 121.197906)) + (spring (first 62232) (second 62221) (length 150.791077)) + (spring (first 62208) (second 62210) (length 171.746719)) + (spring (first 62211) (second 62208) (length 229.923828)) + (spring (first 62212) (second 62208) (length 265.906006)) + (spring (first 62207) (second 62200) (length 195.358887)) + (spring (first 62207) (second 62201) (length 248.284500)) + (spring (first 62217) (second 62221) (length 73.498215)) + (spring (first 62217) (second 62220) (length 65.795349)) + (spring (first 62217) (second 62232) (length 199.218216)) + (spring (first 62226) (second 62233) (length 29.068918)) + (spring (first 62233) (second 62234) (length 55.027752)) + (spring (first 62234) (second 62235) (length 51.855251)) + (spring (first 62235) (second 62224) (length 26.419521)) + (spring (first 62235) (second 62233) (length 93.214684)) + (spring (first 62229) (second 62236) (length 34.540241)) + (spring (first 62236) (second 62237) (length 65.742271)) + (spring (first 62237) (second 62238) (length 65.512794)) + (spring (first 62238) (second 62231) (length 36.054955)) + (spring (first 62236) (second 62238) (length 123.910934)) + (spring (first 62214) (second 62211) (length 98.954597)) + (spring (first 62214) (second 62232) (length 61.846687)) + (spring (first 62206) (second 62239) (length 74.330040)) + (spring (first 62239) (second 62207) (length 84.853523)) + (spring (first 62239) (second 62228) (length 134.104431)) + (spring (first 62223) (second 62240) (length 57.059380)) + (spring (first 62240) (second 62241) (length 63.831600)) + (spring (first 62241) (second 62223) (length 56.280411)) + (spring (first 62241) (second 62205) (length 32.172016)) + (spring (first 62205) (second 62240) (length 38.311230)) + (spring (first 62204) (second 62241) (length 31.243538)) + (spring (first 62240) (second 62206) (length 62.391224)) + (spring (first 62240) (second 62201) (length 75.959328)) + (spring (first 62201) (second 62241) (length 80.923271)) + (spring (first 62204) (second 62242) (length 90.494682)) + (spring (first 62242) (second 62206) (length 70.207535)) + (spring (first 62242) (second 62243) (length 61.854275)) + (spring (first 62243) (second 62206) (length 18.247530)) + (spring (first 62243) (second 62239) (length 81.245415)) + (spring (first 62244) (second 62222) (length 57.620281)) + (spring (first 62244) (second 62208) (length 52.345562)) + (spring (first 62244) (second 62227) (length 108.787422)) + ) + (colliders + (rect (pos1 -13188.238281 -1147.840088) (pos2 -2644.722412 -931.285217)) + )) + +;; EOF ;; diff --git a/examples/rocket.construo b/examples/rocket.construo new file mode 100644 index 0000000..b06de5e --- /dev/null +++ b/examples/rocket.construo @@ -0,0 +1,307 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 2) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 311.443146 -211.818802) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1) (pos 278.443024 -190.818802) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos 323.443207 -166.818817) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 442.443481 -210.818802) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 454.443542 -168.818817) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 290.443024 -145.818848) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 324.443207 -127.818970) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 455.443542 -127.818970) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 501.443695 -187.818817) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 507.443604 -141.818970) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 321.013702 -103.933426) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos 353.013855 -103.933426) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos 420.013855 -103.933426) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 459.013977 -102.933426) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos 388.322235 -167.402313) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 386.875519 -103.744949) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos 388.322235 -126.411011) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 17) (pos 386.875519 -212.734085) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 320.601959 -71.564041) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos 353.395325 -72.046227) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos 387.153046 -72.046227) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 423.804260 -71.564041) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 459.491150 -69.152908) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos 321.520416 -35.483715) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 352.666077 -34.813793) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 25) (pos 383.811615 -33.809151) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 421.989929 -32.469551) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27) (pos 459.833557 -30.460264) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos 320.671906 -6.284489) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 351.536316 -5.319890) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos 318.742889 24.579752) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos 318.742889 55.444046) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 32) (pos 316.331696 92.095177) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 33) (pos 355.394287 94.024368) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 34) (pos 356.358826 58.819782) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 35) (pos 359.734558 24.579752) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos 391.563324 94.506546) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos 426.285583 94.024368) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos 462.936951 94.988724) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 39) (pos 462.936951 61.713337) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 40) (pos 462.936951 26.990894) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 41) (pos 461.490173 -6.766667) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 42) (pos 388.669769 -5.319890) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 43) (pos 426.285583 -3.873112) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 44) (pos 431.590393 24.579752) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 45) (pos 387.705292 22.650801) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 46) (pos 435.448425 59.301960) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 47) (pos 389.152069 59.784382) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 48) (pos 315.547455 119.282913) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 49) (pos 351.716614 120.247513) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 50) (pos 392.225922 121.212112) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 51) (pos 426.948181 121.212112) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 52) (pos 462.152771 121.212112) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 53) (pos 486.265594 92.276573) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 54) (pos 297.703888 90.347610) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 55) (pos 293.845856 21.867598) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 56) (pos 295.774811 -39.860916) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 57) (pos 487.712372 -29.733458) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 58) (pos 492.052643 33.441574) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 59) (pos 482.776825 -83.012527) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 60) (pos 288.428009 -88.799400) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 61) (pos 262.841064 90.719437) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 62) (pos 532.981567 90.719437) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 63) (pos 228.813217 90.719437) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 64) (pos 229.507675 58.080521) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 65) (pos 265.618927 59.469440) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 66) (pos 540.620483 60.163776) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 67) (pos 572.565063 92.802940) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 68) (pos 576.037292 56.691605) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 69) (pos 364.319519 -257.316284) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 70) (pos 412.319641 -258.316284) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 72) (pos 363.319519 -385.316467) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 73) (pos 386.319611 -438.316986) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 74) (pos 413.319641 -386.316467) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 75) (pos 412.319641 -335.316467) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 76) (pos 364.319519 -341.316467) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 77) (pos 561.738892 20.773365) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 78) (pos 253.737335 22.773359) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 0) (second 1) (length 39.115318)) + (spring (first 1) (second 2) (length 51.000153)) + (spring (first 2) (second 0) (length 46.572525)) + (spring (first 3) (second 4) (length 43.680660)) + (spring (first 2) (second 5) (length 39.115353)) + (spring (first 5) (second 6) (length 38.470871)) + (spring (first 6) (second 2) (length 39.012665)) + (spring (first 7) (second 4) (length 41.012039)) + (spring (first 3) (second 8) (length 63.324753)) + (spring (first 8) (second 4) (length 50.695309)) + (spring (first 4) (second 9) (length 59.481075)) + (spring (first 9) (second 7) (length 53.851707)) + (spring (first 8) (second 9) (length 46.389492)) + (spring (first 1) (second 5) (length 46.572479)) + (spring (first 5) (second 10) (length 51.855133)) + (spring (first 10) (second 6) (length 24.130493)) + (spring (first 10) (second 11) (length 32.000153)) + (spring (first 11) (second 6) (length 37.239780)) + (spring (first 12) (second 7) (length 42.729172)) + (spring (first 12) (second 13) (length 39.012939)) + (spring (first 13) (second 7) (length 25.140371)) + (spring (first 13) (second 9) (length 62.108891)) + (spring (first 11) (second 15) (length 33.862190)) + (spring (first 15) (second 12) (length 33.138874)) + (spring (first 6) (second 16) (length 63.894543)) + (spring (first 16) (second 7) (length 67.136070)) + (spring (first 0) (second 17) (length 75.437927)) + (spring (first 17) (second 3) (length 55.600960)) + (spring (first 3) (second 14) (length 69.383720)) + (spring (first 14) (second 0) (length 88.787491)) + (spring (first 17) (second 14) (length 45.354851)) + (spring (first 14) (second 2) (length 64.881653)) + (spring (first 14) (second 4) (length 66.136475)) + (spring (first 6) (second 14) (length 75.148994)) + (spring (first 14) (second 16) (length 40.991302)) + (spring (first 14) (second 7) (length 77.923752)) + (spring (first 10) (second 18) (length 32.372002)) + (spring (first 18) (second 19) (length 32.796909)) + (spring (first 19) (second 11) (length 31.889481)) + (spring (first 15) (second 20) (length 31.699938)) + (spring (first 20) (second 19) (length 33.757721)) + (spring (first 20) (second 21) (length 36.654385)) + (spring (first 21) (second 12) (length 32.590553)) + (spring (first 13) (second 22) (length 33.783886)) + (spring (first 22) (second 21) (length 35.768250)) + (spring (first 10) (second 19) (length 45.446266)) + (spring (first 11) (second 18) (length 45.807293)) + (spring (first 11) (second 20) (length 46.714855)) + (spring (first 15) (second 19) (length 46.105667)) + (spring (first 15) (second 21) (length 48.983086)) + (spring (first 12) (second 20) (length 45.788933)) + (spring (first 12) (second 22) (length 52.613129)) + (spring (first 13) (second 21) (length 47.156784)) + (spring (first 18) (second 23) (length 36.092014)) + (spring (first 23) (second 24) (length 31.152864)) + (spring (first 24) (second 19) (length 37.239574)) + (spring (first 19) (second 25) (length 48.859234)) + (spring (first 25) (second 20) (length 38.382797)) + (spring (first 24) (second 25) (length 31.161737)) + (spring (first 25) (second 26) (length 38.201809)) + (spring (first 26) (second 21) (length 39.136566)) + (spring (first 22) (second 27) (length 38.694160)) + (spring (first 27) (second 26) (length 37.896931)) + (spring (first 21) (second 27) (length 54.659222)) + (spring (first 20) (second 26) (length 52.724964)) + (spring (first 18) (second 24) (length 48.771797)) + (spring (first 23) (second 19) (length 48.505947)) + (spring (first 24) (second 20) (length 50.750420)) + (spring (first 25) (second 21) (length 54.998577)) + (spring (first 22) (second 26) (length 52.459606)) + (spring (first 23) (second 28) (length 29.211552)) + (spring (first 28) (second 29) (length 30.879480)) + (spring (first 28) (second 30) (length 30.924463)) + (spring (first 30) (second 31) (length 30.864294)) + (spring (first 31) (second 32) (length 36.730358)) + (spring (first 32) (second 33) (length 39.110203)) + (spring (first 33) (second 34) (length 35.217796)) + (spring (first 34) (second 31) (length 37.767105)) + (spring (first 30) (second 35) (length 40.991669)) + (spring (first 35) (second 34) (length 34.406036)) + (spring (first 33) (second 36) (length 36.172249)) + (spring (first 36) (second 37) (length 34.725609)) + (spring (first 37) (second 38) (length 36.664051)) + (spring (first 38) (second 39) (length 33.275387)) + (spring (first 39) (second 40) (length 34.722443)) + (spring (first 40) (second 41) (length 33.788551)) + (spring (first 41) (second 27) (length 23.751440)) + (spring (first 29) (second 42) (length 37.133453)) + (spring (first 42) (second 43) (length 37.643627)) + (spring (first 43) (second 41) (length 35.323303)) + (spring (first 43) (second 44) (length 28.943159)) + (spring (first 44) (second 45) (length 43.927475)) + (spring (first 45) (second 35) (length 28.037169)) + (spring (first 29) (second 35) (length 31.003222)) + (spring (first 42) (second 45) (length 27.987314)) + (spring (first 44) (second 40) (length 31.439152)) + (spring (first 39) (second 46) (length 27.594090)) + (spring (first 46) (second 47) (length 46.298870)) + (spring (first 45) (second 47) (length 37.161755)) + (spring (first 24) (second 29) (length 29.515533)) + (spring (first 42) (second 25) (length 28.900513)) + (spring (first 26) (second 43) (length 28.917278)) + (spring (first 34) (second 47) (length 32.807426)) + (spring (first 47) (second 36) (length 34.805786)) + (spring (first 37) (second 46) (length 35.911049)) + (spring (first 46) (second 44) (length 34.935886)) + (spring (first 23) (second 29) (length 42.553619)) + (spring (first 29) (second 45) (length 45.722580)) + (spring (first 45) (second 46) (length 60.188988)) + (spring (first 46) (second 38) (length 45.046246)) + (spring (first 36) (second 46) (length 56.260689)) + (spring (first 47) (second 37) (length 50.510143)) + (spring (first 34) (second 36) (length 50.128853)) + (spring (first 33) (second 47) (length 48.082893)) + (spring (first 33) (second 31) (length 53.214344)) + (spring (first 34) (second 32) (length 52.052120)) + (spring (first 31) (second 35) (length 51.312000)) + (spring (first 30) (second 34) (length 50.865887)) + (spring (first 28) (second 35) (length 49.784458)) + (spring (first 30) (second 29) (length 44.377892)) + (spring (first 28) (second 24) (length 42.866631)) + (spring (first 25) (second 29) (length 43.050354)) + (spring (first 26) (second 42) (length 42.980659)) + (spring (first 45) (second 43) (length 46.818340)) + (spring (first 42) (second 44) (length 52.308399)) + (spring (first 45) (second 34) (length 47.862263)) + (spring (first 35) (second 47) (length 45.877621)) + (spring (first 42) (second 35) (length 41.608112)) + (spring (first 44) (second 47) (length 55.139618)) + (spring (first 25) (second 43) (length 51.963490)) + (spring (first 24) (second 42) (length 46.541985)) + (spring (first 26) (second 41) (length 47.126507)) + (spring (first 27) (second 43) (length 42.805878)) + (spring (first 43) (second 40) (length 47.915649)) + (spring (first 41) (second 44) (length 43.319683)) + (spring (first 44) (second 39) (length 48.595367)) + (spring (first 40) (second 46) (length 42.421974)) + (spring (first 39) (second 37) (length 48.860264)) + (spring (first 32) (second 48) (length 27.199045)) + (spring (first 48) (second 49) (length 36.182018)) + (spring (first 49) (second 33) (length 26.479776)) + (spring (first 49) (second 50) (length 40.520790)) + (spring (first 50) (second 36) (length 26.713785)) + (spring (first 37) (second 51) (length 27.195818)) + (spring (first 51) (second 50) (length 34.722260)) + (spring (first 38) (second 52) (length 26.235111)) + (spring (first 52) (second 51) (length 35.204590)) + (spring (first 32) (second 49) (length 45.217766)) + (spring (first 33) (second 50) (length 45.779282)) + (spring (first 50) (second 37) (length 43.580200)) + (spring (first 51) (second 38) (length 44.529289)) + (spring (first 52) (second 53) (length 37.665550)) + (spring (first 53) (second 39) (length 38.449150)) + (spring (first 31) (second 54) (length 40.754120)) + (spring (first 54) (second 48) (length 33.994774)) + (spring (first 31) (second 55) (length 41.800003)) + (spring (first 55) (second 28) (length 38.886719)) + (spring (first 28) (second 56) (length 41.800022)) + (spring (first 56) (second 18) (length 40.267548)) + (spring (first 22) (second 57) (length 48.480206)) + (spring (first 57) (second 41) (length 34.857956)) + (spring (first 41) (second 58) (length 50.505119)) + (spring (first 58) (second 39) (length 40.583447)) + (spring (first 54) (second 32) (length 18.709602)) + (spring (first 55) (second 30) (length 25.044323)) + (spring (first 56) (second 23) (length 26.115055)) + (spring (first 27) (second 57) (length 27.888287)) + (spring (first 40) (second 58) (length 29.821716)) + (spring (first 38) (second 53) (length 23.485769)) + (spring (first 13) (second 59) (length 31.008308)) + (spring (first 59) (second 22) (length 27.098186)) + (spring (first 18) (second 60) (length 36.499599)) + (spring (first 60) (second 10) (length 35.928627)) + (spring (first 53) (second 58) (length 59.118923)) + (spring (first 55) (second 54) (length 68.588600)) + (spring (first 55) (second 56) (length 61.758644)) + (spring (first 56) (second 60) (length 49.486874)) + (spring (first 59) (second 57) (length 53.507187)) + (spring (first 58) (second 57) (length 63.323948)) + (spring (first 16) (second 11) (length 41.855984)) + (spring (first 16) (second 15) (length 22.712185)) + (spring (first 16) (second 12) (length 38.853580)) + (spring (first 54) (second 61) (length 34.864807)) + (spring (first 61) (second 31) (length 66.101189)) + (spring (first 39) (second 62) (length 75.812943)) + (spring (first 62) (second 53) (length 46.741917)) + (spring (first 61) (second 63) (length 34.027847)) + (spring (first 63) (second 64) (length 32.646301)) + (spring (first 64) (second 65) (length 36.137951)) + (spring (first 65) (second 61) (length 31.373219)) + (spring (first 65) (second 31) (length 53.276253)) + (spring (first 64) (second 61) (length 46.652050)) + (spring (first 39) (second 66) (length 77.698982)) + (spring (first 66) (second 62) (length 31.496054)) + (spring (first 62) (second 67) (length 39.638290)) + (spring (first 67) (second 68) (length 36.277885)) + (spring (first 68) (second 66) (length 35.586605)) + (spring (first 68) (second 62) (length 54.878857)) + (spring (first 0) (second 69) (length 69.756233)) + (spring (first 69) (second 70) (length 48.010536)) + (spring (first 70) (second 3) (length 56.244614)) + (spring (first 70) (second 17) (length 52.202877)) + (spring (first 17) (second 69) (length 49.963444)) + (spring (first 72) (second 73) (length 57.775940)) + (spring (first 73) (second 74) (length 58.592281)) + (spring (first 74) (second 75) (length 51.009804)) + (spring (first 75) (second 70) (length 77.000183)) + (spring (first 72) (second 76) (length 44.011364)) + (spring (first 76) (second 69) (length 84.000183)) + (spring (first 76) (second 75) (length 48.373669)) + (spring (first 70) (second 76) (length 95.880356)) + (spring (first 76) (second 74) (length 66.528282)) + (spring (first 74) (second 72) (length 50.010120)) + (spring (first 68) (second 77) (length 38.659595)) + (spring (first 77) (second 66) (length 44.694424)) + (spring (first 64) (second 78) (length 42.821396)) + (spring (first 78) (second 65) (length 38.571682)) + (spring (first 77) (second 57) (length 89.615089)) + (spring (first 56) (second 78) (length 75.433426)) + )) + +;; EOF ;; diff --git a/examples/rocketlanding.construo b/examples/rocketlanding.construo new file mode 100644 index 0000000..e9546a2 --- /dev/null +++ b/examples/rocketlanding.construo @@ -0,0 +1,310 @@ +;; Written by construo 0.2.0pre3 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 139.969055 -1941.842041) (velocity -38.447647 -354.595490) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos 106.969223 -1920.841919) (velocity -38.447903 -354.598450) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 151.969193 -1896.841919) (velocity -38.448650 -354.602844) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 270.969421 -1940.841919) (velocity -38.451168 -354.599487) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 282.969543 -1898.841797) (velocity -38.443333 -354.594879) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 118.968903 -1875.841797) (velocity -38.449322 -354.597412) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 152.969238 -1857.842041) (velocity -38.444523 -354.595581) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 283.969391 -1857.842041) (velocity -38.450783 -354.598145) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 329.969727 -1917.841919) (velocity -38.447266 -354.600647) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 335.969452 -1871.842041) (velocity -38.447704 -354.599060) (fixed #f) (mass 0.100000)) + (particle (id 10) (pos 149.539597 -1833.956421) (velocity -38.444904 -354.601501) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos 181.539856 -1833.956421) (velocity -38.443409 -354.595886) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 248.539810 -1833.956421) (velocity -38.444435 -354.599976) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 287.539948 -1832.956543) (velocity -38.446594 -354.600800) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 216.848190 -1897.425415) (velocity -38.446041 -354.593689) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 215.401489 -1833.767944) (velocity -38.451408 -354.594940) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 216.848145 -1856.434204) (velocity -38.447495 -354.600006) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 215.401474 -1942.757202) (velocity -38.445339 -354.601898) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 149.127853 -1801.587280) (velocity -38.448181 -354.599884) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 181.921295 -1802.069458) (velocity -38.447018 -354.601929) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 215.679062 -1802.069214) (velocity -38.442841 -354.599396) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 252.330246 -1801.587158) (velocity -38.444538 -354.601074) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 288.017120 -1799.175781) (velocity -38.445271 -354.596222) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 150.046402 -1765.506958) (velocity -38.446941 -354.594757) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 181.191971 -1764.837036) (velocity -38.452709 -354.595306) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 212.337585 -1763.832275) (velocity -38.445621 -354.590240) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 250.515930 -1762.492432) (velocity -38.444607 -354.592651) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 288.359375 -1760.483398) (velocity -38.448414 -354.601044) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 149.197891 -1736.307617) (velocity -38.444103 -354.598267) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 180.062225 -1735.343018) (velocity -38.445122 -354.599823) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 147.268707 -1705.443604) (velocity -38.447018 -354.598450) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos 147.268875 -1674.579102) (velocity -38.446560 -354.592438) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 144.857681 -1637.928223) (velocity -38.448345 -354.598236) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos 183.920181 -1635.998901) (velocity -38.444733 -354.599640) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 184.884720 -1671.203491) (velocity -38.449726 -354.594330) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 188.260559 -1705.443481) (velocity -38.445908 -354.599884) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 220.089249 -1635.516724) (velocity -38.445869 -354.595001) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 254.811462 -1635.998901) (velocity -38.449196 -354.596771) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 291.462891 -1635.034546) (velocity -38.446362 -354.596069) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos 291.462891 -1668.309814) (velocity -38.448093 -354.596039) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 291.463013 -1703.032349) (velocity -38.444935 -354.598938) (fixed #f) (mass 0.100000)) + (particle (id 41) (pos 290.016144 -1736.789795) (velocity -38.445210 -354.593109) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 217.195587 -1735.343018) (velocity -38.451195 -354.598785) (fixed #f) (mass 0.100000)) + (particle (id 43) (pos 254.811340 -1733.896118) (velocity -38.448940 -354.602814) (fixed #f) (mass 0.100000)) + (particle (id 44) (pos 260.116272 -1705.443237) (velocity -38.448231 -354.591858) (fixed #f) (mass 0.100000)) + (particle (id 45) (pos 216.231140 -1707.372437) (velocity -38.448936 -354.596497) (fixed #f) (mass 0.100000)) + (particle (id 46) (pos 263.974457 -1670.721313) (velocity -38.447231 -354.600800) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 217.677994 -1670.238892) (velocity -38.444614 -354.598053) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 144.073608 -1610.740479) (velocity -38.446201 -354.597839) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 180.242538 -1609.775879) (velocity -38.447941 -354.598175) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos 220.751892 -1608.811157) (velocity -38.446522 -354.599640) (fixed #f) (mass 0.100000)) + (particle (id 51) (pos 255.474091 -1608.811035) (velocity -38.447521 -354.593750) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 290.678650 -1608.811157) (velocity -38.445915 -354.597809) (fixed #f) (mass 0.100000)) + (particle (id 53) (pos 314.791412 -1637.746582) (velocity -38.446976 -354.597717) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 126.230003 -1639.675537) (velocity -38.448212 -354.601654) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 122.371758 -1708.155640) (velocity -38.448086 -354.596924) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 124.300735 -1769.884155) (velocity -38.450562 -354.596741) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 316.238220 -1759.756592) (velocity -38.451141 -354.599579) (fixed #f) (mass 0.100000)) + (particle (id 58) (pos 320.578613 -1696.581665) (velocity -38.445602 -354.600647) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 311.302856 -1813.035645) (velocity -38.447933 -354.594940) (fixed #f) (mass 0.100000)) + (particle (id 60) (pos 116.953835 -1818.822510) (velocity -38.448803 -354.596497) (fixed #f) (mass 0.100000)) + (particle (id 61) (pos 91.367363 -1639.303589) (velocity -38.446255 -354.594482) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 361.507385 -1639.303833) (velocity -38.448776 -354.594482) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 57.339329 -1639.303589) (velocity -38.449100 -354.596130) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 58.033836 -1671.942505) (velocity -38.447823 -354.602509) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 94.145050 -1670.553711) (velocity -38.444294 -354.596802) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 369.146332 -1669.859497) (velocity -38.451340 -354.595551) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 401.090973 -1637.219971) (velocity -38.441067 -354.598114) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 404.563232 -1673.331421) (velocity -38.448029 -354.598389) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 192.845337 -1987.339478) (velocity -38.444260 -354.594025) (fixed #f) (mass 0.100000)) + (particle (id 70) (pos 240.845459 -1988.339600) (velocity -38.446865 -354.599854) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 191.845535 -2115.339600) (velocity -38.450779 -354.592072) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 214.845459 -2168.340088) (velocity -38.445820 -354.599365) (fixed #f) (mass 0.100000)) + (particle (id 74) (pos 241.845566 -2116.339600) (velocity -38.442986 -354.603455) (fixed #f) (mass 0.100000)) + (particle (id 75) (pos 240.845459 -2065.339600) (velocity -38.447777 -354.587830) (fixed #f) (mass 0.100000)) + (particle (id 76) (pos 192.845261 -2071.339844) (velocity -38.447639 -354.602814) (fixed #f) (mass 0.100000)) + (particle (id 77) (pos 390.264832 -1709.250000) (velocity -38.446156 -354.599304) (fixed #f) (mass 0.100000)) + (particle (id 78) (pos 82.263420 -1707.249756) (velocity -38.447521 -354.594604) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 39.115318)) + (spring (first 1) (second 2) (length 51.000153)) + (spring (first 2) (second 0) (length 46.572525)) + (spring (first 3) (second 4) (length 43.680660)) + (spring (first 2) (second 5) (length 39.115353)) + (spring (first 5) (second 6) (length 38.470871)) + (spring (first 6) (second 2) (length 39.012665)) + (spring (first 7) (second 4) (length 41.012039)) + (spring (first 3) (second 8) (length 63.324753)) + (spring (first 8) (second 4) (length 50.695309)) + (spring (first 4) (second 9) (length 59.481075)) + (spring (first 9) (second 7) (length 53.851707)) + (spring (first 8) (second 9) (length 46.389492)) + (spring (first 1) (second 5) (length 46.572479)) + (spring (first 5) (second 10) (length 51.855133)) + (spring (first 10) (second 6) (length 24.130493)) + (spring (first 10) (second 11) (length 32.000153)) + (spring (first 11) (second 6) (length 37.239780)) + (spring (first 12) (second 7) (length 42.729172)) + (spring (first 12) (second 13) (length 39.012939)) + (spring (first 13) (second 7) (length 25.140371)) + (spring (first 13) (second 9) (length 62.108891)) + (spring (first 11) (second 15) (length 33.862190)) + (spring (first 15) (second 12) (length 33.138874)) + (spring (first 6) (second 16) (length 63.894543)) + (spring (first 16) (second 7) (length 67.136070)) + (spring (first 0) (second 17) (length 75.437927)) + (spring (first 17) (second 3) (length 55.600960)) + (spring (first 3) (second 14) (length 69.383720)) + (spring (first 14) (second 0) (length 88.787491)) + (spring (first 17) (second 14) (length 45.354851)) + (spring (first 14) (second 2) (length 64.881653)) + (spring (first 14) (second 4) (length 66.136475)) + (spring (first 6) (second 14) (length 75.148994)) + (spring (first 14) (second 16) (length 40.991302)) + (spring (first 14) (second 7) (length 77.923752)) + (spring (first 10) (second 18) (length 32.372002)) + (spring (first 18) (second 19) (length 32.796909)) + (spring (first 19) (second 11) (length 31.889481)) + (spring (first 15) (second 20) (length 31.699938)) + (spring (first 20) (second 19) (length 33.757721)) + (spring (first 20) (second 21) (length 36.654385)) + (spring (first 21) (second 12) (length 32.590553)) + (spring (first 13) (second 22) (length 33.783886)) + (spring (first 22) (second 21) (length 35.768250)) + (spring (first 10) (second 19) (length 45.446266)) + (spring (first 11) (second 18) (length 45.807293)) + (spring (first 11) (second 20) (length 46.714855)) + (spring (first 15) (second 19) (length 46.105667)) + (spring (first 15) (second 21) (length 48.983086)) + (spring (first 12) (second 20) (length 45.788933)) + (spring (first 12) (second 22) (length 52.613129)) + (spring (first 13) (second 21) (length 47.156784)) + (spring (first 18) (second 23) (length 36.092014)) + (spring (first 23) (second 24) (length 31.152864)) + (spring (first 24) (second 19) (length 37.239574)) + (spring (first 19) (second 25) (length 48.859234)) + (spring (first 25) (second 20) (length 38.382797)) + (spring (first 24) (second 25) (length 31.161737)) + (spring (first 25) (second 26) (length 38.201809)) + (spring (first 26) (second 21) (length 39.136566)) + (spring (first 22) (second 27) (length 38.694160)) + (spring (first 27) (second 26) (length 37.896931)) + (spring (first 21) (second 27) (length 54.659222)) + (spring (first 20) (second 26) (length 52.724964)) + (spring (first 18) (second 24) (length 48.771797)) + (spring (first 23) (second 19) (length 48.505947)) + (spring (first 24) (second 20) (length 50.750420)) + (spring (first 25) (second 21) (length 54.998577)) + (spring (first 22) (second 26) (length 52.459606)) + (spring (first 23) (second 28) (length 29.211552)) + (spring (first 28) (second 29) (length 30.879480)) + (spring (first 28) (second 30) (length 30.924463)) + (spring (first 30) (second 31) (length 30.864294)) + (spring (first 31) (second 32) (length 36.730358)) + (spring (first 32) (second 33) (length 39.110203)) + (spring (first 33) (second 34) (length 35.217796)) + (spring (first 34) (second 31) (length 37.767105)) + (spring (first 30) (second 35) (length 40.991669)) + (spring (first 35) (second 34) (length 34.406036)) + (spring (first 33) (second 36) (length 36.172249)) + (spring (first 36) (second 37) (length 34.725609)) + (spring (first 37) (second 38) (length 36.664051)) + (spring (first 38) (second 39) (length 33.275387)) + (spring (first 39) (second 40) (length 34.722443)) + (spring (first 40) (second 41) (length 33.788551)) + (spring (first 41) (second 27) (length 23.751440)) + (spring (first 29) (second 42) (length 37.133453)) + (spring (first 42) (second 43) (length 37.643627)) + (spring (first 43) (second 41) (length 35.323303)) + (spring (first 43) (second 44) (length 28.943159)) + (spring (first 44) (second 45) (length 43.927475)) + (spring (first 45) (second 35) (length 28.037169)) + (spring (first 29) (second 35) (length 31.003222)) + (spring (first 42) (second 45) (length 27.987314)) + (spring (first 44) (second 40) (length 31.439152)) + (spring (first 39) (second 46) (length 27.594090)) + (spring (first 46) (second 47) (length 46.298870)) + (spring (first 45) (second 47) (length 37.161755)) + (spring (first 24) (second 29) (length 29.515533)) + (spring (first 42) (second 25) (length 28.900513)) + (spring (first 26) (second 43) (length 28.917278)) + (spring (first 34) (second 47) (length 32.807426)) + (spring (first 47) (second 36) (length 34.805786)) + (spring (first 37) (second 46) (length 35.911049)) + (spring (first 46) (second 44) (length 34.935886)) + (spring (first 23) (second 29) (length 42.553619)) + (spring (first 29) (second 45) (length 45.722580)) + (spring (first 45) (second 46) (length 60.188988)) + (spring (first 46) (second 38) (length 45.046246)) + (spring (first 36) (second 46) (length 56.260689)) + (spring (first 47) (second 37) (length 50.510143)) + (spring (first 34) (second 36) (length 50.128853)) + (spring (first 33) (second 47) (length 48.082893)) + (spring (first 33) (second 31) (length 53.214344)) + (spring (first 34) (second 32) (length 52.052120)) + (spring (first 31) (second 35) (length 51.312000)) + (spring (first 30) (second 34) (length 50.865887)) + (spring (first 28) (second 35) (length 49.784458)) + (spring (first 30) (second 29) (length 44.377892)) + (spring (first 28) (second 24) (length 42.866631)) + (spring (first 25) (second 29) (length 43.050354)) + (spring (first 26) (second 42) (length 42.980659)) + (spring (first 45) (second 43) (length 46.818340)) + (spring (first 42) (second 44) (length 52.308399)) + (spring (first 45) (second 34) (length 47.862263)) + (spring (first 35) (second 47) (length 45.877621)) + (spring (first 42) (second 35) (length 41.608112)) + (spring (first 44) (second 47) (length 55.139618)) + (spring (first 25) (second 43) (length 51.963490)) + (spring (first 24) (second 42) (length 46.541985)) + (spring (first 26) (second 41) (length 47.126507)) + (spring (first 27) (second 43) (length 42.805878)) + (spring (first 43) (second 40) (length 47.915649)) + (spring (first 41) (second 44) (length 43.319683)) + (spring (first 44) (second 39) (length 48.595367)) + (spring (first 40) (second 46) (length 42.421974)) + (spring (first 39) (second 37) (length 48.860264)) + (spring (first 32) (second 48) (length 27.199045)) + (spring (first 48) (second 49) (length 36.182018)) + (spring (first 49) (second 33) (length 26.479776)) + (spring (first 49) (second 50) (length 40.520790)) + (spring (first 50) (second 36) (length 26.713785)) + (spring (first 37) (second 51) (length 27.195818)) + (spring (first 51) (second 50) (length 34.722260)) + (spring (first 38) (second 52) (length 26.235111)) + (spring (first 52) (second 51) (length 35.204590)) + (spring (first 32) (second 49) (length 45.217766)) + (spring (first 33) (second 50) (length 45.779282)) + (spring (first 50) (second 37) (length 43.580200)) + (spring (first 51) (second 38) (length 44.529289)) + (spring (first 52) (second 53) (length 37.665550)) + (spring (first 53) (second 39) (length 38.449150)) + (spring (first 31) (second 54) (length 40.754120)) + (spring (first 54) (second 48) (length 33.994774)) + (spring (first 31) (second 55) (length 41.800003)) + (spring (first 55) (second 28) (length 38.886719)) + (spring (first 28) (second 56) (length 41.800022)) + (spring (first 56) (second 18) (length 40.267548)) + (spring (first 22) (second 57) (length 48.480206)) + (spring (first 57) (second 41) (length 34.857956)) + (spring (first 41) (second 58) (length 50.505119)) + (spring (first 58) (second 39) (length 40.583447)) + (spring (first 54) (second 32) (length 18.709602)) + (spring (first 55) (second 30) (length 25.044323)) + (spring (first 56) (second 23) (length 26.115055)) + (spring (first 27) (second 57) (length 27.888287)) + (spring (first 40) (second 58) (length 29.821716)) + (spring (first 38) (second 53) (length 23.485769)) + (spring (first 13) (second 59) (length 31.008308)) + (spring (first 59) (second 22) (length 27.098186)) + (spring (first 18) (second 60) (length 36.499599)) + (spring (first 60) (second 10) (length 35.928627)) + (spring (first 53) (second 58) (length 59.118923)) + (spring (first 55) (second 54) (length 68.588600)) + (spring (first 55) (second 56) (length 61.758644)) + (spring (first 56) (second 60) (length 49.486874)) + (spring (first 59) (second 57) (length 53.507187)) + (spring (first 58) (second 57) (length 63.323948)) + (spring (first 16) (second 11) (length 41.855984)) + (spring (first 16) (second 15) (length 22.712185)) + (spring (first 16) (second 12) (length 38.853580)) + (spring (first 54) (second 61) (length 34.864807)) + (spring (first 61) (second 31) (length 66.101189)) + (spring (first 39) (second 62) (length 75.812943)) + (spring (first 62) (second 53) (length 46.741917)) + (spring (first 61) (second 63) (length 34.027847)) + (spring (first 63) (second 64) (length 32.646301)) + (spring (first 64) (second 65) (length 36.137951)) + (spring (first 65) (second 61) (length 31.373219)) + (spring (first 65) (second 31) (length 53.276253)) + (spring (first 64) (second 61) (length 46.652050)) + (spring (first 39) (second 66) (length 77.698982)) + (spring (first 66) (second 62) (length 31.496054)) + (spring (first 62) (second 67) (length 39.638290)) + (spring (first 67) (second 68) (length 36.277885)) + (spring (first 68) (second 66) (length 35.586605)) + (spring (first 68) (second 62) (length 54.878857)) + (spring (first 0) (second 69) (length 69.756233)) + (spring (first 69) (second 70) (length 48.010536)) + (spring (first 70) (second 3) (length 56.244614)) + (spring (first 70) (second 17) (length 52.202877)) + (spring (first 17) (second 69) (length 49.963444)) + (spring (first 72) (second 73) (length 57.775940)) + (spring (first 73) (second 74) (length 58.592281)) + (spring (first 74) (second 75) (length 51.009804)) + (spring (first 75) (second 70) (length 77.000183)) + (spring (first 72) (second 76) (length 44.011364)) + (spring (first 76) (second 69) (length 84.000183)) + (spring (first 76) (second 75) (length 48.373669)) + (spring (first 70) (second 76) (length 95.880356)) + (spring (first 76) (second 74) (length 66.528282)) + (spring (first 74) (second 72) (length 50.010120)) + (spring (first 68) (second 77) (length 38.659595)) + (spring (first 77) (second 66) (length 44.694424)) + (spring (first 64) (second 78) (length 42.821396)) + (spring (first 78) (second 65) (length 38.571682)) + (spring (first 77) (second 57) (length 89.615089)) + (spring (first 56) (second 78) (length 75.433426)) + ) + (colliders + (rect (pos1 -1537.820679 -5705.132324) (pos2 -735.371155 -5437.649414)) + )) + +;; EOF ;; diff --git a/examples/rotatium.construo b/examples/rotatium.construo new file mode 100644 index 0000000..375efb4 --- /dev/null +++ b/examples/rotatium.construo @@ -0,0 +1,226 @@ +;; Written by construo 0.1.0pre2 +(construo-scene + (particles + (particle (id 287) (pos 346.000000 307.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 288) (pos 310.000000 285.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 289) (pos 382.000000 285.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 290) (pos 381.000000 328.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 291) (pos 310.000000 327.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 292) (pos 408.000000 305.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 293) (pos 237.000000 285.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 294) (pos 238.000000 326.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 295) (pos 345.000000 337.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 296) (pos 347.000000 271.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 297) (pos 437.000000 286.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 298) (pos 441.000000 327.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 299) (pos 400.000000 339.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 300) (pos 404.000000 271.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 301) (pos 455.000000 304.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 302) (pos 200.000000 305.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 303) (pos 161.000000 325.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 304) (pos 161.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 329) (pos 489.000000 286.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 330) (pos 487.000000 319.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 331) (pos 529.000000 318.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 332) (pos 528.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 333) (pos 504.000000 299.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 335) (pos 486.000000 338.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 336) (pos 491.000000 263.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 343) (pos 296.000000 265.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 344) (pos 301.000000 347.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 347) (pos 529.000000 334.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 373) (pos 350.000000 239.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 374) (pos 343.000000 366.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 375) (pos 430.000000 365.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 376) (pos 425.000000 242.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 489) (pos 124.000000 324.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 490) (pos 126.000000 291.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 492) (pos 84.000000 299.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 493) (pos 83.000000 321.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 494) (pos 47.000000 323.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 495) (pos 46.000000 295.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 496) (pos 83.000000 339.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 497) (pos 83.000000 280.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 498) (pos 131.000000 272.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 499) (pos 121.000000 343.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 510) (pos 205.000000 272.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 511) (pos 200.000000 341.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1004) (pos 200.000000 254.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1005) (pos 252.000000 251.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1006) (pos 212.000000 233.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1007) (pos 170.000000 244.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1008) (pos 139.000000 253.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1014) (pos 559.000000 306.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1015) (pos 560.000000 330.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1022) (pos 330.000000 498.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1025) (pos 459.000000 599.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1027) (pos 226.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1064) (pos 327.000000 542.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1065) (pos 323.000000 598.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1084) (pos 309.000000 448.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1085) (pos 365.000000 447.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 288) (second 289) (length 72.000000)) + (spring (first 289) (second 290) (length 43.011627)) + (spring (first 290) (second 291) (length 71.007042)) + (spring (first 291) (second 288) (length 42.000000)) + (spring (first 288) (second 287) (length 42.190044)) + (spring (first 291) (second 287) (length 41.182522)) + (spring (first 289) (second 287) (length 42.190044)) + (spring (first 287) (second 290) (length 40.816662)) + (spring (first 290) (second 292) (length 35.468296)) + (spring (first 292) (second 289) (length 32.802441)) + (spring (first 288) (second 293) (length 73.000000)) + (spring (first 293) (second 294) (length 41.012192)) + (spring (first 294) (second 291) (length 72.006943)) + (spring (first 291) (second 293) (length 84.219948)) + (spring (first 288) (second 294) (length 82.855293)) + (spring (first 291) (second 295) (length 36.400551)) + (spring (first 295) (second 290) (length 37.107952)) + (spring (first 288) (second 296) (length 39.560081)) + (spring (first 296) (second 289) (length 37.696156)) + (spring (first 296) (second 287) (length 36.013885)) + (spring (first 295) (second 287) (length 30.016663)) + (spring (first 289) (second 297) (length 55.009090)) + (spring (first 297) (second 292) (length 34.669872)) + (spring (first 290) (second 298) (length 60.008331)) + (spring (first 298) (second 292) (length 39.661064)) + (spring (first 297) (second 298) (length 41.194660)) + (spring (first 295) (second 299) (length 55.036350)) + (spring (first 299) (second 298) (length 42.720020)) + (spring (first 299) (second 290) (length 21.954498)) + (spring (first 299) (second 292) (length 34.928497)) + (spring (first 296) (second 300) (length 57.000000)) + (spring (first 300) (second 297) (length 36.249138)) + (spring (first 300) (second 289) (length 26.076809)) + (spring (first 300) (second 292) (length 34.234486)) + (spring (first 297) (second 301) (length 25.455845)) + (spring (first 301) (second 298) (length 26.925823)) + (spring (first 301) (second 292) (length 47.010635)) + (spring (first 292) (second 287) (length 62.032249)) + (spring (first 293) (second 302) (length 42.059483)) + (spring (first 302) (second 294) (length 43.416588)) + (spring (first 302) (second 287) (length 146.013702)) + (spring (first 294) (second 303) (length 77.006493)) + (spring (first 303) (second 304) (length 45.000000)) + (spring (first 304) (second 293) (length 76.164299)) + (spring (first 302) (second 304) (length 46.324940)) + (spring (first 302) (second 303) (length 43.829212)) + (spring (first 297) (second 329) (length 52.000000)) + (spring (first 329) (second 301) (length 38.470768)) + (spring (first 301) (second 330) (length 35.341194)) + (spring (first 330) (second 329) (length 33.060551)) + (spring (first 330) (second 298) (length 46.690472)) + (spring (first 330) (second 331) (length 42.011902)) + (spring (first 331) (second 332) (length 38.013157)) + (spring (first 332) (second 329) (length 39.458839)) + (spring (first 329) (second 333) (length 19.849434)) + (spring (first 333) (second 330) (length 26.248810)) + (spring (first 333) (second 331) (length 31.400637)) + (spring (first 333) (second 332) (length 30.610456)) + (spring (first 298) (second 335) (length 46.324940)) + (spring (first 335) (second 331) (length 47.423622)) + (spring (first 335) (second 330) (length 19.026299)) + (spring (first 297) (second 336) (length 58.694122)) + (spring (first 336) (second 329) (length 23.086792)) + (spring (first 336) (second 332) (length 40.718548)) + (spring (first 300) (second 336) (length 87.367043)) + (spring (first 299) (second 335) (length 86.005814)) + (spring (first 293) (second 343) (length 62.297672)) + (spring (first 343) (second 296) (length 51.351727)) + (spring (first 343) (second 288) (length 24.413111)) + (spring (first 294) (second 344) (length 66.407829)) + (spring (first 344) (second 295) (length 45.122055)) + (spring (first 344) (second 291) (length 21.931713)) + (spring (first 335) (second 347) (length 43.185646)) + (spring (first 347) (second 331) (length 16.000000)) + (spring (first 343) (second 373) (length 59.933296)) + (spring (first 373) (second 296) (length 32.140316)) + (spring (first 373) (second 300) (length 62.769421)) + (spring (first 344) (second 374) (length 46.097721)) + (spring (first 374) (second 295) (length 29.068884)) + (spring (first 374) (second 299) (length 63.071388)) + (spring (first 374) (second 375) (length 87.005745)) + (spring (first 375) (second 335) (length 62.169125)) + (spring (first 375) (second 299) (length 39.698868)) + (spring (first 373) (second 376) (length 75.059975)) + (spring (first 376) (second 336) (length 69.260376)) + (spring (first 376) (second 300) (length 35.805027)) + (spring (first 303) (second 489) (length 37.013512)) + (spring (first 489) (second 490) (length 33.060551)) + (spring (first 490) (second 304) (length 36.687874)) + (spring (first 490) (second 303) (length 48.795490)) + (spring (first 489) (second 304) (length 57.489128)) + (spring (first 490) (second 492) (length 42.755116)) + (spring (first 492) (second 493) (length 22.022715)) + (spring (first 493) (second 489) (length 41.109608)) + (spring (first 489) (second 492) (length 47.169907)) + (spring (first 490) (second 493) (length 52.430908)) + (spring (first 493) (second 494) (length 36.055511)) + (spring (first 494) (second 495) (length 28.017851)) + (spring (first 495) (second 492) (length 38.209946)) + (spring (first 495) (second 493) (length 45.221676)) + (spring (first 494) (second 492) (length 44.102154)) + (spring (first 494) (second 496) (length 39.395432)) + (spring (first 496) (second 493) (length 18.000000)) + (spring (first 496) (second 489) (length 43.657761)) + (spring (first 492) (second 497) (length 19.026299)) + (spring (first 497) (second 495) (length 39.924931)) + (spring (first 497) (second 490) (length 44.384682)) + (spring (first 497) (second 498) (length 48.662102)) + (spring (first 498) (second 490) (length 19.646883)) + (spring (first 498) (second 304) (length 31.048349)) + (spring (first 496) (second 499) (length 38.209946)) + (spring (first 499) (second 489) (length 19.235384)) + (spring (first 499) (second 303) (length 43.863426)) + (spring (first 304) (second 510) (length 44.721359)) + (spring (first 510) (second 302) (length 33.376640)) + (spring (first 510) (second 293) (length 34.539833)) + (spring (first 510) (second 343) (length 91.268837)) + (spring (first 302) (second 511) (length 36.000000)) + (spring (first 511) (second 303) (length 42.154476)) + (spring (first 511) (second 294) (length 40.853397)) + (spring (first 511) (second 344) (length 101.178062)) + (spring (first 498) (second 510) (length 74.000000)) + (spring (first 499) (second 511) (length 79.025314)) + (spring (first 293) (second 296) (length 110.887329)) + (spring (first 294) (second 295) (length 107.563934)) + (spring (first 498) (second 1004) (length 71.309189)) + (spring (first 510) (second 1004) (length 18.681541)) + (spring (first 1005) (second 1004) (length 52.086468)) + (spring (first 1005) (second 343) (length 46.173584)) + (spring (first 1005) (second 510) (length 51.478149)) + (spring (first 1004) (second 343) (length 96.628151)) + (spring (first 1005) (second 1006) (length 43.863426)) + (spring (first 1006) (second 1004) (length 24.186773)) + (spring (first 1006) (second 1007) (length 43.416588)) + (spring (first 1007) (second 1004) (length 31.622776)) + (spring (first 1007) (second 1008) (length 32.280025)) + (spring (first 1008) (second 498) (length 20.615528)) + (spring (first 1008) (second 1004) (length 61.008198)) + (spring (first 1007) (second 498) (length 48.010414)) + (spring (first 332) (second 1014) (length 40.459858)) + (spring (first 1014) (second 331) (length 32.310989)) + (spring (first 1014) (second 1015) (length 24.020824)) + (spring (first 1015) (second 347) (length 31.257000)) + (spring (first 1022) (second 296) (length 227.635681)) + (spring (first 296) (second 1025) (length 346.594879)) + (spring (first 1022) (second 1025) (length 163.835281)) + (spring (first 1027) (second 296) (length 348.668884)) + (spring (first 1027) (second 1022) (length 144.277512)) + (spring (first 1027) (second 1064) (length 115.485931)) + (spring (first 1064) (second 1025) (length 143.781082)) + (spring (first 1064) (second 1022) (length 44.102154)) + (spring (first 1027) (second 1065) (length 97.000000)) + (spring (first 1065) (second 1025) (length 136.003677)) + (spring (first 1065) (second 1064) (length 56.142673)) + (spring (first 1022) (second 1084) (length 54.230988)) + (spring (first 1084) (second 296) (length 181.033142)) + (spring (first 296) (second 1085) (length 176.918060)) + (spring (first 1085) (second 1022) (length 61.854668)) + (spring (first 1085) (second 1025) (length 178.717651)) + (spring (first 1084) (second 1027) (length 171.432205)) + )) + +;; EOF ;; diff --git a/examples/scorpion.construo b/examples/scorpion.construo new file mode 100644 index 0000000..a296cdd --- /dev/null +++ b/examples/scorpion.construo @@ -0,0 +1,261 @@ +;; Written by construo 0.1.0 +(construo-scene + (particles + (particle (id 0) (pos 315.000000 143.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1) (pos 230.000000 180.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos 182.000000 132.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 188.000000 174.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 201.000000 309.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 300.000000 306.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 279.000000 179.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 390.000000 278.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 269.000000 108.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 201.000000 98.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 159.000000 90.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos 118.000000 132.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos 155.000000 179.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 397.000000 208.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos 144.000000 237.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 438.000000 200.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos 320.000000 231.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 17) (pos 240.000000 243.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 197.000000 214.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos 277.000000 209.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos 345.000000 195.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 405.000000 177.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 97.000000 212.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos 107.000000 261.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 194.000000 259.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 25) (pos 287.000000 259.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 374.000000 234.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos 416.000000 224.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 444.000000 221.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos 425.000000 169.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 32) (pos 78.000000 236.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 35) (pos 119.000000 273.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos 434.000000 248.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos 461.000000 246.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos 90.000000 266.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 39) (pos 541.000000 175.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 40) (pos 504.000000 199.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 41) (pos 508.000000 147.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 42) (pos 536.000000 128.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 43) (pos 558.000000 149.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 44) (pos 572.000000 113.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 45) (pos 552.000000 102.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 46) (pos 564.000000 71.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 47) (pos 581.000000 75.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 48) (pos 574.000000 35.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 49) (pos 590.000000 35.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 50) (pos 572.000000 184.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 51) (pos 592.000000 146.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 52) (pos 608.000000 106.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 53) (pos 619.000000 60.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 54) (pos 407.000000 143.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 55) (pos 456.000000 141.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 56) (pos 505.000000 115.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 57) (pos 523.000000 94.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 58) (pos 532.000000 71.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 59) (pos 547.000000 42.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 60) (pos 582.000000 8.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 61) (pos 548.000000 207.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 62) (pos 457.000000 119.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 63) (pos 366.000000 307.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 64) (pos 336.000000 272.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 71) (pos 57.000000 594.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 72) (pos 259.000000 324.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 73) (pos 262.000000 348.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 74) (pos 314.000000 346.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 77) (pos 488.000000 596.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 0) (second 1) (length 92.703827)) + (spring (first 2) (second 3) (length 42.426407)) + (spring (first 3) (second 1) (length 42.426407)) + (spring (first 2) (second 0) (length 133.454117)) + (spring (first 0) (second 3) (length 130.728729)) + (spring (first 2) (second 1) (length 67.882248)) + (spring (first 3) (second 4) (length 135.624481)) + (spring (first 4) (second 1) (length 132.219513)) + (spring (first 1) (second 5) (length 144.138824)) + (spring (first 5) (second 6) (length 128.724518)) + (spring (first 6) (second 7) (length 148.734665)) + (spring (first 7) (second 0) (length 154.434448)) + (spring (first 0) (second 6) (length 50.911690)) + (spring (first 6) (second 1) (length 49.010204)) + (spring (first 2) (second 8) (length 90.249657)) + (spring (first 8) (second 0) (length 57.801384)) + (spring (first 8) (second 9) (length 68.731361)) + (spring (first 9) (second 2) (length 38.948685)) + (spring (first 2) (second 10) (length 47.885281)) + (spring (first 10) (second 9) (length 42.755116)) + (spring (first 10) (second 11) (length 58.694122)) + (spring (first 11) (second 2) (length 64.000000)) + (spring (first 11) (second 9) (length 89.693924)) + (spring (first 11) (second 12) (length 59.816387)) + (spring (first 12) (second 3) (length 33.376640)) + (spring (first 2) (second 12) (length 54.203320)) + (spring (first 12) (second 4) (length 137.898514)) + (spring (first 4) (second 5) (length 99.045441)) + (spring (first 5) (second 7) (length 94.254974)) + (spring (first 7) (second 13) (length 70.349129)) + (spring (first 13) (second 0) (length 104.637466)) + (spring (first 12) (second 14) (length 59.033890)) + (spring (first 14) (second 4) (length 91.831367)) + (spring (first 7) (second 15) (length 91.586021)) + (spring (first 15) (second 0) (length 135.565475)) + (spring (first 13) (second 15) (length 41.773197)) + (spring (first 5) (second 16) (length 77.620872)) + (spring (first 16) (second 7) (length 84.314888)) + (spring (first 13) (second 16) (length 80.361679)) + (spring (first 16) (second 17) (length 80.894997)) + (spring (first 17) (second 4) (length 76.661591)) + (spring (first 17) (second 5) (length 87.000000)) + (spring (first 14) (second 17) (length 96.187317)) + (spring (first 14) (second 18) (length 57.775429)) + (spring (first 18) (second 17) (length 51.865211)) + (spring (first 17) (second 19) (length 50.249378)) + (spring (first 19) (second 16) (length 48.301140)) + (spring (first 16) (second 20) (length 43.829212)) + (spring (first 20) (second 13) (length 53.600372)) + (spring (first 13) (second 21) (length 32.015621)) + (spring (first 21) (second 15) (length 40.224369)) + (spring (first 21) (second 20) (length 62.641838)) + (spring (first 20) (second 19) (length 69.426216)) + (spring (first 19) (second 18) (length 80.156097)) + (spring (first 18) (second 22) (length 100.019997)) + (spring (first 22) (second 14) (length 53.235325)) + (spring (first 22) (second 23) (length 50.009998)) + (spring (first 23) (second 24) (length 87.022987)) + (spring (first 24) (second 14) (length 54.625999)) + (spring (first 14) (second 23) (length 44.102154)) + (spring (first 24) (second 17) (length 48.703182)) + (spring (first 24) (second 25) (length 93.000000)) + (spring (first 25) (second 17) (length 49.648766)) + (spring (first 25) (second 16) (length 43.278172)) + (spring (first 25) (second 26) (length 90.520714)) + (spring (first 26) (second 16) (length 54.083271)) + (spring (first 26) (second 13) (length 34.713108)) + (spring (first 26) (second 28) (length 43.174065)) + (spring (first 28) (second 13) (length 24.839485)) + (spring (first 28) (second 15) (length 32.557640)) + (spring (first 15) (second 29) (length 21.840330)) + (spring (first 28) (second 29) (length 28.160255)) + (spring (first 21) (second 31) (length 21.540659)) + (spring (first 31) (second 15) (length 33.615471)) + (spring (first 22) (second 32) (length 30.610456)) + (spring (first 32) (second 23) (length 38.288380)) + (spring (first 32) (second 14) (length 66.007576)) + (spring (first 35) (second 23) (length 16.970562)) + (spring (first 29) (second 36) (length 28.792360)) + (spring (first 37) (second 29) (length 30.232433)) + (spring (first 38) (second 23) (length 17.720045)) + (spring (first 38) (second 35) (length 29.832869)) + (spring (first 36) (second 37) (length 27.073973)) + (spring (first 31) (second 39) (length 116.155067)) + (spring (first 39) (second 15) (length 105.990562)) + (spring (first 29) (second 40) (length 63.906181)) + (spring (first 40) (second 39) (length 44.102154)) + (spring (first 40) (second 15) (length 66.007576)) + (spring (first 31) (second 41) (length 85.866173)) + (spring (first 41) (second 39) (length 43.278172)) + (spring (first 41) (second 40) (length 52.153618)) + (spring (first 41) (second 42) (length 33.837849)) + (spring (first 42) (second 43) (length 30.413813)) + (spring (first 43) (second 39) (length 31.064449)) + (spring (first 42) (second 39) (length 47.265209)) + (spring (first 41) (second 43) (length 50.039986)) + (spring (first 43) (second 44) (length 38.626415)) + (spring (first 44) (second 45) (length 22.825424)) + (spring (first 45) (second 42) (length 30.528675)) + (spring (first 45) (second 43) (length 47.381432)) + (spring (first 42) (second 44) (length 39.000000)) + (spring (first 29) (second 41) (length 97.836601)) + (spring (first 29) (second 20) (length 102.357216)) + (spring (first 29) (second 21) (length 58.796257)) + (spring (first 45) (second 46) (length 33.241539)) + (spring (first 46) (second 47) (length 17.464249)) + (spring (first 47) (second 44) (length 39.051247)) + (spring (first 47) (second 45) (length 39.623226)) + (spring (first 46) (second 48) (length 37.363083)) + (spring (first 48) (second 49) (length 16.000000)) + (spring (first 49) (second 47) (length 41.000000)) + (spring (first 49) (second 46) (length 44.407207)) + (spring (first 39) (second 50) (length 32.280025)) + (spring (first 50) (second 43) (length 37.696156)) + (spring (first 43) (second 51) (length 34.132095)) + (spring (first 51) (second 44) (length 38.587563)) + (spring (first 44) (second 52) (length 36.674240)) + (spring (first 52) (second 47) (length 41.109608)) + (spring (first 47) (second 53) (length 40.853397)) + (spring (first 53) (second 49) (length 38.288380)) + (spring (first 21) (second 54) (length 34.058773)) + (spring (first 54) (second 31) (length 31.622776)) + (spring (first 31) (second 55) (length 41.773197)) + (spring (first 55) (second 41) (length 52.345009)) + (spring (first 55) (second 40) (length 75.286118)) + (spring (first 54) (second 55) (length 49.040798)) + (spring (first 21) (second 55) (length 62.425957)) + (spring (first 20) (second 54) (length 80.919716)) + (spring (first 41) (second 56) (length 32.140316)) + (spring (first 56) (second 42) (length 33.615471)) + (spring (first 42) (second 57) (length 36.400551)) + (spring (first 57) (second 45) (length 30.083218)) + (spring (first 58) (second 46) (length 32.000000)) + (spring (first 58) (second 45) (length 36.891735)) + (spring (first 46) (second 59) (length 33.615471)) + (spring (first 59) (second 48) (length 27.892651)) + (spring (first 48) (second 60) (length 28.160255)) + (spring (first 60) (second 49) (length 28.160255)) + (spring (first 40) (second 61) (length 44.721359)) + (spring (first 61) (second 39) (length 32.756680)) + (spring (first 56) (second 50) (length 96.176918)) + (spring (first 57) (second 51) (length 86.400230)) + (spring (first 58) (second 52) (length 83.671982)) + (spring (first 59) (second 53) (length 74.215904)) + (spring (first 48) (second 47) (length 40.607880)) + (spring (first 46) (second 44) (length 42.755116)) + (spring (first 41) (second 44) (length 72.470680)) + (spring (first 42) (second 39) (length 47.265209)) + (spring (first 42) (second 40) (length 77.878113)) + (spring (first 41) (second 29) (length 97.836601)) + (spring (first 56) (second 57) (length 27.658634)) + (spring (first 57) (second 58) (length 24.698177)) + (spring (first 58) (second 59) (length 32.649654)) + (spring (first 53) (second 52) (length 47.296936)) + (spring (first 52) (second 51) (length 43.081318)) + (spring (first 51) (second 50) (length 42.941822)) + (spring (first 50) (second 61) (length 33.241539)) + (spring (first 61) (second 55) (length 113.225441)) + (spring (first 29) (second 61) (length 104.938080)) + (spring (first 55) (second 56) (length 55.470715)) + (spring (first 16) (second 21) (length 100.702530)) + (spring (first 16) (second 54) (length 123.745705)) + (spring (first 54) (second 62) (length 55.461697)) + (spring (first 62) (second 55) (length 22.022715)) + (spring (first 62) (second 56) (length 48.166378)) + (spring (first 29) (second 20) (length 102.357216)) + (spring (first 29) (second 55) (length 80.894997)) + (spring (first 7) (second 63) (length 37.643059)) + (spring (first 63) (second 5) (length 66.007576)) + (spring (first 5) (second 64) (length 49.517673)) + (spring (first 64) (second 63) (length 46.097721)) + (spring (first 64) (second 7) (length 54.332310)) + (spring (first 35) (second 71) (length 326.932709)) + (spring (first 71) (second 38) (length 329.655884)) + (spring (first 23) (second 71) (length 336.732819)) + (spring (first 4) (second 72) (length 59.908264)) + (spring (first 72) (second 5) (length 44.777225)) + (spring (first 4) (second 73) (length 72.401657)) + (spring (first 73) (second 74) (length 52.038448)) + (spring (first 74) (second 63) (length 65.000000)) + (spring (first 74) (second 5) (length 42.379242)) + (spring (first 72) (second 73) (length 24.186773)) + (spring (first 72) (second 74) (length 59.236813)) + (spring (first 77) (second 37) (length 351.039886)) + (spring (first 36) (second 77) (length 352.164734)) + (spring (first 29) (second 77) (length 377.572510)) + (spring (first 35) (second 4) (length 89.554451)) + )) + +;; EOF ;; diff --git a/examples/shangon.construo b/examples/shangon.construo new file mode 100644 index 0000000..25e5fd0 --- /dev/null +++ b/examples/shangon.construo @@ -0,0 +1,158 @@ + +(construo-scene + (particles + (particle (id 1) (pos 0 600 0 ) (velocity 0.00599341 -0.0480188 0 ) ) + (particle (id 2) (pos 58.2063 599.844 0 ) (velocity -0.211506 0.430429 0 ) ) + (particle (id 3) (pos 54.4092 509.058 0 ) (velocity -0.0255584 -0.0590518 0 ) ) + (particle (id 4) (pos 8.08801 511.483 0 ) (velocity 0.112943 0.0520916 0 ) ) + (particle (id 5) (pos 4.45834 402.445 0 ) (velocity -0.0638424 0.017425 0 ) ) + (particle (id 6) (pos 46.7848 399.049 0 ) (velocity 0.134348 0.1823 0 ) ) + (particle (id 7) (pos 0 312.955 0 ) (velocity 0.000671741 0.00238258 0 ) ) + (particle (id 8) (pos 31.9848 310.733 0 ) (velocity 0.219141 -0.0442654 0 ) ) + (particle (id 9) (pos 19.0172 213.167 0 ) (velocity -0.186035 -0.065241 0 ) ) + (particle (id 10) (pos 48.1751 221.887 0 ) (velocity -0.2883 -0.113835 0 ) ) + (particle (id 11) (pos 17.0977 133.195 0 ) (velocity -0.0903262 -0.387741 0 ) ) + (particle (id 12) (pos 51.8482 138.641 0 ) (velocity -0.0609884 -0.0375154 0 ) ) + (particle (id 13) (pos 52.1936 22.0285 0 ) (velocity 0.692958 -0.0488799 0 ) ) + (particle (id 14) (pos 104.831 38.7641 0 ) (velocity 0.595824 0.305624 0 ) ) + (particle (id 15) (pos 84.194 57.2706 0 ) (velocity 0.475958 0.139575 0 ) ) + (particle (id 16) (pos 434.865 600 0 ) (velocity 0.00028083 -0.01 0 ) ) + (particle (id 17) (pos 800 600 0 ) (velocity -0.00748984 -0.0349818 0 ) ) + (particle (id 18) (pos 730.634 600 0 ) (velocity -0.000138819 -0.0685794 0 ) ) + (particle (id 19) (pos 731.313 504.475 0 ) (velocity 0.152397 -0.013155 0 ) ) + (particle (id 20) (pos 771.6 506.641 0 ) (velocity 0.159933 0.0656082 0 ) ) + (particle (id 21) (pos 764.142 454.255 0 ) (velocity 0.355306 0.0834162 0 ) ) + (particle (id 22) (pos 728.383 448.502 0 ) (velocity 0.347744 -0.0331645 0 ) ) + (particle (id 23) (pos 733.496 346.958 0 ) (velocity 0.612244 0.0409533 0 ) ) + (particle (id 24) (pos 786.959 349.071 0 ) (velocity 0.617518 0.135709 0 ) ) + (particle (id 25) (pos 749.131 237.915 0 ) (velocity 0.80407 0.156447 0 ) ) + (particle (id 26) (pos 789.926 228.409 0 ) (velocity 0.738733 0.0306262 0 ) ) + (particle (id 27) (pos 725.862 106.112 0 ) (velocity -0.0990164 0.397593 0 ) ) + (particle (id 28) (pos 762.088 93.9614 0 ) (velocity -0.193381 0.100602 0 ) ) + (particle (id 29) (pos 710.817 30.2267 0 ) (velocity -0.722546 0.529386 0 ) ) + (particle (id 30) (pos 749.225 18.9075 0 ) (velocity -0.850706 0.192463 0 ) ) + (particle (id 91) (pos 213.878 72.8378 0 ) (velocity 0.352605 0.964102 0 ) ) + (particle (id 92) (pos 197.827 117.166 0 ) (velocity 0.12714 0.818906 0 ) ) + (particle (id 93) (pos 283.466 130.582 0 ) (velocity -0.029695 1.35861 0 ) ) + (particle (id 94) (pos 293.765 77.6299 0 ) (velocity 0.310073 1.32504 0 ) ) + (particle (id 95) (pos 400.558 96.487 0 ) (velocity 0.0644163 2.04799 0 ) ) + (particle (id 96) (pos 391.711 146.033 0 ) (velocity -0.143905 1.9995 0 ) ) + (particle (id 97) (pos 419.703 143.236 0 ) (velocity -0.133459 2.12248 0 ) ) + (particle (id 98) (pos 437.713 90.2974 0 ) (velocity -0.00777834 2.12881 0 ) ) + (particle (id 99) (pos 509.269 88.8487 0 ) (velocity -0.144786 2.09032 0 ) ) + (particle (id 100) (pos 509.959 132.988 0 ) (velocity 0.0323844 2.05289 0 ) ) + (particle (id 101) (pos 616.971 113.446 0 ) (velocity -0.0355149 1.27732 0 ) ) + (particle (id 102) (pos 606.556 60.5059 0 ) (velocity -0.401296 1.35646 0 ) ) + (particle (id 103) (pos 644.805 94.962 0 ) (velocity -0.176384 1.10941 0 ) ) + (particle (id 104) (pos 581.104 70.6444 0 ) (velocity -0.305719 1.53441 0 ) ) + ) + (springs + (spring (first 1)(second 2)) + (spring (first 2)(second 3)) + (spring (first 3)(second 4)) + (spring (first 4)(second 1)) + (spring (first 4)(second 2)) + (spring (first 3)(second 1)) + (spring (first 4)(second 5)) + (spring (first 5)(second 6)) + (spring (first 6)(second 3)) + (spring (first 6)(second 4)) + (spring (first 5)(second 3)) + (spring (first 5)(second 7)) + (spring (first 7)(second 8)) + (spring (first 8)(second 6)) + (spring (first 8)(second 5)) + (spring (first 7)(second 9)) + (spring (first 9)(second 10)) + (spring (first 10)(second 8)) + (spring (first 9)(second 8)) + (spring (first 10)(second 7)) + (spring (first 9)(second 11)) + (spring (first 11)(second 12)) + (spring (first 12)(second 10)) + (spring (first 12)(second 9)) + (spring (first 11)(second 10)) + (spring (first 11)(second 13)) + (spring (first 13)(second 14)) + (spring (first 14)(second 12)) + (spring (first 13)(second 12)) + (spring (first 15)(second 11)) + (spring (first 15)(second 12)) + (spring (first 14)(second 15)) + (spring (first 15)(second 13)) + (spring (first 16)(second 17)) + (spring (first 17)(second 18)) + (spring (first 18)(second 19)) + (spring (first 19)(second 20)) + (spring (first 20)(second 17)) + (spring (first 20)(second 18)) + (spring (first 19)(second 17)) + (spring (first 20)(second 21)) + (spring (first 21)(second 22)) + (spring (first 22)(second 19)) + (spring (first 22)(second 20)) + (spring (first 21)(second 19)) + (spring (first 22)(second 23)) + (spring (first 23)(second 24)) + (spring (first 24)(second 21)) + (spring (first 21)(second 23)) + (spring (first 24)(second 22)) + (spring (first 23)(second 25)) + (spring (first 25)(second 26)) + (spring (first 26)(second 24)) + (spring (first 25)(second 27)) + (spring (first 27)(second 28)) + (spring (first 28)(second 26)) + (spring (first 27)(second 26)) + (spring (first 28)(second 25)) + (spring (first 27)(second 29)) + (spring (first 29)(second 30)) + (spring (first 30)(second 28)) + (spring (first 30)(second 27)) + (spring (first 29)(second 28)) + (spring (first 25)(second 24)) + (spring (first 26)(second 23)) + (spring (first 14)(second 91)) + (spring (first 91)(second 92)) + (spring (first 92)(second 12)) + (spring (first 12)(second 91)) + (spring (first 14)(second 92)) + (spring (first 92)(second 93)) + (spring (first 93)(second 94)) + (spring (first 94)(second 91)) + (spring (first 94)(second 95)) + (spring (first 95)(second 96)) + (spring (first 96)(second 93)) + (spring (first 97)(second 96)) + (spring (first 97)(second 98)) + (spring (first 98)(second 95)) + (spring (first 98)(second 99)) + (spring (first 99)(second 100)) + (spring (first 100)(second 97)) + (spring (first 100)(second 101)) + (spring (first 101)(second 102)) + (spring (first 102)(second 99)) + (spring (first 102)(second 29)) + (spring (first 101)(second 28)) + (spring (first 27)(second 101)) + (spring (first 103)(second 101)) + (spring (first 103)(second 29)) + (spring (first 103)(second 27)) + (spring (first 102)(second 103)) + (spring (first 101)(second 99)) + (spring (first 104)(second 100)) + (spring (first 104)(second 102)) + (spring (first 104)(second 101)) + (spring (first 104)(second 99)) + (spring (first 99)(second 97)) + (spring (first 98)(second 100)) + (spring (first 97)(second 95)) + (spring (first 96)(second 98)) + (spring (first 94)(second 96)) + (spring (first 95)(second 93)) + (spring (first 91)(second 93)) + (spring (first 94)(second 92)) + (spring (first 101)(second 25)) + (spring (first 10)(second 92)) + ) +) diff --git a/examples/simple.construo b/examples/simple.construo new file mode 100644 index 0000000..b1f07d5 --- /dev/null +++ b/examples/simple.construo @@ -0,0 +1,36 @@ +;; Written by construo 0.2.1rc2 +(construo-scene + (version 3) + (author "Pasi Kallinen" "") + (particles + (particle (id 0) (pos 691.405579 577.590454) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 1) (pos 348.282806 -210.665619) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 1041.484497 -206.028793) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 675.176819 -173.571228) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 740.091980 -465.689148) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 587.076599 -465.688995) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 665.902649 -451.778503) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 1264.048584 503.401367) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 114.123840 501.082916) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos 691.405579 517.312012) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 859.698181) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 693.217163) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 0) (length 858.262451) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 3) (length 328.991943) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 2) (length 367.742859) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 4) (length 299.243805) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 5) (length 153.015381) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 6) (length 80.044037) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 0) (length 582.329468) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 7) (length 577.428833) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 11) (length 577.509827) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 7) (length 572.811951) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 1) (length 804.788635) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 2) (length 803.602661) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + )) + +;; EOF ;; diff --git a/examples/stabilo.construo b/examples/stabilo.construo new file mode 100644 index 0000000..5644b96 --- /dev/null +++ b/examples/stabilo.construo @@ -0,0 +1,242 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 2) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 287) (pos 66.923927 -650.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 288) (pos 30.924042 -672.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 289) (pos 102.923912 -672.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 290) (pos 101.923912 -629.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 291) (pos 30.924042 -630.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 292) (pos 128.924011 -652.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 293) (pos -42.075928 -672.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 294) (pos -41.075928 -631.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 295) (pos 65.923927 -620.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 296) (pos 67.923927 -686.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 297) (pos 157.924042 -671.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 298) (pos 161.924042 -630.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 299) (pos 120.923958 -618.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 300) (pos 124.923981 -686.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 301) (pos 175.924042 -653.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 302) (pos -79.075958 -652.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 303) (pos -118.075989 -632.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 304) (pos -118.075989 -677.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 329) (pos 209.923950 -671.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 330) (pos 207.923950 -638.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 331) (pos 249.923782 -639.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 332) (pos 248.923782 -677.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 333) (pos 224.923935 -658.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 335) (pos 206.923950 -619.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 336) (pos 211.923950 -694.763184) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 343) (pos 16.924076 -692.763184) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 344) (pos 21.924080 -610.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 347) (pos 249.923782 -623.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 373) (pos 70.923927 -718.763184) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 374) (pos 63.923927 -591.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 375) (pos 150.924026 -592.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 376) (pos 145.924026 -715.763184) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 489) (pos -155.075851 -633.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 490) (pos -153.075882 -666.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 492) (pos -195.075821 -658.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 493) (pos -196.075821 -636.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 495) (pos -233.075806 -662.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 496) (pos -196.075821 -618.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 497) (pos -196.075821 -677.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 498) (pos -148.075897 -685.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 499) (pos -158.075851 -614.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 510) (pos -74.075943 -685.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 511) (pos -79.075958 -616.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1004) (pos -79.075958 -703.763184) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1005) (pos -27.075958 -706.763184) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1006) (pos -67.075943 -724.763184) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1007) (pos -109.075943 -713.763184) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1008) (pos -140.075912 -704.763184) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1014) (pos 279.923645 -651.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1015) (pos 280.923645 -627.763245) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1016) (pos -224.425858 -629.599792) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1017) (pos -58.000000 -156.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 10.000000)) + (particle (id 1018) (pos -6.000000 -253.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1019) (pos 3.000000 -366.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1020) (pos 102.000000 -366.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1021) (pos 108.000000 -248.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1022) (pos 145.000000 -145.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1023) (pos 183.000000 7.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1024) (pos 102.000000 11.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1026) (pos 52.000000 -147.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 10.000000)) + (particle (id 1029) (pos 23.000000 -467.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1030) (pos 75.000000 -470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 288) (second 289) (length 71.999870)) + (spring (first 289) (second 290) (length 43.011627)) + (spring (first 290) (second 291) (length 71.006912)) + (spring (first 291) (second 288) (length 42.000000)) + (spring (first 288) (second 287) (length 42.189949)) + (spring (first 291) (second 287) (length 41.182419)) + (spring (first 289) (second 287) (length 42.190033)) + (spring (first 287) (second 290) (length 40.816650)) + (spring (first 290) (second 292) (length 35.468372)) + (spring (first 292) (second 289) (length 32.802517)) + (spring (first 288) (second 293) (length 72.999969)) + (spring (first 293) (second 294) (length 41.012192)) + (spring (first 294) (second 291) (length 72.006912)) + (spring (first 291) (second 293) (length 84.219925)) + (spring (first 288) (second 294) (length 82.855270)) + (spring (first 291) (second 295) (length 36.400440)) + (spring (first 295) (second 290) (length 37.107937)) + (spring (first 288) (second 296) (length 39.559975)) + (spring (first 296) (second 289) (length 37.696140)) + (spring (first 296) (second 287) (length 36.013885)) + (spring (first 295) (second 287) (length 30.016663)) + (spring (first 289) (second 297) (length 55.009220)) + (spring (first 297) (second 292) (length 34.669899)) + (spring (first 290) (second 298) (length 60.008461)) + (spring (first 298) (second 292) (length 39.661091)) + (spring (first 297) (second 298) (length 41.194660)) + (spring (first 295) (second 299) (length 55.036381)) + (spring (first 299) (second 298) (length 42.720100)) + (spring (first 299) (second 290) (length 21.954538)) + (spring (first 299) (second 292) (length 34.928509)) + (spring (first 296) (second 300) (length 57.000053)) + (spring (first 300) (second 297) (length 36.249195)) + (spring (first 300) (second 289) (length 26.076868)) + (spring (first 300) (second 292) (length 34.234489)) + (spring (first 297) (second 301) (length 25.455845)) + (spring (first 301) (second 298) (length 26.925823)) + (spring (first 301) (second 292) (length 47.010666)) + (spring (first 292) (second 287) (length 62.032333)) + (spring (first 293) (second 302) (length 42.059509)) + (spring (first 302) (second 294) (length 43.416615)) + (spring (first 302) (second 287) (length 146.013580)) + (spring (first 294) (second 303) (length 77.006554)) + (spring (first 303) (second 304) (length 45.000000)) + (spring (first 304) (second 293) (length 76.164360)) + (spring (first 302) (second 304) (length 46.324966)) + (spring (first 302) (second 303) (length 43.829243)) + (spring (first 297) (second 329) (length 51.999908)) + (spring (first 329) (second 301) (length 38.470688)) + (spring (first 301) (second 330) (length 35.341110)) + (spring (first 330) (second 329) (length 33.060551)) + (spring (first 330) (second 298) (length 46.690380)) + (spring (first 330) (second 331) (length 42.011734)) + (spring (first 331) (second 332) (length 38.013157)) + (spring (first 332) (second 329) (length 39.458672)) + (spring (first 329) (second 333) (length 19.849422)) + (spring (first 333) (second 330) (length 26.248800)) + (spring (first 333) (second 331) (length 31.400515)) + (spring (first 333) (second 332) (length 30.610336)) + (spring (first 298) (second 335) (length 46.324852)) + (spring (first 335) (second 331) (length 47.423470)) + (spring (first 335) (second 330) (length 19.026299)) + (spring (first 297) (second 336) (length 58.694016)) + (spring (first 336) (second 329) (length 23.086733)) + (spring (first 336) (second 332) (length 40.718369)) + (spring (first 300) (second 336) (length 87.367004)) + (spring (first 299) (second 335) (length 86.005806)) + (spring (first 293) (second 343) (length 62.297657)) + (spring (first 343) (second 296) (length 51.351574)) + (spring (first 343) (second 288) (length 24.413042)) + (spring (first 294) (second 344) (length 66.407837)) + (spring (first 344) (second 295) (length 45.121906)) + (spring (first 344) (second 291) (length 21.931696)) + (spring (first 335) (second 347) (length 43.185478)) + (spring (first 347) (second 331) (length 16.000000)) + (spring (first 343) (second 373) (length 59.933163)) + (spring (first 373) (second 296) (length 32.140255)) + (spring (first 373) (second 300) (length 62.769436)) + (spring (first 344) (second 374) (length 46.097584)) + (spring (first 374) (second 295) (length 29.068884)) + (spring (first 374) (second 299) (length 63.071415)) + (spring (first 374) (second 375) (length 87.005844)) + (spring (first 375) (second 335) (length 62.169056)) + (spring (first 375) (second 299) (length 39.698917)) + (spring (first 373) (second 376) (length 75.060074)) + (spring (first 376) (second 336) (length 69.260307)) + (spring (first 376) (second 300) (length 35.805004)) + (spring (first 303) (second 489) (length 37.013374)) + (spring (first 489) (second 490) (length 33.060547)) + (spring (first 490) (second 304) (length 36.687771)) + (spring (first 490) (second 303) (length 48.795414)) + (spring (first 489) (second 304) (length 57.489040)) + (spring (first 490) (second 492) (length 42.755058)) + (spring (first 492) (second 493) (length 22.022715)) + (spring (first 493) (second 489) (length 41.109581)) + (spring (first 489) (second 492) (length 47.169880)) + (spring (first 490) (second 493) (length 52.430859)) + (spring (first 495) (second 492) (length 38.209930)) + (spring (first 495) (second 493) (length 45.221664)) + (spring (first 496) (second 493) (length 18.000000)) + (spring (first 496) (second 489) (length 43.657730)) + (spring (first 492) (second 497) (length 19.026299)) + (spring (first 497) (second 495) (length 39.924915)) + (spring (first 497) (second 490) (length 44.384624)) + (spring (first 497) (second 498) (length 48.662025)) + (spring (first 498) (second 490) (length 19.646879)) + (spring (first 498) (second 304) (length 31.048262)) + (spring (first 496) (second 499) (length 38.209915)) + (spring (first 499) (second 489) (length 19.235384)) + (spring (first 499) (second 303) (length 43.863300)) + (spring (first 304) (second 510) (length 44.721405)) + (spring (first 510) (second 302) (length 33.376640)) + (spring (first 510) (second 293) (length 34.539845)) + (spring (first 510) (second 343) (length 91.268845)) + (spring (first 302) (second 511) (length 36.000000)) + (spring (first 511) (second 303) (length 42.154507)) + (spring (first 511) (second 294) (length 40.853424)) + (spring (first 511) (second 344) (length 101.178101)) + (spring (first 498) (second 510) (length 73.999954)) + (spring (first 499) (second 511) (length 79.025208)) + (spring (first 293) (second 296) (length 110.887184)) + (spring (first 294) (second 295) (length 107.563789)) + (spring (first 498) (second 1004) (length 71.309113)) + (spring (first 510) (second 1004) (length 18.681486)) + (spring (first 1005) (second 1004) (length 52.086468)) + (spring (first 1005) (second 343) (length 46.173618)) + (spring (first 1005) (second 510) (length 51.478111)) + (spring (first 1004) (second 343) (length 96.628189)) + (spring (first 1005) (second 1006) (length 43.863411)) + (spring (first 1006) (second 1004) (length 24.186781)) + (spring (first 1006) (second 1007) (length 43.416588)) + (spring (first 1007) (second 1004) (length 31.622763)) + (spring (first 1007) (second 1008) (length 32.279995)) + (spring (first 1008) (second 498) (length 20.615465)) + (spring (first 1008) (second 1004) (length 61.008152)) + (spring (first 1007) (second 498) (length 48.010342)) + (spring (first 332) (second 1014) (length 40.459751)) + (spring (first 1014) (second 331) (length 32.310860)) + (spring (first 1014) (second 1015) (length 24.020824)) + (spring (first 1015) (second 347) (length 31.256863)) + (spring (first 1016) (second 495) (length 34.272964)) + (spring (first 1016) (second 496) (length 30.350540)) + (spring (first 493) (second 1016) (length 29.241060)) + (spring (first 1017) (second 1018) (length 110.059074)) + (spring (first 1018) (second 1019) (length 113.357841)) + (spring (first 1019) (second 1020) (length 99.000000)) + (spring (first 1020) (second 1021) (length 118.152443)) + (spring (first 1021) (second 1018) (length 114.109596)) + (spring (first 1018) (second 1022) (length 185.647522)) + (spring (first 1017) (second 1021) (length 189.789352)) + (spring (first 1021) (second 1022) (length 109.444046)) + (spring (first 1022) (second 1023) (length 156.678009)) + (spring (first 1023) (second 1024) (length 81.098709)) + (spring (first 1026) (second 1024) (length 165.722656)) + (spring (first 1022) (second 1026) (length 93.021500)) + (spring (first 1026) (second 1017) (length 110.367569)) + (spring (first 1023) (second 1026) (length 202.180618)) + (spring (first 1022) (second 1024) (length 161.817795)) + (spring (first 1019) (second 1021) (length 157.952530)) + (spring (first 1018) (second 1020) (length 156.310593)) + (spring (first 1019) (second 1029) (length 102.961159)) + (spring (first 1029) (second 1030) (length 52.086468)) + (spring (first 1030) (second 1020) (length 107.447662)) + (spring (first 1030) (second 1019) (length 126.491104)) + (spring (first 1020) (second 1029) (length 128.226364)) + (spring (first 1029) (second 374) (length 131.303604)) + (spring (first 374) (second 1030) (length 122.265968)) + (spring (first 1029) (second 344) (length 143.767273)) + (spring (first 344) (second 1030) (length 150.437180)) + (spring (first 344) (second 375) (length 130.249710)) + (spring (first 374) (second 288) (length 87.464233)) + )) + +;; EOF ;; diff --git a/examples/stretch.construo b/examples/stretch.construo new file mode 100644 index 0000000..e8931ee --- /dev/null +++ b/examples/stretch.construo @@ -0,0 +1,162 @@ +;; Written by construo 0.1.0 +(construo-scene + (version 2) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 67.000000 592.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 1) (pos 121.000000 592.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos 135.000000 508.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos 191.000000 425.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos 299.000000 361.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos 414.000000 339.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos 530.000000 363.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos 610.000000 444.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos 647.000000 518.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos 665.000000 596.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos 723.000000 596.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos 700.000000 508.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos 659.000000 419.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 552.000000 313.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos 414.000000 289.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 283.000000 311.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos 168.000000 382.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 17) (pos 91.000000 491.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 349.000000 265.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos 482.000000 265.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos 371.000000 213.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 21) (pos 464.000000 212.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos 458.000000 162.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos 379.000000 161.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos 401.000000 120.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 25) (pos 438.000000 120.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos 405.000000 73.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 27) (pos 436.000000 73.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos 399.000000 35.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos 441.000000 36.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 30) (pos 363.000000 49.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos 354.000000 17.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 32) (pos 483.000000 22.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 33) (pos 480.000000 54.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 34) (pos 301.000000 16.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 35) (pos 303.000000 42.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos 543.000000 47.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos 545.000000 18.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos 237.000000 36.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 39) (pos 237.000000 10.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 40) (pos 605.000000 18.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 41) (pos 601.000000 43.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 42) (pos 398.000000 11.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 43) (pos 436.000000 11.000000 0.000000) (velocity 0.000000 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 0) (second 1) (length 54.000000)) + (spring (first 1) (second 2) (length 85.158676)) + (spring (first 2) (second 3) (length 100.124924)) + (spring (first 3) (second 4) (length 125.538841)) + (spring (first 4) (second 5) (length 117.085442)) + (spring (first 5) (second 6) (length 118.456741)) + (spring (first 6) (second 7) (length 113.846390)) + (spring (first 7) (second 8) (length 82.734512)) + (spring (first 8) (second 9) (length 80.049988)) + (spring (first 9) (second 10) (length 58.000000)) + (spring (first 10) (second 11) (length 90.956032)) + (spring (first 11) (second 12) (length 97.989792)) + (spring (first 12) (second 13) (length 150.615402)) + (spring (first 13) (second 14) (length 140.071411)) + (spring (first 14) (second 15) (length 132.834488)) + (spring (first 15) (second 16) (length 135.151764)) + (spring (first 16) (second 17) (length 133.454117)) + (spring (first 17) (second 0) (length 103.812332)) + (spring (first 17) (second 2) (length 47.169907)) + (spring (first 16) (second 3) (length 48.764740)) + (spring (first 4) (second 15) (length 52.497620)) + (spring (first 5) (second 14) (length 50.000000)) + (spring (first 6) (second 13) (length 54.625999)) + (spring (first 7) (second 12) (length 55.009090)) + (spring (first 8) (second 11) (length 53.935146)) + (spring (first 0) (second 2) (length 108.074051)) + (spring (first 17) (second 3) (length 119.816528)) + (spring (first 16) (second 4) (length 132.672531)) + (spring (first 15) (second 5) (length 133.958954)) + (spring (first 5) (second 13) (length 140.427917)) + (spring (first 6) (second 12) (length 140.630722)) + (spring (first 7) (second 11) (length 110.435501)) + (spring (first 8) (second 10) (length 108.903625)) + (spring (first 15) (second 18) (length 80.448738)) + (spring (first 18) (second 19) (length 133.000000)) + (spring (first 19) (second 13) (length 84.876381)) + (spring (first 19) (second 14) (length 72.111023)) + (spring (first 14) (second 18) (length 69.289246)) + (spring (first 18) (second 20) (length 56.462376)) + (spring (first 20) (second 21) (length 93.005379)) + (spring (first 21) (second 19) (length 55.973209)) + (spring (first 21) (second 22) (length 50.358715)) + (spring (first 22) (second 23) (length 79.006332)) + (spring (first 23) (second 20) (length 52.611786)) + (spring (first 18) (second 21) (length 126.625435)) + (spring (first 20) (second 19) (length 122.576508)) + (spring (first 23) (second 21) (length 99.126183)) + (spring (first 22) (second 20) (length 100.846420)) + (spring (first 23) (second 24) (length 46.529560)) + (spring (first 24) (second 25) (length 37.000000)) + (spring (first 25) (second 22) (length 46.518814)) + (spring (first 25) (second 23) (length 71.847061)) + (spring (first 24) (second 22) (length 70.802544)) + (spring (first 24) (second 26) (length 47.169907)) + (spring (first 26) (second 27) (length 31.000000)) + (spring (first 27) (second 25) (length 47.042534)) + (spring (first 27) (second 24) (length 58.600342)) + (spring (first 26) (second 25) (length 57.428215)) + (spring (first 26) (second 23) (length 91.760559)) + (spring (first 27) (second 22) (length 91.678787)) + (spring (first 26) (second 28) (length 38.470768)) + (spring (first 28) (second 29) (length 42.011902)) + (spring (first 29) (second 27) (length 37.336308)) + (spring (first 28) (second 27) (length 53.037724)) + (spring (first 26) (second 29) (length 51.623638)) + (spring (first 26) (second 30) (length 48.373547)) + (spring (first 30) (second 31) (length 33.241539)) + (spring (first 31) (second 28) (length 48.466484)) + (spring (first 28) (second 30) (length 38.626415)) + (spring (first 31) (second 26) (length 75.742989)) + (spring (first 29) (second 32) (length 44.271889)) + (spring (first 32) (second 33) (length 32.140316)) + (spring (first 33) (second 27) (length 47.927029)) + (spring (first 29) (second 33) (length 42.953465)) + (spring (first 32) (second 27) (length 69.354164)) + (spring (first 31) (second 34) (length 53.009434)) + (spring (first 34) (second 35) (length 26.076809)) + (spring (first 35) (second 30) (length 60.406952)) + (spring (first 33) (second 36) (length 63.387695)) + (spring (first 36) (second 37) (length 29.068884)) + (spring (first 37) (second 32) (length 62.128899)) + (spring (first 32) (second 36) (length 65.000000)) + (spring (first 37) (second 33) (length 74.303429)) + (spring (first 34) (second 30) (length 70.235321)) + (spring (first 31) (second 35) (length 56.797886)) + (spring (first 35) (second 38) (length 66.272163)) + (spring (first 38) (second 39) (length 26.000000)) + (spring (first 39) (second 34) (length 64.280632)) + (spring (first 34) (second 38) (length 67.052216)) + (spring (first 39) (second 35) (length 73.348480)) + (spring (first 37) (second 40) (length 60.000000)) + (spring (first 40) (second 41) (length 25.317978)) + (spring (first 41) (second 36) (length 58.137768)) + (spring (first 37) (second 41) (length 61.326992)) + (spring (first 36) (second 40) (length 68.447060)) + (spring (first 31) (second 42) (length 44.407207)) + (spring (first 42) (second 43) (length 38.000000)) + (spring (first 43) (second 32) (length 48.270073)) + (spring (first 43) (second 29) (length 25.495098)) + (spring (first 42) (second 28) (length 24.020824)) + (spring (first 28) (second 43) (length 44.102154)) + (spring (first 42) (second 29) (length 49.739319)) + (spring (first 3) (second 15) (length 146.492325)) + (spring (first 7) (second 13) (length 143.265488)) + (spring (first 4) (second 18) (length 108.240471)) + (spring (first 18) (second 5) (length 98.493652)) + (spring (first 5) (second 19) (length 100.498756)) + (spring (first 19) (second 6) (length 109.123779)) + )) + +;; EOF ;; diff --git a/examples/temple.construo b/examples/temple.construo new file mode 100644 index 0000000..6975897 --- /dev/null +++ b/examples/temple.construo @@ -0,0 +1,1109 @@ +;; Written by construo 0.2.1rc1 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 430.000000 540.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos 520.000000 540.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 520.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 430.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos 450.000000 530.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 450.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 500.000000 530.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 500.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 460.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 10) (pos 490.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos 460.000000 440.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos 490.000000 440.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 460.000000 410.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 490.000000 410.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 460.000000 380.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 490.000000 380.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 460.000000 350.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 490.000000 350.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 460.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 490.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 21) (pos 460.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 490.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 460.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 490.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 460.000000 230.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 490.000000 230.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 460.000000 200.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 490.000000 200.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 460.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos 490.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos 460.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 490.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos 400.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 550.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 550.000000 590.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 400.000000 590.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 560.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 38) (pos 390.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 39) (pos 790.000000 540.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 880.000000 540.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 41) (pos 880.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 790.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 43) (pos 810.000000 530.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 44) (pos 810.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 45) (pos 860.000000 530.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 46) (pos 860.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 820.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 48) (pos 850.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 820.000000 440.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos 850.000000 440.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 51) (pos 820.000000 410.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 850.000000 410.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 53) (pos 820.000000 380.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 850.000000 380.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 820.000000 350.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 850.000000 350.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 57) (pos 820.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 58) (pos 850.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 820.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 60) (pos 850.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 61) (pos 820.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 850.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 820.000000 230.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 850.000000 230.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 820.000000 200.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 66) (pos 850.000000 200.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 820.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 850.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 820.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 70) (pos 850.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 71) (pos 760.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 910.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 910.000000 590.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 74) (pos 760.000000 590.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 75) (pos 920.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 76) (pos 750.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 77) (pos 490.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 79) (pos 520.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 80) (pos 520.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 81) (pos 550.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 82) (pos 550.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 83) (pos 580.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 84) (pos 580.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 85) (pos 610.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 87) (pos 610.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 88) (pos 640.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 89) (pos 640.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 90) (pos 670.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 91) (pos 670.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 92) (pos 700.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 93) (pos 700.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 94) (pos 730.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 95) (pos 730.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 96) (pos 760.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 97) (pos 760.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 98) (pos 790.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 99) (pos 820.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 100) (pos 790.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 126) (pos 850.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 127) (pos 910.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 128) (pos 460.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 129) (pos 400.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 134) (pos 1010.000000 540.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 135) (pos 1100.000000 540.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 136) (pos 1100.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 137) (pos 1010.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 138) (pos 1030.000000 530.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 139) (pos 1030.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 140) (pos 1080.000000 530.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 141) (pos 1080.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 142) (pos 1040.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 143) (pos 1070.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 144) (pos 1040.000000 440.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 145) (pos 1070.000000 440.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 146) (pos 1040.000000 410.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 147) (pos 1070.000000 410.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 148) (pos 1040.000000 380.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 149) (pos 1070.000000 380.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 150) (pos 1040.000000 350.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 151) (pos 1070.000000 350.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 152) (pos 1040.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 153) (pos 1070.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 154) (pos 1040.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 155) (pos 1070.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 156) (pos 1040.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 157) (pos 1070.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 158) (pos 1040.000000 230.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 159) (pos 1070.000000 230.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 160) (pos 1040.000000 200.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 161) (pos 1070.000000 200.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 162) (pos 1040.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 163) (pos 1070.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 164) (pos 1040.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 165) (pos 1070.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 166) (pos 980.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 167) (pos 1130.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 168) (pos 1130.000000 590.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 169) (pos 980.000000 590.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 170) (pos 1140.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 171) (pos 970.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 172) (pos 1370.000000 540.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 173) (pos 1460.000000 540.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 174) (pos 1460.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 175) (pos 1370.000000 490.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 176) (pos 1390.000000 530.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 177) (pos 1390.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 178) (pos 1440.000000 530.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 179) (pos 1440.000000 500.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 180) (pos 1400.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 181) (pos 1430.000000 470.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 182) (pos 1400.000000 440.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 183) (pos 1430.000000 440.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 184) (pos 1400.000000 410.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 185) (pos 1430.000000 410.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 186) (pos 1400.000000 380.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 187) (pos 1430.000000 380.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 188) (pos 1400.000000 350.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 189) (pos 1430.000000 350.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 190) (pos 1400.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 191) (pos 1430.000000 320.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 192) (pos 1400.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 193) (pos 1430.000000 290.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 194) (pos 1400.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 195) (pos 1430.000000 260.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 196) (pos 1400.000000 230.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 197) (pos 1430.000000 230.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 198) (pos 1400.000000 200.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 199) (pos 1430.000000 200.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 200) (pos 1400.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 201) (pos 1430.000000 170.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 202) (pos 1400.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 203) (pos 1430.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 204) (pos 1340.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 205) (pos 1490.000000 560.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 206) (pos 1490.000000 590.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 207) (pos 1340.000000 590.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 208) (pos 1500.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 209) (pos 1330.000000 600.000000) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 210) (pos 1070.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 211) (pos 1100.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 212) (pos 1100.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 213) (pos 1130.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 214) (pos 1130.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 215) (pos 1160.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 216) (pos 1160.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 217) (pos 1190.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 218) (pos 1190.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 219) (pos 1220.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 220) (pos 1220.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 221) (pos 1250.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 222) (pos 1250.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 223) (pos 1280.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 224) (pos 1280.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 225) (pos 1310.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 226) (pos 1310.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 227) (pos 1340.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 228) (pos 1340.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 229) (pos 1370.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 230) (pos 1400.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 231) (pos 1370.000000 140.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 232) (pos 1430.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 233) (pos 1490.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 234) (pos 1040.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 235) (pos 980.000000 110.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 236) (pos 720.000000 30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 237) (pos 810.000000 30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 238) (pos 810.000000 -20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 239) (pos 720.000000 -20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 240) (pos 740.000000 20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 241) (pos 740.000000 -10.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 242) (pos 790.000000 20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 243) (pos 790.000000 -10.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 244) (pos 750.000000 -40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 245) (pos 780.000000 -40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 246) (pos 750.000000 -70.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 247) (pos 780.000000 -70.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 248) (pos 750.000000 -100.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 249) (pos 780.000000 -100.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 250) (pos 750.000000 -130.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 251) (pos 780.000000 -130.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 252) (pos 750.000000 -160.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 253) (pos 780.000000 -160.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 254) (pos 750.000000 -190.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 255) (pos 780.000000 -190.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 256) (pos 750.000000 -220.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 257) (pos 780.000000 -220.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 258) (pos 750.000000 -250.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 259) (pos 780.000000 -250.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 260) (pos 750.000000 -280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 261) (pos 780.000000 -280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 262) (pos 750.000000 -310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 263) (pos 780.000000 -310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 264) (pos 750.000000 -340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 265) (pos 780.000000 -340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 266) (pos 750.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 267) (pos 780.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 268) (pos 690.000000 50.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 269) (pos 840.000000 50.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 270) (pos 840.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 271) (pos 690.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 272) (pos 850.000000 90.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 273) (pos 680.000000 90.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 274) (pos 1080.000000 30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 275) (pos 1170.000000 30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 276) (pos 1170.000000 -20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 277) (pos 1080.000000 -20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 278) (pos 1100.000000 20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 279) (pos 1100.000000 -10.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 280) (pos 1150.000000 20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 281) (pos 1150.000000 -10.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 282) (pos 1110.000000 -40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 283) (pos 1140.000000 -40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 284) (pos 1110.000000 -70.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 285) (pos 1140.000000 -70.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 286) (pos 1110.000000 -100.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 287) (pos 1140.000000 -100.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 288) (pos 1110.000000 -130.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 289) (pos 1140.000000 -130.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 290) (pos 1110.000000 -160.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 291) (pos 1140.000000 -160.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 292) (pos 1110.000000 -190.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 293) (pos 1140.000000 -190.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 294) (pos 1110.000000 -220.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 295) (pos 1140.000000 -220.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 296) (pos 1110.000000 -250.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 297) (pos 1140.000000 -250.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 298) (pos 1110.000000 -280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 299) (pos 1140.000000 -280.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 300) (pos 1110.000000 -310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 301) (pos 1140.000000 -310.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 302) (pos 1110.000000 -340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 303) (pos 1140.000000 -340.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 304) (pos 1110.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 305) (pos 1140.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 306) (pos 1050.000000 50.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 307) (pos 1200.000000 50.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 308) (pos 1200.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 309) (pos 1050.000000 80.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 310) (pos 1210.000000 90.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 311) (pos 1040.000000 90.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 312) (pos 780.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 313) (pos 810.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 314) (pos 810.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 315) (pos 840.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 316) (pos 840.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 317) (pos 870.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 318) (pos 870.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 319) (pos 900.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 320) (pos 900.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 321) (pos 930.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 322) (pos 930.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 323) (pos 960.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 324) (pos 960.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 325) (pos 990.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 326) (pos 990.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 327) (pos 1020.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 328) (pos 1020.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 329) (pos 1050.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 330) (pos 1050.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 331) (pos 1080.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 332) (pos 1110.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 333) (pos 1080.000000 -370.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 334) (pos 1140.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 335) (pos 1200.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 336) (pos 750.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 337) (pos 690.000000 -400.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 2) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 0) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 5) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 7) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 8) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 8) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 8) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 1) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 0) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 6) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 9) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 10) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 2) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 11) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 10) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 9) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 10) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 15) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 16) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 14) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 13) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 14) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 12) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 11) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 12) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 14) (second 11) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 17) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 16) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 16) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 15) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 17) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 20) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 18) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 17) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 18) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 22) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 23) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 22) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 21) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 22) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 26) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 27) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 28) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 26) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 25) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 26) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 24) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 23) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 24) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 23) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 29) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 30) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 28) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 28) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 27) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 31) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 32) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 30) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 29) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 30) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 20) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 19) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 21) (second 19) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 20) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 33) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 34) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 36) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 33) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 34) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 36) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 35) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 37) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 38) (length 170.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 38) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 37) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 38) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 37) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 38) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 8) (second 5) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 6) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 40) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 41) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 39) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 43) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 45) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 45) (second 46) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 46) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 41) (second 46) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 45) (second 40) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 43) (second 39) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 44) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 42) (second 47) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 48) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 41) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 49) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 50) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 48) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 50) (second 47) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 49) (second 48) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 52) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 53) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 52) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 51) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 52) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 50) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 49) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 51) (second 50) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 52) (second 49) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 53) (second 55) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 54) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 54) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 56) (second 53) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 55) (second 57) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 58) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 56) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 58) (second 55) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 57) (second 56) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 60) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 61) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 60) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 62) (second 59) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 61) (second 60) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 65) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 64) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 66) (second 63) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 64) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 62) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 61) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 63) (second 62) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 64) (second 61) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 65) (second 67) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 68) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 66) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 66) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 65) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 67) (second 69) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 70) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 68) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 67) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 68) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 58) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 57) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 59) (second 57) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 60) (second 58) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 71) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 72) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 73) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 74) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 71) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 72) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 74) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 73) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 75) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 75) (second 76) (length 170.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 76) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 74) (second 75) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 73) (second 76) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 72) (second 75) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 71) (second 76) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 44) (second 45) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 46) (second 43) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 46) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 77) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 77) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 80) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 80) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 77) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 81) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 80) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 81) (second 80) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 82) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 81) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 79) (second 32) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 80) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 81) (second 83) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 83) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 82) (second 84) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 81) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 82) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 85) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 85) (second 87) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 84) (second 87) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 85) (second 84) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 83) (second 87) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 91) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 91) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 92) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 91) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 91) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 93) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 92) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 90) (second 88) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 89) (second 91) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 92) (second 94) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 94) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 93) (second 95) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 92) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 93) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 96) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 95) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 95) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 94) (second 97) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 85) (second 88) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 89) (second 87) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 85) (second 89) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 88) (second 87) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 98) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 99) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 99) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 100) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 97) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 100) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 100) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 98) (second 97) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 96) (second 100) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 70) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 69) (second 98) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 1) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 34) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 72) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 71) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 44) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 8) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 8) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 6) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 48) (second 44) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 47) (second 46) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 36) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 35) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 39) (second 74) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 73) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 100) (second 67) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 30) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 99) (second 126) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 70) (second 126) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 126) (second 69) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 68) (second 127) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 126) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 77) (second 128) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 31) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 128) (second 32) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 29) (second 129) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 129) (second 128) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 135) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 136) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 134) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 138) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 140) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 141) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 141) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 136) (second 141) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 140) (second 135) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 138) (second 134) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 139) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 137) (second 142) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 143) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 136) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 145) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 143) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 145) (second 142) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 144) (second 143) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 147) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 148) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 149) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 147) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 149) (second 146) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 147) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 145) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 144) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 146) (second 145) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 147) (second 144) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 148) (second 150) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 151) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 149) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 149) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 151) (second 148) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 150) (second 152) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 153) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 151) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 153) (second 150) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 152) (second 151) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 155) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 156) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 157) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 155) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 157) (second 154) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 156) (second 155) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 159) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 160) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 160) (second 161) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 161) (second 159) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 161) (second 158) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 160) (second 159) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 159) (second 157) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 156) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 157) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 159) (second 156) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 160) (second 162) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 163) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 161) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 161) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 163) (second 160) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 164) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 164) (second 165) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 163) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 162) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 164) (second 163) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 153) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 152) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 154) (second 152) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 155) (second 153) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 166) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 167) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 168) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 168) (second 169) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 166) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 167) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 169) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 168) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 168) (second 170) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 170) (second 171) (length 170.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 171) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 169) (second 170) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 168) (second 171) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 167) (second 170) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 171) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 139) (second 140) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 141) (second 138) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 139) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 173) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 174) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 175) (second 172) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 176) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 176) (second 178) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 179) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 179) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 174) (second 179) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 178) (second 173) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 176) (second 172) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 175) (second 177) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 175) (second 180) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 181) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 174) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 182) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 183) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 183) (second 181) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 183) (second 180) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 182) (second 181) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 185) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 186) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 186) (second 187) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 185) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 187) (second 184) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 186) (second 185) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 185) (second 183) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 182) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 184) (second 183) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 185) (second 182) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 186) (second 188) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 189) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 189) (second 187) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 187) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 189) (second 186) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 188) (second 190) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 190) (second 191) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 189) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 191) (second 188) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 190) (second 189) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 193) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 194) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 194) (second 195) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 195) (second 193) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 195) (second 192) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 194) (second 193) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 197) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 198) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 199) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 199) (second 197) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 199) (second 196) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 197) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 195) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 194) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 196) (second 195) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 197) (second 194) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 198) (second 200) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 201) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 199) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 199) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 198) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 200) (second 202) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 203) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 201) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 200) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 201) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 191) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 193) (second 190) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 192) (second 190) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 193) (second 191) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 204) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 205) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 206) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 207) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 204) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 205) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 207) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 206) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 208) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 208) (second 209) (length 170.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 209) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 207) (second 208) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 206) (second 209) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 205) (second 208) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 204) (second 209) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 177) (second 178) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 179) (second 176) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 179) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 164) (second 210) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 210) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 212) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 165) (second 212) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 210) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 213) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 212) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 212) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 214) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 213) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 211) (second 165) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 212) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 213) (second 215) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 215) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 214) (second 216) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 213) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 214) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 217) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 216) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 216) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 215) (second 218) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 220) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 222) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 222) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 220) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 223) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 222) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 223) (second 222) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 224) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 223) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 221) (second 219) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 222) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 223) (second 225) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 225) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 224) (second 226) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 223) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 224) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 227) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 228) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 226) (second 228) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 226) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 225) (second 228) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 219) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 220) (second 218) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 217) (second 220) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 219) (second 218) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 229) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 230) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 230) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 231) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 228) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 231) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 231) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 229) (second 228) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 227) (second 231) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 203) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 202) (second 229) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 166) (second 135) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 167) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 205) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 204) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 177) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 141) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 142) (second 141) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 139) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 181) (second 177) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 180) (second 179) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 134) (second 169) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 135) (second 168) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 172) (second 207) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 173) (second 206) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 231) (second 200) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 163) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 230) (second 232) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 203) (second 232) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 232) (second 202) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 201) (second 233) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 233) (second 232) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 210) (second 234) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 164) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 234) (second 165) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 162) (second 235) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 235) (second 234) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 237) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 238) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 236) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 240) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 242) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 243) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 243) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 238) (second 243) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 242) (second 237) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 240) (second 236) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 241) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 239) (second 244) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 245) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 245) (second 238) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 246) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 246) (second 247) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 245) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 247) (second 244) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 246) (second 245) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 249) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 250) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 251) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 249) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 248) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 249) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 247) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 246) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 248) (second 247) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 249) (second 246) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 252) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 253) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 251) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 251) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 250) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 254) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 255) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 253) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 252) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 253) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 257) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 258) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 259) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 259) (second 257) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 259) (second 256) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 257) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 261) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 262) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 263) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 261) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 260) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 261) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 259) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 258) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 259) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 258) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 264) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 265) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 263) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 263) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 262) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 266) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 267) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 265) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 264) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 265) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 255) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 254) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 254) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 255) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 268) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 269) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 270) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 270) (second 271) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 268) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 269) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 271) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 270) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 270) (second 272) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 273) (length 170.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 273) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 271) (second 272) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 270) (second 273) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 269) (second 272) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 273) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 241) (second 242) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 243) (second 240) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 241) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 275) (length 90.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 276) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 274) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 278) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 280) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 281) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 281) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 276) (second 281) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 280) (second 275) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 278) (second 274) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 279) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 277) (second 282) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 283) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 276) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 284) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 285) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 285) (second 283) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 285) (second 282) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 284) (second 283) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 287) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 288) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 289) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 287) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 289) (second 286) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 287) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 285) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 284) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 286) (second 285) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 287) (second 284) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 290) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 291) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 289) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 289) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 291) (second 288) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 292) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 293) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 291) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 293) (second 290) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 291) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 295) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 296) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 297) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 295) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 297) (second 294) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 295) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 299) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 300) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 301) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 299) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 301) (second 298) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 299) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 299) (second 297) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 296) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 297) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 299) (second 296) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 302) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 303) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 303) (second 301) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 301) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 303) (second 300) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 304) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 305) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 305) (second 303) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 305) (second 302) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 303) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 293) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 295) (second 292) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 292) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 295) (second 293) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 306) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 307) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 308) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 309) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 309) (second 306) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 306) (second 307) (length 150.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 309) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 306) (second 308) (length 152.970581) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 310) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 310) (second 311) (length 170.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 309) (second 311) (length 14.142136) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 309) (second 310) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 308) (second 311) (length 160.312195) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 307) (second 310) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 306) (second 311) (length 41.231056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 279) (second 280) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 281) (second 278) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 281) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 312) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 312) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 314) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 314) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 312) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 315) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 314) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 314) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 316) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 315) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 313) (second 267) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 314) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 315) (second 317) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 318) (second 317) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 318) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 318) (second 315) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 317) (second 316) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 317) (second 319) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 318) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 318) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 317) (second 320) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 321) (second 322) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 324) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 321) (second 324) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 322) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 325) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 326) (second 324) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 325) (second 324) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 326) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 326) (second 325) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 323) (second 321) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 324) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 325) (second 327) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 327) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 326) (second 328) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 325) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 326) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 329) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 330) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 330) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 328) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 327) (second 330) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 321) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 322) (second 320) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 319) (second 322) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 321) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 331) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 332) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 332) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 333) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 330) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 333) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 333) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 331) (second 330) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 329) (second 333) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 305) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 331) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 268) (second 237) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 269) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 307) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 306) (length 121.655251) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 279) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 245) (second 243) (length 31.622776) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 244) (second 243) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 245) (second 241) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 283) (second 279) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 282) (second 281) (length 50.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 236) (second 271) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 237) (second 270) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 274) (second 309) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 275) (second 308) (length 58.309521) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 302) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 314) (second 265) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 332) (second 334) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 305) (second 334) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 334) (second 304) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 303) (second 335) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 335) (second 334) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 312) (second 336) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 266) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 336) (second 267) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 337) (length 84.852814) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 337) (second 336) (length 60.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 90) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 273) (second 92) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 99) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 126) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 311) (second 234) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 311) (second 210) (length 36.055511) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 310) (second 220) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 310) (second 217) (length 28.284271) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 272) (second 127) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 311) (second 235) (length 63.245552) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 100) (length 445.982056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 212) (second 180) (length 445.982056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 80) (second 47) (length 445.982056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 143) (second 231) (length 445.982056) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 54) (second 148) (length 190.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 158) (second 64) (length 190.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 127) (second 235) (length 70.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + )) + +;; EOF ;; diff --git a/examples/test.construo b/examples/test.construo new file mode 100644 index 0000000..7096d26 --- /dev/null +++ b/examples/test.construo @@ -0,0 +1,22 @@ + +(construo-scene + (particles + (particle (id 20279) (pos 476 129 0 ) (velocity 0 0 0 ) ) + (particle (id 20280) (pos 476 186 0 ) (velocity 0 0 0 ) ) + (particle (id 20281) (pos 402 172 0 ) (velocity 0 0 0 ) ) + (particle (id 20282) (pos 230 178 0 ) (velocity 0 0 0 ) ) + (particle (id 20283) (pos 230 132 0 ) (velocity 0 0 0 ) ) + (particle (id 20284) (pos 232 96 0 ) (velocity 0 0 0 ) ) + (particle (id 20285) (pos 375 110 0 ) (velocity 0 0 0 ) ) + (particle (id 20286) (pos 386 0 0 ) (velocity 0 0 0 ) ) + (particle (id 20287) (pos 350 80 0 ) (velocity 0 0 0 ) ) + (particle (id 20288) (pos 528 153 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 20279)(second 20280)) + (spring (first 20281)(second 20282)) + (spring (first 20283)(second 20284)) + (spring (first 20285)(second 20286)) + (spring (first 20287)(second 20288)) + ) +) diff --git a/examples/tetherball.construo b/examples/tetherball.construo new file mode 100644 index 0000000..bfad8fb --- /dev/null +++ b/examples/tetherball.construo @@ -0,0 +1,142 @@ +;; Written by construo 0.2.1 +(construo-scene + (version 3) + (author "Michael Edwards,OneArmedMan LLC,201 533 0343,201 533 0343" "") + (particles + (particle (id 0) (pos -417.363220 2.033875) (velocity 12.384705 59.716805) (fixed #f) (mass 0.100000)) + (particle (id 1) (pos -361.219421 59.024048) (velocity 12.384705 59.716805) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos -360.796326 2.457123) (velocity 12.384705 59.716805) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos -417.786316 58.600830) (velocity 12.384705 59.716805) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos -431.716431 30.211578) (velocity 12.384705 59.716805) (fixed #f) (mass 0.100000)) + (particle (id 5) (pos -346.866150 30.846405) (velocity 12.384705 59.716805) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos -388.973938 -11.896332) (velocity 12.384705 59.716805) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos -389.608521 72.954163) (velocity 12.384705 59.716805) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos -576.010132 22.135803) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 10) (pos -554.850464 29.365204) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos -533.584839 22.453156) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 12) (pos -512.425232 29.682709) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos -491.159668 22.770447) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos -576.115967 36.277466) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos -533.690613 36.594818) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos -491.265320 36.912140) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos -470.000000 30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos -450.000000 20.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos -450.000000 40.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos -706.010132 22.135803) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos -684.850464 29.365204) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos -663.584839 22.453156) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos -642.425232 29.682709) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos -621.159668 22.770447) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos -706.115967 36.277466) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos -663.690613 36.594818) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos -621.265320 36.912140) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 30) (pos -600.000000 30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos -857.275696 29.047852) (velocity 0.000000 0.000000) (fixed #t) (mass 0.100000)) + (particle (id 32) (pos -836.010132 22.135803) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos -814.850464 29.365204) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos -793.584839 22.453156) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos -772.425232 29.682709) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos -751.159668 22.770447) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos -836.115967 36.277466) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos -793.690613 36.594818) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 39) (pos -751.265320 36.912140) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos -730.000000 30.000000) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 80.000038) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 3) (length 79.999840) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 5) (length 84.852654) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 7) (length 84.852867) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 3) (length 31.622877) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 4) (length 31.622740) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 0) (length 31.622740) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 6) (length 31.622808) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 2) (length 31.622768) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 5) (length 31.622795) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 1) (length 31.622713) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 7) (length 31.622602) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 4) (length 60.000038) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 6) (length 59.999973) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 5) (length 60.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 7) (length 59.999779) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 7) (second 0) (length 76.157799) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 0) (second 5) (length 76.157722) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 5) (second 3) (length 76.157585) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 3) (second 6) (length 76.157753) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 6) (second 1) (length 76.157822) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 1) (second 4) (length 76.157646) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 2) (length 76.157539) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 2) (second 7) (length 76.157570) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 10) (length 22.360586) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 11) (length 22.360752) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 12) (length 22.360577) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 13) (length 22.360760) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 10) (length 22.360703) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 10) (second 16) (length 22.360828) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 16) (second 12) (length 22.360538) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 17) (length 22.360826) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 18) (length 22.360634) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 17) (length 22.360489) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 4) (length 38.284153) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 9) (second 15) (length 14.142058) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 11) (second 16) (length 14.142058) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 13) (second 17) (length 14.142088) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 12) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 12) (second 10) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 18) (second 19) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 19) (second 4) (length 20.941950) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 4) (second 20) (length 20.738903) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 18) (length 22.360680) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 20) (second 19) (length 20.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 23) (length 22.360586) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 24) (length 22.360752) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 25) (length 22.360577) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 26) (length 22.360760) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 23) (length 22.360703) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 23) (second 28) (length 22.360828) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 28) (second 25) (length 22.360538) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 29) (length 22.360826) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 30) (length 22.360634) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 29) (length 22.360489) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 22) (second 27) (length 14.142058) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 24) (second 28) (length 14.142058) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 26) (second 29) (length 14.142088) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 25) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 25) (second 23) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 9) (length 25.245977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 15) (second 30) (length 24.695215) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 30) (second 10) (length 45.153999) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 32) (length 22.360693) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 33) (length 22.360586) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 34) (length 22.360752) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 35) (length 22.360577) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 36) (length 22.360760) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 31) (second 37) (length 22.360712) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 37) (second 33) (length 22.360703) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 38) (length 22.360828) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 38) (second 35) (length 22.360538) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 39) (length 22.360826) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 40) (length 22.360634) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 39) (length 22.360489) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 32) (second 37) (length 14.142058) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 34) (second 38) (length 14.142058) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 36) (second 39) (length 14.142088) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 35) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 35) (second 33) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 33) (second 31) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 22) (length 25.245977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 27) (second 40) (length 24.695215) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 40) (second 23) (length 45.153999) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + (rect (pos1 -1074.591675 16.687868) (pos2 -969.827454 404.538391)) + (rect (pos1 -976.514587 520.447754) (pos2 -936.392090 683.166687)) + (rect (pos1 -1295.041382 412.132385) (pos2 -1219.254395 603.828857)) + (rect (pos1 -1089.475342 -127.050049) (pos2 -811.170044 14.008770)) + (rect (pos1 -885.679749 14.658487) (pos2 -858.193787 30.618048)) + (rect (pos1 -1286.147949 281.887970) (pos2 -1076.195923 408.247986)) + (rect (pos1 -843.047729 79.711975) (pos2 -808.055725 122.479980)) + (rect (pos1 -886.851868 186.631989) (pos2 -834.363831 237.175995)) + )) + +;; EOF ;; diff --git a/examples/thingo.construo b/examples/thingo.construo new file mode 100644 index 0000000..6624a5f --- /dev/null +++ b/examples/thingo.construo @@ -0,0 +1,438 @@ + +(construo-scene + (particles + (particle (id 91949) (pos 147 161 0 ) (velocity 0 0 0 ) ) + (particle (id 91950) (pos 19 196 0 ) (velocity 0 0 0 ) ) + (particle (id 91951) (pos 32 245 0 ) (velocity 0 0 0 ) ) + (particle (id 91952) (pos 157 201 0 ) (velocity 0 0 0 ) ) + (particle (id 91953) (pos 303 166 0 ) (velocity 0 0 0 ) ) + (particle (id 91954) (pos 293 127 0 ) (velocity 0 0 0 ) ) + (particle (id 91955) (pos 444 126 0 ) (velocity 0 0 0 ) ) + (particle (id 91956) (pos 434 96 0 ) (velocity 0 0 0 ) ) + (particle (id 91957) (pos 559 61 0 ) (velocity 0 0 0 ) ) + (particle (id 91958) (pos 582 83 0 ) (velocity 0 0 0 ) ) + (particle (id 91959) (pos 484 52 0 ) (velocity 0 0 0 ) ) + (particle (id 91960) (pos 672 18 0 ) (velocity 0 0 0 ) ) + (particle (id 91961) (pos 705 57 0 ) (velocity 0 0 0 ) ) + (particle (id 91962) (pos 798 38 0 ) (velocity 0 0 0 ) ) + (particle (id 91963) (pos 762 7 0 ) (velocity 0 0 0 ) ) + (particle (id 91964) (pos 714 20 0 ) (velocity 0 0 0 ) ) + (particle (id 92092) (pos 80 151 0 ) (velocity 0 0 0 ) ) + (particle (id 92093) (pos 208 121 0 ) (velocity 0 0 0 ) ) + (particle (id 92094) (pos 340 87 0 ) (velocity 0 0 0 ) ) + (particle (id 92095) (pos 575 29 0 ) (velocity 0 0 0 ) ) + (particle (id 92096) (pos 117 241 0 ) (velocity 0 0 0 ) ) + (particle (id 92097) (pos 239 210 0 ) (velocity 0 0 0 ) ) + (particle (id 92098) (pos 382 171 0 ) (velocity 0 0 0 ) ) + (particle (id 92099) (pos 528 121 0 ) (velocity 0 0 0 ) ) + (particle (id 92100) (pos 649 87 0 ) (velocity 0 0 0 ) ) + (particle (id 92101) (pos 753 66 0 ) (velocity 0 0 0 ) ) + (particle (id 92396) (pos 655 39 0 ) (velocity 0 0 0 ) ) + (particle (id 92397) (pos 631 64 0 ) (velocity 0 0 0 ) ) + (particle (id 92570) (pos 42 278 0 ) (velocity 0 0 0 ) ) + (particle (id 92571) (pos 125 265 0 ) (velocity 0 0 0 ) ) + (particle (id 92572) (pos 187 257 0 ) (velocity 0 0 0 ) ) + (particle (id 92573) (pos 176 230 0 ) (velocity 0 0 0 ) ) + (particle (id 92574) (pos 244 243 0 ) (velocity 0 0 0 ) ) + (particle (id 92575) (pos 59 320 0 ) (velocity 0 0 0 ) ) + (particle (id 92576) (pos 136 301 0 ) (velocity 0 0 0 ) ) + (particle (id 92577) (pos 197 292 0 ) (velocity 0 0 0 ) ) + (particle (id 92578) (pos 257 278 0 ) (velocity 0 0 0 ) ) + (particle (id 92579) (pos 306 223 0 ) (velocity 0 0 0 ) ) + (particle (id 92580) (pos 311 260 0 ) (velocity 0 0 0 ) ) + (particle (id 92581) (pos 69 350 0 ) (velocity 0 0 0 ) ) + (particle (id 92582) (pos 138 329 0 ) (velocity 0 0 0 ) ) + (particle (id 92583) (pos 205 316 0 ) (velocity 0 0 0 ) ) + (particle (id 92584) (pos 241 319 0 ) (velocity 0 0 0 ) ) + (particle (id 92585) (pos 265 307 0 ) (velocity 0 0 0 ) ) + (particle (id 92586) (pos 322 291 0 ) (velocity 0 0 0 ) ) + (particle (id 92587) (pos 383 199 0 ) (velocity 0 0 0 ) ) + (particle (id 92588) (pos 304 195 0 ) (velocity 0 0 0 ) ) + (particle (id 92589) (pos 369 242 0 ) (velocity 0 0 0 ) ) + (particle (id 93100) (pos 41 378 0 ) (velocity 0 0 0 ) ) + (particle (id 93101) (pos 81 394 0 ) (velocity 0 0 0 ) ) + (particle (id 93102) (pos 125 368 0 ) (velocity 0 0 0 ) ) + (particle (id 93103) (pos 149 389 0 ) (velocity 0 0 0 ) ) + (particle (id 93104) (pos 185 362 0 ) (velocity 0 0 0 ) ) + (particle (id 93105) (pos 233 353 0 ) (velocity 0 0 0 ) ) + (particle (id 93106) (pos 209 392 0 ) (velocity 0 0 0 ) ) + (particle (id 93107) (pos 275 388 0 ) (velocity 0 0 0 ) ) + (particle (id 93108) (pos 305 355 0 ) (velocity 0 0 0 ) ) + (particle (id 93109) (pos 339 379 0 ) (velocity 0 0 0 ) ) + (particle (id 93110) (pos 365 347 0 ) (velocity 0 0 0 ) ) + (particle (id 93111) (pos 51 422 0 ) (velocity 0 0 0 ) ) + (particle (id 93112) (pos 86 444 0 ) (velocity 0 0 0 ) ) + (particle (id 93113) (pos 115 420 0 ) (velocity 0 0 0 ) ) + (particle (id 93114) (pos 185 432 0 ) (velocity 0 0 0 ) ) + (particle (id 93115) (pos 252 421 0 ) (velocity 0 0 0 ) ) + (particle (id 93116) (pos 312 416 0 ) (velocity 0 0 0 ) ) + (particle (id 93117) (pos 150 458 0 ) (velocity 0 0 0 ) ) + (particle (id 93118) (pos 225 450 0 ) (velocity 0 0 0 ) ) + (particle (id 93119) (pos 280 440 0 ) (velocity 0 0 0 ) ) + (particle (id 93120) (pos 349 432 0 ) (velocity 0 0 0 ) ) + (particle (id 93121) (pos 368 409 0 ) (velocity 0 0 0 ) ) + (particle (id 93122) (pos 295 292 0 ) (velocity 0 0 0 ) ) + (particle (id 93123) (pos 282 251 0 ) (velocity 0 0 0 ) ) + (particle (id 93568) (pos 68 475 0 ) (velocity 0 0 0 ) ) + (particle (id 93569) (pos 127 502 0 ) (velocity 0 0 0 ) ) + (particle (id 93570) (pos 224 493 0 ) (velocity 0 0 0 ) ) + (particle (id 93571) (pos 286 479 0 ) (velocity 0 0 0 ) ) + (particle (id 93572) (pos 366 479 0 ) (velocity 0 0 0 ) ) + (particle (id 93573) (pos 114 539 0 ) (velocity 0 0 0 ) ) + (particle (id 93574) (pos 170 537 0 ) (velocity 0 0 0 ) ) + (particle (id 93575) (pos 273 537 0 ) (velocity 0 0 0 ) ) + (particle (id 93576) (pos 338 545 0 ) (velocity 0 0 0 ) ) + (particle (id 93577) (pos 383 454 0 ) (velocity 0 0 0 ) ) + (particle (id 94522) (pos 74 562 0 ) (velocity 0 0 0 ) ) + (particle (id 94523) (pos 136 595 0 ) (velocity 0 0 0 ) ) + (particle (id 94524) (pos 203 568 0 ) (velocity 0 0 0 ) ) + (particle (id 94525) (pos 241 570 0 ) (velocity 0 0 0 ) ) + (particle (id 94526) (pos 311 599 0 ) (velocity 0 0 0 ) ) + (particle (id 94527) (pos 382 573 0 ) (velocity 0 0 0 ) ) + (particle (id 95415) (pos 365 543 0 ) (velocity 0 0 0 ) ) + (particle (id 95897) (pos 395 12 0 ) (velocity 0 0 0 ) ) + (particle (id 95898) (pos 321 31 0 ) (velocity 0 0 0 ) ) + (particle (id 95899) (pos 351 33 0 ) (velocity 0 0 0 ) ) + (particle (id 95900) (pos 354 121 0 ) (velocity 0 0 0 ) ) + (particle (id 98522) (pos 219 40 0 ) (velocity 0 0 0 ) ) + (particle (id 98523) (pos 190 8 0 ) (velocity 0 0 0 ) ) + (particle (id 98524) (pos 135 23 0 ) (velocity 0 0 0 ) ) + (particle (id 98525) (pos 118 53 0 ) (velocity 0 0 0 ) ) + (particle (id 98526) (pos 155 83 0 ) (velocity 0 0 0 ) ) + (particle (id 98527) (pos 210 65 0 ) (velocity 0 0 0 ) ) + (particle (id 98528) (pos 240 16 0 ) (velocity 0 0 0 ) ) + (particle (id 98529) (pos 248 46 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 91949)(second 91950)) + (spring (first 91950)(second 91951)) + (spring (first 91951)(second 91952)) + (spring (first 91952)(second 91953)) + (spring (first 91949)(second 91952)) + (spring (first 91949)(second 91954)) + (spring (first 91954)(second 91953)) + (spring (first 91953)(second 91955)) + (spring (first 91955)(second 91956)) + (spring (first 91956)(second 91954)) + (spring (first 91956)(second 91957)) + (spring (first 91957)(second 91958)) + (spring (first 91958)(second 91955)) + (spring (first 91956)(second 91958)) + (spring (first 91957)(second 91955)) + (spring (first 91955)(second 91954)) + (spring (first 91954)(second 91952)) + (spring (first 91952)(second 91950)) + (spring (first 91951)(second 91949)) + (spring (first 91949)(second 91953)) + (spring (first 91953)(second 91956)) + (spring (first 91956)(second 91959)) + (spring (first 91959)(second 91958)) + (spring (first 91957)(second 91960)) + (spring (first 91960)(second 91961)) + (spring (first 91961)(second 91958)) + (spring (first 91957)(second 91961)) + (spring (first 91960)(second 91958)) + (spring (first 91961)(second 91962)) + (spring (first 91962)(second 91963)) + (spring (first 91963)(second 91960)) + (spring (first 91960)(second 91961)) + (spring (first 91961)(second 91963)) + (spring (first 91964)(second 91960)) + (spring (first 91964)(second 91962)) + (spring (first 91964)(second 91961)) + (spring (first 91964)(second 91963)) + (spring (first 91950)(second 92092)) + (spring (first 92092)(second 91949)) + (spring (first 91949)(second 92093)) + (spring (first 92093)(second 91954)) + (spring (first 91954)(second 92094)) + (spring (first 92094)(second 91956)) + (spring (first 91957)(second 92095)) + (spring (first 92095)(second 91960)) + (spring (first 91957)(second 91959)) + (spring (first 91951)(second 92096)) + (spring (first 92096)(second 91952)) + (spring (first 91952)(second 92097)) + (spring (first 92097)(second 91953)) + (spring (first 91953)(second 92098)) + (spring (first 92098)(second 91955)) + (spring (first 91955)(second 92099)) + (spring (first 92099)(second 91958)) + (spring (first 91958)(second 92100)) + (spring (first 92100)(second 91961)) + (spring (first 91961)(second 92101)) + (spring (first 92101)(second 91962)) + (spring (first 92092)(second 92096)) + (spring (first 92097)(second 92093)) + (spring (first 92094)(second 92098)) + (spring (first 91959)(second 92099)) + (spring (first 92095)(second 92100)) + (spring (first 91964)(second 92101)) + (spring (first 92096)(second 92097)) + (spring (first 92098)(second 92097)) + (spring (first 92098)(second 92099)) + (spring (first 92099)(second 92100)) + (spring (first 92100)(second 92101)) + (spring (first 92095)(second 91959)) + (spring (first 91959)(second 92094)) + (spring (first 92094)(second 92093)) + (spring (first 92093)(second 92092)) + (spring (first 91961)(second 92396)) + (spring (first 92396)(second 92095)) + (spring (first 92396)(second 92397)) + (spring (first 92396)(second 91964)) + (spring (first 92396)(second 91960)) + (spring (first 92397)(second 91958)) + (spring (first 92396)(second 92397)) + (spring (first 92100)(second 92397)) + (spring (first 92397)(second 92095)) + (spring (first 91957)(second 92397)) + (spring (first 91961)(second 92101)) + (spring (first 92101)(second 92094)) + (spring (first 92098)(second 92095)) + (spring (first 91963)(second 92096)) + (spring (first 92092)(second 92101)) + (spring (first 91951)(second 92570)) + (spring (first 92570)(second 92571)) + (spring (first 92571)(second 92096)) + (spring (first 92096)(second 92570)) + (spring (first 91951)(second 92571)) + (spring (first 92571)(second 92572)) + (spring (first 92572)(second 91952)) + (spring (first 92096)(second 92572)) + (spring (first 92571)(second 91952)) + (spring (first 92572)(second 92097)) + (spring (first 92573)(second 92574)) + (spring (first 92574)(second 92097)) + (spring (first 92574)(second 92572)) + (spring (first 92570)(second 92575)) + (spring (first 92575)(second 92576)) + (spring (first 92576)(second 92571)) + (spring (first 92571)(second 92575)) + (spring (first 92570)(second 92576)) + (spring (first 92576)(second 92577)) + (spring (first 92577)(second 92572)) + (spring (first 92572)(second 92576)) + (spring (first 92571)(second 92577)) + (spring (first 92577)(second 92578)) + (spring (first 92578)(second 92574)) + (spring (first 92572)(second 92578)) + (spring (first 92574)(second 92577)) + (spring (first 92574)(second 92579)) + (spring (first 92579)(second 91953)) + (spring (first 92097)(second 92579)) + (spring (first 91953)(second 92574)) + (spring (first 92578)(second 92580)) + (spring (first 92580)(second 92579)) + (spring (first 92574)(second 92580)) + (spring (first 92579)(second 92578)) + (spring (first 92575)(second 92581)) + (spring (first 92581)(second 92582)) + (spring (first 92582)(second 92576)) + (spring (first 92576)(second 92581)) + (spring (first 92575)(second 92582)) + (spring (first 92582)(second 92583)) + (spring (first 92583)(second 92577)) + (spring (first 92577)(second 92582)) + (spring (first 92576)(second 92584)) + (spring (first 92583)(second 92585)) + (spring (first 92585)(second 92578)) + (spring (first 92578)(second 92583)) + (spring (first 92577)(second 92585)) + (spring (first 92585)(second 92586)) + (spring (first 92586)(second 92580)) + (spring (first 92578)(second 92586)) + (spring (first 92580)(second 92585)) + (spring (first 92583)(second 92576)) + (spring (first 92579)(second 92587)) + (spring (first 92587)(second 92098)) + (spring (first 92098)(second 92579)) + (spring (first 92588)(second 92587)) + (spring (first 92587)(second 92589)) + (spring (first 92589)(second 92580)) + (spring (first 92579)(second 92589)) + (spring (first 92587)(second 92580)) + (spring (first 92589)(second 92586)) + (spring (first 92581)(second 93100)) + (spring (first 93101)(second 93102)) + (spring (first 92581)(second 93102)) + (spring (first 93100)(second 93101)) + (spring (first 93102)(second 93103)) + (spring (first 93103)(second 93104)) + (spring (first 93104)(second 92582)) + (spring (first 92582)(second 93102)) + (spring (first 92583)(second 93104)) + (spring (first 93105)(second 92583)) + (spring (first 93105)(second 93106)) + (spring (first 93106)(second 93104)) + (spring (first 92585)(second 93105)) + (spring (first 93105)(second 93107)) + (spring (first 93107)(second 93108)) + (spring (first 93108)(second 92585)) + (spring (first 92586)(second 93108)) + (spring (first 93108)(second 93109)) + (spring (first 93109)(second 93110)) + (spring (first 93110)(second 92586)) + (spring (first 93101)(second 93111)) + (spring (first 93111)(second 93112)) + (spring (first 93112)(second 93113)) + (spring (first 93113)(second 93101)) + (spring (first 93103)(second 93113)) + (spring (first 93103)(second 93114)) + (spring (first 93114)(second 93106)) + (spring (first 93106)(second 93115)) + (spring (first 93115)(second 93107)) + (spring (first 93107)(second 93116)) + (spring (first 93116)(second 93109)) + (spring (first 93113)(second 93117)) + (spring (first 93117)(second 93114)) + (spring (first 93114)(second 93118)) + (spring (first 93118)(second 93115)) + (spring (first 93115)(second 93119)) + (spring (first 93119)(second 93116)) + (spring (first 93116)(second 93120)) + (spring (first 93120)(second 93121)) + (spring (first 93121)(second 93109)) + (spring (first 93121)(second 93110)) + (spring (first 93120)(second 93109)) + (spring (first 93120)(second 92586)) + (spring (first 93116)(second 93108)) + (spring (first 93108)(second 93122)) + (spring (first 93123)(second 93108)) + (spring (first 93107)(second 92585)) + (spring (first 93119)(second 93107)) + (spring (first 93115)(second 93105)) + (spring (first 93118)(second 93106)) + (spring (first 93114)(second 93104)) + (spring (first 93104)(second 92577)) + (spring (first 92583)(second 93106)) + (spring (first 93117)(second 93103)) + (spring (first 93113)(second 93102)) + (spring (first 93112)(second 93101)) + (spring (first 92581)(second 93113)) + (spring (first 93101)(second 92581)) + (spring (first 93103)(second 92582)) + (spring (first 93102)(second 92576)) + (spring (first 93102)(second 92575)) + (spring (first 93112)(second 93568)) + (spring (first 93568)(second 93569)) + (spring (first 93569)(second 93117)) + (spring (first 93569)(second 93570)) + (spring (first 93570)(second 93118)) + (spring (first 93570)(second 93571)) + (spring (first 93571)(second 93119)) + (spring (first 93571)(second 93572)) + (spring (first 93572)(second 93120)) + (spring (first 93568)(second 93573)) + (spring (first 93573)(second 93569)) + (spring (first 93569)(second 93574)) + (spring (first 93574)(second 93570)) + (spring (first 93570)(second 93575)) + (spring (first 93575)(second 93571)) + (spring (first 93571)(second 93576)) + (spring (first 93576)(second 93577)) + (spring (first 93577)(second 93121)) + (spring (first 93120)(second 93577)) + (spring (first 93577)(second 93572)) + (spring (first 93572)(second 93576)) + (spring (first 93576)(second 93120)) + (spring (first 93119)(second 93576)) + (spring (first 93576)(second 93116)) + (spring (first 93115)(second 93575)) + (spring (first 93571)(second 93118)) + (spring (first 93119)(second 93570)) + (spring (first 93570)(second 93117)) + (spring (first 93118)(second 93574)) + (spring (first 93114)(second 93574)) + (spring (first 93574)(second 93117)) + (spring (first 93117)(second 93573)) + (spring (first 93112)(second 93573)) + (spring (first 93573)(second 93113)) + (spring (first 93568)(second 93117)) + (spring (first 93573)(second 94522)) + (spring (first 94522)(second 94523)) + (spring (first 94523)(second 94524)) + (spring (first 94524)(second 93574)) + (spring (first 93575)(second 94525)) + (spring (first 94525)(second 94526)) + (spring (first 94526)(second 94527)) + (spring (first 94527)(second 93576)) + (spring (first 94522)(second 94524)) + (spring (first 94525)(second 94527)) + (spring (first 93574)(second 93573)) + (spring (first 93575)(second 93576)) + (spring (first 93575)(second 93574)) + (spring (first 94524)(second 94525)) + (spring (first 93573)(second 94523)) + (spring (first 93574)(second 94523)) + (spring (first 93575)(second 94526)) + (spring (first 95415)(second 94526)) + (spring (first 93576)(second 94526)) + (spring (first 95415)(second 94527)) + (spring (first 95415)(second 93576)) + (spring (first 95415)(second 93572)) + (spring (first 94524)(second 93570)) + (spring (first 93570)(second 94525)) + (spring (first 93575)(second 94524)) + (spring (first 93574)(second 94525)) + (spring (first 94522)(second 93568)) + (spring (first 93111)(second 93568)) + (spring (first 93111)(second 93100)) + (spring (first 93100)(second 92575)) + (spring (first 95897)(second 91956)) + (spring (first 95897)(second 92094)) + (spring (first 95897)(second 91959)) + (spring (first 95897)(second 92093)) + (spring (first 95897)(second 92095)) + (spring (first 95897)(second 91960)) + (spring (first 95897)(second 91963)) + (spring (first 92094)(second 95898)) + (spring (first 95898)(second 95897)) + (spring (first 95898)(second 91956)) + (spring (first 95899)(second 95898)) + (spring (first 95899)(second 91956)) + (spring (first 95899)(second 95900)) + (spring (first 95899)(second 95897)) + (spring (first 95899)(second 92094)) + (spring (first 95898)(second 92092)) + (spring (first 95898)(second 92093)) + (spring (first 95898)(second 91950)) + (spring (first 94523)(second 93114)) + (spring (first 93113)(second 94523)) + (spring (first 94526)(second 93119)) + (spring (first 93577)(second 94526)) + (spring (first 94526)(second 93116)) + (spring (first 94523)(second 93113)) + (spring (first 94523)(second 93570)) + (spring (first 94523)(second 93568)) + (spring (first 94526)(second 93570)) + (spring (first 93577)(second 94526)) + (spring (first 94526)(second 95415)) + (spring (first 98522)(second 98523)) + (spring (first 98523)(second 98524)) + (spring (first 98526)(second 98525)) + (spring (first 98524)(second 98525)) + (spring (first 98526)(second 98522)) + (spring (first 98524)(second 98526)) + (spring (first 98525)(second 98522)) + (spring (first 98523)(second 98526)) + (spring (first 98526)(second 98527)) + (spring (first 98527)(second 98522)) + (spring (first 98527)(second 98524)) + (spring (first 98523)(second 98525)) + (spring (first 98524)(second 98522)) + (spring (first 98527)(second 98525)) + (spring (first 98522)(second 98528)) + (spring (first 98528)(second 98523)) + (spring (first 98528)(second 98529)) + (spring (first 98529)(second 98527)) + (spring (first 98522)(second 98529)) + (spring (first 98529)(second 98523)) + (spring (first 98529)(second 91961)) + (spring (first 98528)(second 91961)) + (spring (first 98526)(second 91959)) + (spring (first 98526)(second 91959)) + (spring (first 98526)(second 91959)) + (spring (first 98527)(second 91959)) + ) +) diff --git a/examples/thingo2.construo b/examples/thingo2.construo new file mode 100644 index 0000000..23f8026 --- /dev/null +++ b/examples/thingo2.construo @@ -0,0 +1,347 @@ + +(construo-scene + (particles + (particle (id 5072) (pos 0 600 0 ) (velocity 0.0639515 -0.0837137 0 ) ) + (particle (id 5073) (pos 45.382 600 0 ) (velocity -0.000245481 -0.0362399 0 ) ) + (particle (id 5074) (pos 57.5065 534.684 0 ) (velocity -0.0256151 -0.00187203 0 ) ) + (particle (id 5075) (pos 118.73 459.727 0 ) (velocity 0.00325189 0.00463369 0 ) ) + (particle (id 5076) (pos 196.617 420.883 0 ) (velocity 0.0393615 0.0758035 0 ) ) + (particle (id 5077) (pos 309.73 395.77 0 ) (velocity 0.0353719 0.0339884 0 ) ) + (particle (id 5078) (pos 414.823 372.274 0 ) (velocity 0.0342547 -0.00944304 0 ) ) + (particle (id 5079) (pos 498.513 383.14 0 ) (velocity 0.0582923 -0.021502 0 ) ) + (particle (id 5080) (pos 594.502 394.059 0 ) (velocity 0.0412398 -0.0315834 0 ) ) + (particle (id 5081) (pos 648.094 433.196 0 ) (velocity 0.0750065 -0.0790336 0 ) ) + (particle (id 5082) (pos 695.466 495.627 0 ) (velocity 0.0417729 -0.0486198 0 ) ) + (particle (id 5083) (pos 720.792 568.873 0 ) (velocity 0.00412938 -0.0348821 0 ) ) + (particle (id 5084) (pos 732.97 600 0 ) (velocity 0.000261113 -0.21926 0 ) ) + (particle (id 5085) (pos 800 600 0 ) (velocity -0.0634342 -0.0654323 0 ) ) + (particle (id 5086) (pos 776.309 537.225 0 ) (velocity 0.0220074 0.00105796 0 ) ) + (particle (id 5087) (pos 750.114 488.631 0 ) (velocity 0.0415005 -0.0105617 0 ) ) + (particle (id 5088) (pos 705.66 431.791 0 ) (velocity 0.05925 -0.038754 0 ) ) + (particle (id 5106) (pos 25.4368 528.321 0 ) (velocity -0.0217783 -0.0192564 0 ) ) + (particle (id 5107) (pos 76.4382 452.357 0 ) (velocity 0.00960487 0.00132754 0 ) ) + (particle (id 5108) (pos 175.993 395.537 0 ) (velocity 0.0409111 0.0666887 0 ) ) + (particle (id 5109) (pos 300.163 361.953 0 ) (velocity 0.0450414 0.0457784 0 ) ) + (particle (id 5110) (pos 416.547 333.793 0 ) (velocity 0.0133542 -0.00695058 0 ) ) + (particle (id 5111) (pos 515.278 337.761 0 ) (velocity 0.0238575 -0.00915407 0 ) ) + (particle (id 5112) (pos 605.871 352.359 0 ) (velocity 0.0178641 -0.0301281 0 ) ) + (particle (id 5113) (pos 657.387 389.532 0 ) (velocity 0.0470329 -0.0520251 0 ) ) + (particle (id 5114) (pos 335.165 327.793 0 ) (velocity 0.0162945 0.00292124 0 ) ) + (particle (id 5115) (pos 418.41 303.387 0 ) (velocity 0.0230559 0.0104165 0 ) ) + (particle (id 5116) (pos 507.108 306.155 0 ) (velocity 0.0121399 -0.0369467 0 ) ) + (particle (id 5117) (pos 353.989 294.084 0 ) (velocity 0.0151572 -0.0171723 0 ) ) + (particle (id 5118) (pos 495.721 280.066 0 ) (velocity 0.0128526 -0.038168 0 ) ) + (particle (id 5119) (pos 417.27 277.37 0 ) (velocity 0.0270261 -0.0353503 0 ) ) + (particle (id 5120) (pos 363.959 270.002 0 ) (velocity 0.019496 0.0151905 0 ) ) + (particle (id 5121) (pos 478.393 260.903 0 ) (velocity 0.0251486 -0.0596432 0 ) ) + (particle (id 5226) (pos 374.79 238.925 0 ) (velocity 0.000865955 -0.00899442 0 ) ) + (particle (id 5227) (pos 418.51 232.068 0 ) (velocity -0.00266046 -0.0385427 0 ) ) + (particle (id 5228) (pos 467.573 230.701 0 ) (velocity -0.00659557 -0.0402709 0 ) ) + (particle (id 5267) (pos 456.446 193.573 0 ) (velocity -0.0285021 -0.0701294 0 ) ) + (particle (id 5268) (pos 388.288 195.767 0 ) (velocity -0.0269043 -0.0157604 0 ) ) + (particle (id 5269) (pos 399.429 165.598 0 ) (velocity -0.0597718 -0.0337582 0 ) ) + (particle (id 5270) (pos 442.456 166.492 0 ) (velocity -0.0653377 -0.0630879 0 ) ) + (particle (id 5271) (pos 406.568 127.488 0 ) (velocity -0.120069 -0.0439334 0 ) ) + (particle (id 5272) (pos 432.584 125.96 0 ) (velocity -0.135615 -0.0656951 0 ) ) + (particle (id 5357) (pos 413.076 99.4067 0 ) (velocity -0.139034 -0.055166 0 ) ) + (particle (id 5358) (pos 415.514 69.3747 0 ) (velocity -0.158371 -0.0393931 0 ) ) + (particle (id 5403) (pos 431.908 43.9734 0 ) (velocity -0.170271 -0.0443081 0 ) ) + (particle (id 6138) (pos 240.247 326.991 0 ) (velocity 0.0297239 0.0460247 0 ) ) + (particle (id 6139) (pos 125.57 379.333 0 ) (velocity 0.0782797 0.0235304 0 ) ) + (particle (id 6140) (pos 186.379 309.034 0 ) (velocity 0.0327106 0.0452063 0 ) ) + (particle (id 6141) (pos 122.092 322.247 0 ) (velocity 0.0474265 0.0588701 0 ) ) + (particle (id 6142) (pos 170.406 276.016 0 ) (velocity 0.0328759 0.0334547 0 ) ) + (particle (id 6143) (pos 125.269 274.913 0 ) (velocity 0.0272016 0.0737267 0 ) ) + (particle (id 6144) (pos 137.093 238.25 0 ) (velocity 0.00171378 0.0636877 0 ) ) + (particle (id 6145) (pos 169.163 242.114 0 ) (velocity 0.0161361 0.0131963 0 ) ) + (particle (id 6146) (pos 149.636 197.311 0 ) (velocity -0.0333635 0.0574521 0 ) ) + (particle (id 6147) (pos 177.707 203.201 0 ) (velocity -0.0336142 0.0220213 0 ) ) + (particle (id 6148) (pos 169.496 156.269 0 ) (velocity -0.106514 0.022906 0 ) ) + (particle (id 6149) (pos 197.473 163.442 0 ) (velocity -0.0903494 -0.0154938 0 ) ) + (particle (id 6150) (pos 204.023 116.665 0 ) (velocity -0.152585 -0.0239907 0 ) ) + (particle (id 6151) (pos 232.798 131.269 0 ) (velocity -0.117987 -0.0357614 0 ) ) + (particle (id 6311) (pos 240.716 85.4937 0 ) (velocity -0.159627 -0.034995 0 ) ) + (particle (id 6312) (pos 266.256 104.191 0 ) (velocity -0.153652 -0.0474609 0 ) ) + (particle (id 6313) (pos 300.414 61.2728 0 ) (velocity -0.155145 -0.0331236 0 ) ) + (particle (id 6314) (pos 314.664 86.7565 0 ) (velocity -0.164793 -0.0392223 0 ) ) + (particle (id 6315) (pos 361.495 54.1337 0 ) (velocity -0.17635 -0.0263748 0 ) ) + (particle (id 6316) (pos 362.761 82.2057 0 ) (velocity -0.15996 -0.0278343 0 ) ) + (particle (id 6483) (pos 587.193 315.498 0 ) (velocity 0.00408128 -0.0168783 0 ) ) + (particle (id 6484) (pos 633.461 334.81 0 ) (velocity 0.0161066 -0.0397695 0 ) ) + (particle (id 6485) (pos 675.377 359.749 0 ) (velocity 0.0531163 -0.0564748 0 ) ) + (particle (id 6486) (pos 619.102 287.873 0 ) (velocity -0.0224656 -0.0381634 0 ) ) + (particle (id 6487) (pos 665.173 312.999 0 ) (velocity 0.00363404 -0.0947038 0 ) ) + (particle (id 6488) (pos 638.806 257.952 0 ) (velocity -0.0492443 -0.0520946 0 ) ) + (particle (id 6489) (pos 671.862 259.28 0 ) (velocity -0.037291 -0.0636127 0 ) ) + (particle (id 6490) (pos 684.06 223.452 0 ) (velocity -0.0522148 -0.0893533 0 ) ) + (particle (id 6491) (pos 656.961 221.802 0 ) (velocity -0.0570124 -0.0662638 0 ) ) + (particle (id 6492) (pos 669.082 191.803 0 ) (velocity -0.0646865 -0.0688993 0 ) ) + (particle (id 6493) (pos 696.406 187.192 0 ) (velocity -0.070114 -0.0847585 0 ) ) + (particle (id 6494) (pos 669.891 153.362 0 ) (velocity -0.0824259 -0.0713451 0 ) ) + (particle (id 6495) (pos 693.933 145.74 0 ) (velocity -0.0817917 -0.091745 0 ) ) + (particle (id 6496) (pos 652.802 123.017 0 ) (velocity -0.135576 -0.0343278 0 ) ) + (particle (id 6497) (pos 675.286 102.547 0 ) (velocity -0.146439 -0.0894801 0 ) ) + (particle (id 6498) (pos 626.266 105.328 0 ) (velocity -0.160622 0.017596 0 ) ) + (particle (id 6499) (pos 640.06 75.728 0 ) (velocity -0.174209 -0.0122876 0 ) ) + (particle (id 6500) (pos 601.691 69.6202 0 ) (velocity -0.170237 -0.00315479 0 ) ) + (particle (id 6501) (pos 590.07 100.239 0 ) (velocity -0.186193 0.0102051 0 ) ) + (particle (id 6502) (pos 550.454 90.0658 0 ) (velocity -0.164454 -0.0235602 0 ) ) + (particle (id 6503) (pos 550.648 64.0269 0 ) (velocity -0.162776 -0.0194495 0 ) ) + (particle (id 6504) (pos 504.896 57.0013 0 ) (velocity -0.142061 -0.0701363 0 ) ) + (particle (id 6505) (pos 494.927 81.0511 0 ) (velocity -0.16913 -0.0767365 0 ) ) + (particle (id 6506) (pos 465.896 75.635 0 ) (velocity -0.164406 -0.0795961 0 ) ) + (particle (id 6507) (pos 468.277 47.6526 0 ) (velocity -0.169768 -0.0714108 0 ) ) + ) + (springs + (spring (first 5072)(second 5073)) + (spring (first 5073)(second 5074)) + (spring (first 5074)(second 5075)) + (spring (first 5075)(second 5076)) + (spring (first 5076)(second 5077)) + (spring (first 5077)(second 5078)) + (spring (first 5078)(second 5079)) + (spring (first 5079)(second 5080)) + (spring (first 5080)(second 5081)) + (spring (first 5081)(second 5082)) + (spring (first 5082)(second 5083)) + (spring (first 5083)(second 5084)) + (spring (first 5084)(second 5085)) + (spring (first 5085)(second 5086)) + (spring (first 5086)(second 5087)) + (spring (first 5081)(second 5088)) + (spring (first 5082)(second 5088)) + (spring (first 5088)(second 5087)) + (spring (first 5074)(second 5106)) + (spring (first 5106)(second 5072)) + (spring (first 5106)(second 5073)) + (spring (first 5074)(second 5072)) + (spring (first 5106)(second 5107)) + (spring (first 5107)(second 5075)) + (spring (first 5107)(second 5074)) + (spring (first 5106)(second 5075)) + (spring (first 5107)(second 5108)) + (spring (first 5108)(second 5076)) + (spring (first 5076)(second 5107)) + (spring (first 5108)(second 5075)) + (spring (first 5108)(second 5109)) + (spring (first 5109)(second 5077)) + (spring (first 5109)(second 5076)) + (spring (first 5108)(second 5077)) + (spring (first 5109)(second 5110)) + (spring (first 5110)(second 5078)) + (spring (first 5110)(second 5077)) + (spring (first 5109)(second 5078)) + (spring (first 5110)(second 5111)) + (spring (first 5111)(second 5079)) + (spring (first 5078)(second 5111)) + (spring (first 5110)(second 5079)) + (spring (first 5111)(second 5112)) + (spring (first 5112)(second 5080)) + (spring (first 5111)(second 5080)) + (spring (first 5112)(second 5079)) + (spring (first 5112)(second 5113)) + (spring (first 5113)(second 5081)) + (spring (first 5080)(second 5113)) + (spring (first 5113)(second 5088)) + (spring (first 5082)(second 5087)) + (spring (first 5083)(second 5087)) + (spring (first 5082)(second 5086)) + (spring (first 5083)(second 5086)) + (spring (first 5086)(second 5084)) + (spring (first 5083)(second 5085)) + (spring (first 5109)(second 5114)) + (spring (first 5114)(second 5115)) + (spring (first 5115)(second 5110)) + (spring (first 5115)(second 5116)) + (spring (first 5116)(second 5111)) + (spring (first 5114)(second 5117)) + (spring (first 5117)(second 5115)) + (spring (first 5115)(second 5118)) + (spring (first 5118)(second 5116)) + (spring (first 5118)(second 5119)) + (spring (first 5119)(second 5117)) + (spring (first 5119)(second 5115)) + (spring (first 5117)(second 5120)) + (spring (first 5120)(second 5119)) + (spring (first 5119)(second 5121)) + (spring (first 5121)(second 5118)) + (spring (first 5120)(second 5121)) + (spring (first 5114)(second 5110)) + (spring (first 5110)(second 5116)) + (spring (first 5226)(second 5120)) + (spring (first 5226)(second 5227)) + (spring (first 5227)(second 5119)) + (spring (first 5227)(second 5228)) + (spring (first 5228)(second 5121)) + (spring (first 5228)(second 5119)) + (spring (first 5227)(second 5121)) + (spring (first 5227)(second 5117)) + (spring (first 5226)(second 5119)) + (spring (first 5227)(second 5118)) + (spring (first 5228)(second 5267)) + (spring (first 5267)(second 5268)) + (spring (first 5268)(second 5226)) + (spring (first 5268)(second 5228)) + (spring (first 5267)(second 5226)) + (spring (first 5268)(second 5269)) + (spring (first 5269)(second 5270)) + (spring (first 5270)(second 5267)) + (spring (first 5270)(second 5268)) + (spring (first 5269)(second 5267)) + (spring (first 5269)(second 5271)) + (spring (first 5271)(second 5272)) + (spring (first 5272)(second 5270)) + (spring (first 5272)(second 5269)) + (spring (first 5271)(second 5270)) + (spring (first 5271)(second 5357)) + (spring (first 5357)(second 5272)) + (spring (first 5357)(second 5358)) + (spring (first 5358)(second 5272)) + (spring (first 5358)(second 5403)) + (spring (first 5403)(second 5272)) + (spring (first 5403)(second 5270)) + (spring (first 5403)(second 5357)) + (spring (first 5271)(second 5403)) + (spring (first 5073)(second 5075)) + (spring (first 5084)(second 5082)) + (spring (first 5075)(second 5077)) + (spring (first 5082)(second 5080)) + (spring (first 5107)(second 5072)) + (spring (first 5107)(second 5109)) + (spring (first 5112)(second 5087)) + (spring (first 5087)(second 5085)) + (spring (first 5109)(second 6138)) + (spring (first 6138)(second 5108)) + (spring (first 5107)(second 6139)) + (spring (first 6139)(second 5108)) + (spring (first 6139)(second 6138)) + (spring (first 6138)(second 6140)) + (spring (first 6140)(second 6139)) + (spring (first 6139)(second 6141)) + (spring (first 6141)(second 6138)) + (spring (first 6138)(second 6141)) + (spring (first 6141)(second 6140)) + (spring (first 6140)(second 6142)) + (spring (first 6142)(second 6141)) + (spring (first 6141)(second 6143)) + (spring (first 6143)(second 6140)) + (spring (first 6142)(second 6143)) + (spring (first 6143)(second 6144)) + (spring (first 6144)(second 6145)) + (spring (first 6145)(second 6142)) + (spring (first 6145)(second 6143)) + (spring (first 6144)(second 6142)) + (spring (first 6144)(second 6146)) + (spring (first 6146)(second 6147)) + (spring (first 6147)(second 6145)) + (spring (first 6146)(second 6145)) + (spring (first 6147)(second 6144)) + (spring (first 6146)(second 6148)) + (spring (first 6148)(second 6149)) + (spring (first 6149)(second 6147)) + (spring (first 6148)(second 6147)) + (spring (first 6146)(second 6149)) + (spring (first 6148)(second 6150)) + (spring (first 6151)(second 6150)) + (spring (first 6151)(second 6149)) + (spring (first 6148)(second 6151)) + (spring (first 6150)(second 6149)) + (spring (first 6150)(second 6311)) + (spring (first 6311)(second 6312)) + (spring (first 6312)(second 6151)) + (spring (first 6311)(second 6151)) + (spring (first 6150)(second 6312)) + (spring (first 6311)(second 6313)) + (spring (first 6313)(second 6314)) + (spring (first 6314)(second 6312)) + (spring (first 6312)(second 6313)) + (spring (first 6311)(second 6314)) + (spring (first 6313)(second 6315)) + (spring (first 6315)(second 6316)) + (spring (first 6316)(second 6314)) + (spring (first 6313)(second 6316)) + (spring (first 6315)(second 6314)) + (spring (first 6315)(second 5358)) + (spring (first 6316)(second 5358)) + (spring (first 6315)(second 5403)) + (spring (first 6316)(second 5357)) + (spring (first 5111)(second 6483)) + (spring (first 6483)(second 5112)) + (spring (first 6483)(second 6484)) + (spring (first 6484)(second 5113)) + (spring (first 5088)(second 6485)) + (spring (first 6485)(second 6484)) + (spring (first 6483)(second 6486)) + (spring (first 6486)(second 6484)) + (spring (first 6484)(second 5112)) + (spring (first 5113)(second 6485)) + (spring (first 6485)(second 6487)) + (spring (first 6487)(second 6484)) + (spring (first 6486)(second 6487)) + (spring (first 6486)(second 6488)) + (spring (first 6488)(second 6487)) + (spring (first 6487)(second 6489)) + (spring (first 6489)(second 6488)) + (spring (first 6486)(second 6489)) + (spring (first 6489)(second 6490)) + (spring (first 6490)(second 6491)) + (spring (first 6491)(second 6488)) + (spring (first 6491)(second 6489)) + (spring (first 6491)(second 6492)) + (spring (first 6492)(second 6493)) + (spring (first 6493)(second 6490)) + (spring (first 6490)(second 6492)) + (spring (first 6493)(second 6491)) + (spring (first 6492)(second 6494)) + (spring (first 6494)(second 6495)) + (spring (first 6495)(second 6493)) + (spring (first 6493)(second 6494)) + (spring (first 6495)(second 6492)) + (spring (first 6494)(second 6496)) + (spring (first 6496)(second 6497)) + (spring (first 6497)(second 6495)) + (spring (first 6495)(second 6496)) + (spring (first 6497)(second 6494)) + (spring (first 6496)(second 6498)) + (spring (first 6498)(second 6499)) + (spring (first 6499)(second 6497)) + (spring (first 6496)(second 6499)) + (spring (first 6498)(second 6497)) + (spring (first 6499)(second 6500)) + (spring (first 6500)(second 6501)) + (spring (first 6498)(second 6500)) + (spring (first 6501)(second 6499)) + (spring (first 6501)(second 6498)) + (spring (first 6501)(second 6502)) + (spring (first 6502)(second 6503)) + (spring (first 6503)(second 6500)) + (spring (first 6503)(second 6501)) + (spring (first 6500)(second 6502)) + (spring (first 6503)(second 6504)) + (spring (first 6504)(second 6502)) + (spring (first 6503)(second 6505)) + (spring (first 6505)(second 6502)) + (spring (first 6505)(second 6504)) + (spring (first 6505)(second 6506)) + (spring (first 6506)(second 6507)) + (spring (first 6507)(second 6504)) + (spring (first 6507)(second 6505)) + (spring (first 6504)(second 6506)) + (spring (first 6507)(second 5403)) + (spring (first 6506)(second 5358)) + (spring (first 6506)(second 5272)) + (spring (first 6507)(second 5272)) + (spring (first 6315)(second 5357)) + (spring (first 6316)(second 5403)) + (spring (first 5403)(second 6506)) + (spring (first 6488)(second 6490)) + (spring (first 6483)(second 6487)) + (spring (first 6486)(second 6485)) + (spring (first 5107)(second 6138)) + (spring (first 6139)(second 5109)) + (spring (first 5074)(second 5076)) + (spring (first 5108)(second 5106)) + (spring (first 6505)(second 5272)) + (spring (first 5271)(second 6316)) + ) +) diff --git a/examples/tower.construo b/examples/tower.construo new file mode 100644 index 0000000..c85551f --- /dev/null +++ b/examples/tower.construo @@ -0,0 +1,2430 @@ +;; Written by construo 0.2.0pre3 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 1658) (pos 940.828064 -40.659744) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1659) (pos 941.048462 -2.647639) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1660) (pos 901.036255 -2.467951) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1661) (pos 900.836853 -41.481155) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1662) (pos 940.166260 40.343575) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1663) (pos 940.386536 78.355850) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1664) (pos 900.374329 78.535049) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1665) (pos 900.174744 39.522774) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1666) (pos 861.824402 -41.280960) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1667) (pos 862.044617 -3.268734) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1668) (pos 822.032715 -3.089413) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1669) (pos 821.832886 -42.101883) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1670) (pos 859.142273 40.680977) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1671) (pos 859.362488 78.693619) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1672) (pos 819.350342 78.872696) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1673) (pos 819.150696 39.860420) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1674) (pos 782.840881 -42.901688) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1675) (pos 783.061096 -4.889584) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1676) (pos 743.048950 -4.710384) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1677) (pos 742.849426 -43.722977) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1678) (pos 782.179077 38.101631) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1679) (pos 782.399231 76.114029) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1680) (pos 742.386902 76.293228) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1681) (pos 742.187256 37.281075) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1682) (pos 703.837097 -43.523026) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1683) (pos 704.057068 -5.510310) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1684) (pos 664.045166 -5.331721) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1685) (pos 663.845398 -44.343826) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1686) (pos 701.154846 38.439156) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1687) (pos 701.375183 76.451431) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1688) (pos 661.362915 76.630875) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1689) (pos 661.163330 37.618355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1690) (pos 941.360229 128.386658) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1691) (pos 941.580200 166.399124) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1692) (pos 901.568176 166.578568) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1693) (pos 901.368713 127.565834) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1694) (pos 940.698181 209.389725) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1695) (pos 940.918091 247.402527) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1696) (pos 900.906128 247.581726) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1697) (pos 900.706665 208.569534) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1698) (pos 862.356506 127.765419) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1699) (pos 862.576599 165.778030) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1700) (pos 822.564453 165.957230) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1701) (pos 822.364624 126.944984) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1702) (pos 859.674316 209.727249) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1703) (pos 859.894348 247.740295) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1704) (pos 819.882202 247.919617) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1705) (pos 819.682617 208.906937) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1706) (pos 783.372925 126.144569) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1707) (pos 783.593018 164.157181) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1708) (pos 743.580811 164.336624) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1709) (pos 743.381226 125.323891) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1710) (pos 782.710815 207.148514) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1711) (pos 782.930908 245.160583) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1712) (pos 742.918884 245.339661) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1713) (pos 742.719177 206.327469) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1714) (pos 704.368835 125.523476) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1715) (pos 704.588989 163.535843) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1716) (pos 664.576904 163.715286) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1717) (pos 664.377197 124.703041) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1718) (pos 701.686646 207.485794) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1719) (pos 701.906799 245.498230) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1720) (pos 661.894775 245.677429) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1721) (pos 661.695129 206.665482) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1722) (pos 1267.307983 -37.315990) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1723) (pos 1267.528320 0.696114) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1724) (pos 1227.516113 0.875801) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1725) (pos 1227.316650 -38.137402) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1726) (pos 1266.646118 43.687325) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1727) (pos 1266.866455 81.699600) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1728) (pos 1226.854126 81.878799) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1729) (pos 1226.654541 42.866524) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1730) (pos 1188.304199 -37.937206) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1731) (pos 1188.524414 0.075019) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1732) (pos 1148.512573 0.254340) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1733) (pos 1148.312744 -38.758129) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1734) (pos 1185.622070 44.024727) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1735) (pos 1185.842285 82.037369) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1736) (pos 1145.830200 82.216446) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1737) (pos 1145.630615 43.204170) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1738) (pos 1109.320923 -39.557934) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1739) (pos 1109.541138 -1.545832) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1740) (pos 1069.529175 -1.366632) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1741) (pos 1069.329590 -40.379223) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1742) (pos 1108.659180 41.445381) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1743) (pos 1108.879272 79.457779) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1744) (pos 1068.867188 79.636978) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1745) (pos 1068.667480 40.624825) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1746) (pos 1030.317383 -40.179272) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1747) (pos 1030.537354 -2.166560) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1748) (pos 990.525391 -1.987971) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1749) (pos 990.325684 -41.000076) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1750) (pos 1027.635010 41.782906) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1751) (pos 1027.855347 79.795181) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1752) (pos 987.843201 79.974625) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1753) (pos 987.643616 40.962105) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1754) (pos 1267.840088 131.730408) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1755) (pos 1268.060059 169.742874) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1756) (pos 1228.047974 169.922318) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1757) (pos 1227.848511 130.909607) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1758) (pos 1267.178101 212.733475) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1759) (pos 1267.397949 250.746292) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1760) (pos 1227.385986 250.925491) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1761) (pos 1227.186523 211.913284) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1762) (pos 1188.836304 131.109192) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1763) (pos 1189.056396 169.121780) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1764) (pos 1149.044312 169.300980) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1765) (pos 1148.844482 130.288757) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1766) (pos 1186.154175 213.070999) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1767) (pos 1186.374146 251.084061) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1768) (pos 1146.362061 251.263382) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1769) (pos 1146.162476 212.250687) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1770) (pos 1109.853027 129.488342) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1771) (pos 1110.073120 167.500931) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1772) (pos 1070.061035 167.680374) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1773) (pos 1069.861450 128.667664) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1774) (pos 1109.190918 210.492264) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1775) (pos 1109.411011 248.504349) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1776) (pos 1069.399048 248.683426) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1777) (pos 1069.199463 209.671219) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1778) (pos 1030.849121 128.867249) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1779) (pos 1031.069214 166.879593) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1780) (pos 991.057129 167.059036) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1781) (pos 990.857422 128.046814) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1782) (pos 1028.166870 210.829544) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1783) (pos 1028.386963 248.841995) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1784) (pos 988.375000 249.021194) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1785) (pos 988.175415 210.009232) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1786) (pos 937.259949 291.004395) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1787) (pos 937.480347 329.016510) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1788) (pos 897.468079 329.196198) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1789) (pos 897.268677 290.182983) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1790) (pos 936.598145 372.007721) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1791) (pos 936.818420 410.020050) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1792) (pos 896.806152 410.199249) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1793) (pos 896.606567 371.186920) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1794) (pos 858.256226 290.383179) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1795) (pos 858.476440 328.395416) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1796) (pos 818.464600 328.574738) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1797) (pos 818.264771 289.562256) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1798) (pos 855.574097 372.345123) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1799) (pos 855.794312 410.357819) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1800) (pos 815.782288 410.536896) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1801) (pos 815.582642 371.524567) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1802) (pos 779.272888 288.762451) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1803) (pos 779.493103 326.774567) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1804) (pos 739.480896 326.953766) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1805) (pos 739.281372 287.941162) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1806) (pos 778.611084 369.765778) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1807) (pos 778.831238 407.778229) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1808) (pos 738.818909 407.957428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1809) (pos 738.619202 368.945221) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1810) (pos 700.269104 288.141113) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1811) (pos 700.489075 326.153839) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1812) (pos 660.477112 326.332428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1813) (pos 660.277405 287.320312) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1814) (pos 697.586853 370.103302) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1815) (pos 697.807190 408.115631) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1816) (pos 657.794922 408.295074) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1817) (pos 657.595337 369.282501) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1818) (pos 937.792114 460.050781) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1819) (pos 938.012085 498.063232) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1820) (pos 898.000000 498.242676) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1821) (pos 897.800537 459.229980) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1822) (pos 937.130066 541.053650) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1823) (pos 937.349976 579.066589) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1824) (pos 897.337952 579.245789) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1825) (pos 897.138489 540.233459) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1826) (pos 858.788330 459.429565) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1827) (pos 859.008423 497.442139) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1828) (pos 818.996338 497.621338) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1829) (pos 818.796509 458.609131) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1830) (pos 856.106140 541.391174) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1831) (pos 856.326172 579.404358) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1832) (pos 816.314148 579.583679) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1833) (pos 816.114563 540.570862) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1834) (pos 779.804932 457.808716) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1835) (pos 780.025024 495.821289) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1836) (pos 740.012817 496.000732) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1837) (pos 739.813171 456.988037) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1838) (pos 779.142822 538.812439) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1839) (pos 779.362915 576.824646) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1840) (pos 739.350830 577.003723) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1841) (pos 739.151184 537.991394) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1842) (pos 700.800842 457.187622) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1843) (pos 701.020996 495.199951) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1844) (pos 661.008850 495.379395) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1845) (pos 660.809143 456.367188) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1846) (pos 698.118652 539.149719) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1847) (pos 698.338806 577.162292) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1848) (pos 658.326721 577.341492) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1849) (pos 658.127136 538.329407) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1850) (pos 1263.739990 294.348145) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1851) (pos 1263.960327 332.360260) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1852) (pos 1223.948120 332.539948) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1853) (pos 1223.748657 293.526733) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1854) (pos 1263.078125 375.351471) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1855) (pos 1263.298462 413.363800) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1856) (pos 1223.286133 413.542999) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1857) (pos 1223.086548 374.530670) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1858) (pos 1184.736206 293.726929) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1859) (pos 1184.956421 331.739166) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1860) (pos 1144.944580 331.918488) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1861) (pos 1144.744751 292.906006) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1862) (pos 1182.054077 375.688873) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1863) (pos 1182.274292 413.701569) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1864) (pos 1142.262207 413.880646) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1865) (pos 1142.062622 374.868317) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1866) (pos 1105.753052 292.106201) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1867) (pos 1105.973267 330.118317) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1868) (pos 1065.961060 330.297516) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1869) (pos 1065.761475 291.284912) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1870) (pos 1105.091187 373.109528) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1871) (pos 1105.311401 411.121979) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1872) (pos 1065.299072 411.301178) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1873) (pos 1065.099365 372.288971) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1874) (pos 1026.749023 291.484863) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1875) (pos 1026.968994 329.497589) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1876) (pos 986.957092 329.676178) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1877) (pos 986.757385 290.664062) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1878) (pos 1024.066650 373.447052) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1879) (pos 1024.286987 411.459381) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1880) (pos 984.274963 411.638824) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1881) (pos 984.075378 372.626251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1882) (pos 1264.272095 463.394531) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1883) (pos 1264.492065 501.406921) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1884) (pos 1224.479980 501.586365) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1885) (pos 1224.280518 462.573730) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1886) (pos 1263.610107 544.397339) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1887) (pos 1263.829956 582.410278) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1888) (pos 1223.817993 582.589478) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1889) (pos 1223.618530 543.577209) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1890) (pos 1185.268311 462.773315) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1891) (pos 1185.488403 500.785828) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1892) (pos 1145.476318 500.965027) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1893) (pos 1145.276489 461.952881) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1894) (pos 1182.586182 544.734863) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1895) (pos 1182.806152 582.748047) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1896) (pos 1142.794067 582.927368) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1897) (pos 1142.594482 543.914551) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1898) (pos 1106.285034 461.152466) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1899) (pos 1106.505127 499.164978) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1900) (pos 1066.492920 499.344421) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1901) (pos 1066.293335 460.331787) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1902) (pos 1105.622925 542.156189) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1903) (pos 1105.843018 580.168396) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1904) (pos 1065.830933 580.347412) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1905) (pos 1065.631348 541.335144) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1906) (pos 1027.280762 460.531372) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1907) (pos 1027.500854 498.543701) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1908) (pos 987.488831 498.723145) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1909) (pos 987.289124 459.710938) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1910) (pos 1024.598511 542.493469) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1911) (pos 1024.818604 580.505981) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1912) (pos 984.806702 580.685181) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1913) (pos 984.607117 541.673157) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1916) (pos 945.111694 -701.764893) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1917) (pos 945.332092 -663.752747) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1918) (pos 905.319824 -663.573059) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1919) (pos 905.120422 -702.586182) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1920) (pos 944.449890 -620.761536) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1921) (pos 944.670166 -582.749451) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1922) (pos 904.657898 -582.570251) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1923) (pos 904.458313 -621.582336) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1924) (pos 866.107971 -702.385986) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1925) (pos 866.328186 -664.373840) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1926) (pos 826.316345 -664.194641) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1927) (pos 826.116516 -703.207031) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1928) (pos 863.425842 -620.424133) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1929) (pos 863.646057 -582.411560) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1930) (pos 823.633972 -582.232605) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1931) (pos 823.434326 -621.244690) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1932) (pos 787.124451 -704.006836) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1933) (pos 787.344666 -665.994690) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1934) (pos 747.332520 -665.815491) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1935) (pos 747.132996 -704.828125) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1936) (pos 786.462646 -623.003479) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1937) (pos 786.682800 -584.991150) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1938) (pos 746.670532 -584.811951) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1939) (pos 746.470825 -623.824036) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1940) (pos 708.120667 -704.628174) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1941) (pos 708.340698 -666.615540) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1942) (pos 668.328735 -666.436829) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1943) (pos 668.128967 -705.448975) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1944) (pos 705.438477 -622.666077) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1945) (pos 705.658813 -584.653748) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1946) (pos 665.646484 -584.474304) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1947) (pos 665.446899 -623.486877) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1948) (pos 945.643860 -532.718689) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1949) (pos 945.863831 -494.705872) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1950) (pos 905.851746 -494.526428) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1951) (pos 905.652283 -533.539490) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1952) (pos 944.981812 -451.715393) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1953) (pos 945.201721 -413.702911) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1954) (pos 905.189697 -413.523712) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1955) (pos 904.990234 -452.535461) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1956) (pos 866.640076 -533.339783) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1957) (pos 866.860168 -495.326965) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1958) (pos 826.848022 -495.147766) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1959) (pos 826.648254 -534.160339) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1960) (pos 863.957886 -451.377747) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1961) (pos 864.177917 -413.365265) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1962) (pos 824.165833 -413.185822) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1963) (pos 823.966248 -452.198059) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1964) (pos 787.656555 -534.960632) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1965) (pos 787.876587 -496.947815) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1966) (pos 747.864441 -496.768372) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1967) (pos 747.664795 -535.781433) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1968) (pos 786.994446 -453.956604) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1969) (pos 787.214539 -415.944855) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1970) (pos 747.202454 -415.765900) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1971) (pos 747.002808 -454.777649) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1972) (pos 708.652405 -535.581726) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1973) (pos 708.872559 -497.569153) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1974) (pos 668.860474 -497.389709) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1975) (pos 668.660767 -536.402283) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1976) (pos 705.970276 -453.619202) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1977) (pos 706.190430 -415.607208) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1978) (pos 666.178345 -415.428009) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1979) (pos 665.978699 -454.439514) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1980) (pos 1271.591553 -698.421143) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1981) (pos 1271.811890 -660.408997) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1982) (pos 1231.799683 -660.229309) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1983) (pos 1231.600220 -699.242432) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1984) (pos 1270.929688 -617.417786) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1985) (pos 1271.150024 -579.405701) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1986) (pos 1231.137695 -579.226501) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1987) (pos 1230.938110 -618.238586) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1988) (pos 1192.587769 -699.042236) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1989) (pos 1192.807983 -661.030090) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1990) (pos 1152.796143 -660.850891) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1991) (pos 1152.596313 -699.863281) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1992) (pos 1189.905640 -617.080383) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1993) (pos 1190.125854 -579.067810) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1994) (pos 1150.113770 -578.888855) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1995) (pos 1149.914185 -617.900940) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1996) (pos 1113.604492 -700.663086) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1997) (pos 1113.824707 -662.650940) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1998) (pos 1073.812744 -662.471741) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 1999) (pos 1073.613159 -701.484375) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2000) (pos 1112.942627 -619.659729) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2001) (pos 1113.162842 -581.647400) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2002) (pos 1073.150757 -581.468201) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2003) (pos 1072.951050 -620.480286) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2004) (pos 1034.600952 -701.284424) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2005) (pos 1034.820923 -663.271790) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2006) (pos 994.808960 -663.093079) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2007) (pos 994.609253 -702.105225) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2008) (pos 1031.918701 -619.322327) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2009) (pos 1032.139038 -581.309998) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2010) (pos 992.126831 -581.130554) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2011) (pos 991.927246 -620.143127) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2012) (pos 1272.123657 -529.374939) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2013) (pos 1272.343628 -491.362122) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2014) (pos 1232.331543 -491.182678) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2015) (pos 1232.132080 -530.195740) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2016) (pos 1271.461670 -448.371643) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2017) (pos 1271.681519 -410.359161) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2018) (pos 1231.669556 -410.179962) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2019) (pos 1231.470093 -449.191711) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2020) (pos 1193.119873 -529.996033) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2021) (pos 1193.339966 -491.983215) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2022) (pos 1153.327881 -491.804016) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2023) (pos 1153.128052 -530.816589) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2024) (pos 1190.437744 -448.033997) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2025) (pos 1190.657715 -410.021271) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2026) (pos 1150.645630 -409.842194) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2027) (pos 1150.446045 -448.854309) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2028) (pos 1114.136475 -531.616882) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2029) (pos 1114.356567 -493.604065) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2030) (pos 1074.344604 -493.424622) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2031) (pos 1074.145020 -532.437683) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2032) (pos 1113.474365 -450.612854) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2033) (pos 1113.694458 -412.601105) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2034) (pos 1073.682617 -412.421906) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2035) (pos 1073.483032 -451.433899) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2036) (pos 1035.132690 -532.237976) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2037) (pos 1035.352783 -494.225403) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2038) (pos 995.340698 -494.045959) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2039) (pos 995.140991 -533.058533) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2040) (pos 1032.450562 -450.275452) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2041) (pos 1032.670654 -412.263458) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2042) (pos 992.658569 -412.084259) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2043) (pos 992.458984 -451.095764) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2044) (pos 941.543518 -370.101166) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2045) (pos 941.763916 -332.089081) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2046) (pos 901.751709 -331.909393) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2047) (pos 901.552307 -370.922577) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2048) (pos 940.881714 -289.097870) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2049) (pos 941.101990 -251.085602) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2050) (pos 901.089783 -250.906403) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2051) (pos 900.890198 -289.918671) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2052) (pos 862.539856 -370.722382) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2053) (pos 862.760071 -332.710175) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2054) (pos 822.748230 -332.530853) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2055) (pos 822.548401 -371.543304) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2056) (pos 859.857727 -288.760468) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2057) (pos 860.077942 -250.747803) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2058) (pos 820.065857 -250.568726) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2059) (pos 819.866272 -289.581024) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2060) (pos 783.556458 -372.343109) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2061) (pos 783.776672 -334.331024) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2062) (pos 743.764526 -334.151825) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2063) (pos 743.565002 -373.164398) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2064) (pos 782.894653 -291.339813) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2065) (pos 783.114807 -253.327423) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2066) (pos 743.102539 -253.148224) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2067) (pos 742.902832 -292.160370) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2068) (pos 704.552673 -372.964447) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2069) (pos 704.772644 -334.951752) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2070) (pos 664.760681 -334.773163) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2071) (pos 664.560974 -373.785248) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2072) (pos 701.870422 -291.002289) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2073) (pos 702.090759 -252.990021) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2074) (pos 662.078491 -252.810577) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2075) (pos 661.878906 -291.823090) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2076) (pos 942.075684 -201.054749) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2077) (pos 942.295654 -163.042236) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2078) (pos 902.283630 -162.862793) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2079) (pos 902.084167 -201.875549) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2080) (pos 941.413635 -120.051605) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2081) (pos 941.633545 -82.038788) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2082) (pos 901.621582 -81.859589) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2083) (pos 901.422119 -120.871788) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2084) (pos 863.071960 -201.675964) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2085) (pos 863.292053 -163.663330) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2086) (pos 823.279968 -163.484131) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2087) (pos 823.080139 -202.496399) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2088) (pos 860.389771 -119.714081) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2089) (pos 860.609802 -81.701019) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2090) (pos 820.597717 -81.521698) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2091) (pos 820.398132 -120.534386) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2092) (pos 784.088562 -203.296814) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2093) (pos 784.308594 -165.284180) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2094) (pos 744.296448 -165.104736) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2095) (pos 744.096802 -204.117493) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2096) (pos 783.426453 -122.292809) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2097) (pos 783.646545 -84.280731) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2098) (pos 743.634460 -84.101654) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2099) (pos 743.434814 -123.113831) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2100) (pos 705.084412 -203.917908) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2101) (pos 705.304565 -165.905518) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2102) (pos 665.292419 -165.726074) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2103) (pos 665.092712 -204.738342) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2104) (pos 702.402222 -121.955528) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2105) (pos 702.622375 -83.943085) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2106) (pos 662.610291 -83.763885) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2107) (pos 662.410706 -122.775841) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2108) (pos 1268.023560 -366.757416) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2109) (pos 1268.243896 -328.745331) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2110) (pos 1228.231689 -328.565643) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2111) (pos 1228.032227 -367.578827) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2112) (pos 1267.361694 -285.754120) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2113) (pos 1267.582031 -247.741821) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2114) (pos 1227.569702 -247.562622) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2115) (pos 1227.370117 -286.574921) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2116) (pos 1189.019775 -367.378632) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2117) (pos 1189.239990 -329.366425) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2118) (pos 1149.228149 -329.187103) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2119) (pos 1149.028320 -368.199554) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2120) (pos 1186.337646 -285.416718) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2121) (pos 1186.557861 -247.404053) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2122) (pos 1146.545776 -247.224976) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2123) (pos 1146.346191 -286.237274) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2124) (pos 1110.036499 -368.999359) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2125) (pos 1110.256714 -330.987274) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2126) (pos 1070.244629 -330.808075) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2127) (pos 1070.045166 -369.820648) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2128) (pos 1109.374756 -287.996063) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2129) (pos 1109.594849 -249.983643) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2130) (pos 1069.582642 -249.804443) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2131) (pos 1069.382935 -288.816620) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2132) (pos 1031.032715 -369.620697) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2133) (pos 1031.252686 -331.608002) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2134) (pos 991.240723 -331.429413) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2135) (pos 991.041077 -370.441498) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2136) (pos 1028.350464 -287.658539) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2137) (pos 1028.570679 -249.646240) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2138) (pos 988.558655 -249.466797) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2139) (pos 988.359070 -288.479340) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2140) (pos 1268.555664 -197.710968) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2141) (pos 1268.775635 -159.698486) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2142) (pos 1228.763550 -159.519043) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2143) (pos 1228.564087 -198.531769) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2144) (pos 1267.893677 -116.707848) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2145) (pos 1268.113525 -78.695038) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2146) (pos 1228.101562 -78.515839) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2147) (pos 1227.902100 -117.528038) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2148) (pos 1189.551880 -198.332184) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2149) (pos 1189.771973 -160.319580) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2150) (pos 1149.759888 -160.140381) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2151) (pos 1149.560059 -199.152618) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2152) (pos 1186.869751 -116.370323) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2153) (pos 1187.089722 -78.357269) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2154) (pos 1147.077637 -78.177948) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2155) (pos 1146.878052 -117.190636) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2156) (pos 1110.568604 -199.953064) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2157) (pos 1110.788696 -161.940430) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2158) (pos 1070.776611 -161.760986) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2159) (pos 1070.576904 -200.773743) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2160) (pos 1109.906494 -118.949066) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2161) (pos 1110.126587 -80.936981) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2162) (pos 1070.114624 -80.757904) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2163) (pos 1069.914917 -119.770111) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2164) (pos 1031.564453 -200.574158) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2165) (pos 1031.784546 -162.561768) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2166) (pos 991.772461 -162.382324) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2167) (pos 991.572754 -201.394592) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2168) (pos 1028.882202 -118.611786) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2169) (pos 1029.102295 -80.599335) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2170) (pos 989.090393 -80.420135) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 2171) (pos 988.890808 -119.432098) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 1658) (second 1659) (length 38.012745)) + (spring (first 1659) (second 1660) (length 40.012611)) + (spring (first 1660) (second 1661) (length 39.013714)) + (spring (first 1661) (second 1658) (length 39.999645)) + (spring (first 1658) (second 1660) (length 55.154339)) + (spring (first 1659) (second 1661) (length 55.901836)) + (spring (first 1662) (second 1663) (length 38.012913)) + (spring (first 1663) (second 1664) (length 40.012608)) + (spring (first 1664) (second 1665) (length 39.012787)) + (spring (first 1665) (second 1662) (length 39.999939)) + (spring (first 1662) (second 1664) (length 55.154205)) + (spring (first 1663) (second 1665) (length 55.901665)) + (spring (first 1666) (second 1667) (length 38.012863)) + (spring (first 1667) (second 1668) (length 40.012302)) + (spring (first 1668) (second 1669) (length 39.012981)) + (spring (first 1669) (second 1666) (length 39.999943)) + (spring (first 1666) (second 1668) (length 55.154079)) + (spring (first 1667) (second 1669) (length 55.901672)) + (spring (first 1670) (second 1671) (length 38.013279)) + (spring (first 1671) (second 1672) (length 40.012547)) + (spring (first 1672) (second 1673) (length 39.012787)) + (spring (first 1673) (second 1670) (length 39.999996)) + (spring (first 1670) (second 1672) (length 55.154377)) + (spring (first 1671) (second 1673) (length 55.901749)) + (spring (first 1659) (second 1662) (length 43.000263)) + (spring (first 1665) (second 1670) (length 41.048813)) + (spring (first 1670) (second 1667) (length 44.045441)) + (spring (first 1667) (second 1660) (length 38.999859)) + (spring (first 1660) (second 1665) (length 41.999561)) + (spring (first 1664) (second 1671) (length 41.012146)) + (spring (first 1673) (second 1668) (length 43.046417)) + (spring (first 1666) (second 1661) (length 39.012966)) + (spring (first 1661) (second 1667) (length 54.452061)) + (spring (first 1667) (second 1665) (length 57.315090)) + (spring (first 1665) (second 1671) (length 56.568501)) + (spring (first 1664) (second 1670) (length 55.973328)) + (spring (first 1670) (second 1660) (length 60.140965)) + (spring (first 1659) (second 1665) (length 58.728226)) + (spring (first 1662) (second 1660) (length 57.999863)) + (spring (first 1660) (second 1666) (length 55.172630)) + (spring (first 1668) (second 1670) (length 57.384373)) + (spring (first 1667) (second 1673) (length 60.827728)) + (spring (first 1674) (second 1675) (length 38.012741)) + (spring (first 1675) (second 1676) (length 40.012547)) + (spring (first 1676) (second 1677) (length 39.013103)) + (spring (first 1677) (second 1674) (length 39.999886)) + (spring (first 1674) (second 1676) (length 55.154087)) + (spring (first 1675) (second 1677) (length 55.901794)) + (spring (first 1678) (second 1679) (length 38.013035)) + (spring (first 1679) (second 1680) (length 40.012730)) + (spring (first 1680) (second 1681) (length 39.012665)) + (spring (first 1681) (second 1678) (length 40.000240)) + (spring (first 1678) (second 1680) (length 55.154469)) + (spring (first 1679) (second 1681) (length 55.901711)) + (spring (first 1682) (second 1683) (length 38.013351)) + (spring (first 1683) (second 1684) (length 40.012299)) + (spring (first 1684) (second 1685) (length 39.012615)) + (spring (first 1685) (second 1682) (length 40.000122)) + (spring (first 1682) (second 1684) (length 55.154087)) + (spring (first 1683) (second 1685) (length 55.901882)) + (spring (first 1686) (second 1687) (length 38.012913)) + (spring (first 1687) (second 1688) (length 40.012669)) + (spring (first 1688) (second 1689) (length 39.013031)) + (spring (first 1689) (second 1686) (length 39.999939)) + (spring (first 1686) (second 1688) (length 55.154377)) + (spring (first 1687) (second 1689) (length 55.901707)) + (spring (first 1675) (second 1678) (length 43.000263)) + (spring (first 1681) (second 1686) (length 41.048748)) + (spring (first 1686) (second 1683) (length 44.045185)) + (spring (first 1683) (second 1676) (length 39.000088)) + (spring (first 1676) (second 1681) (length 42.000298)) + (spring (first 1680) (second 1687) (length 41.012024)) + (spring (first 1689) (second 1684) (length 43.046650)) + (spring (first 1682) (second 1677) (length 39.012840)) + (spring (first 1677) (second 1683) (length 54.452320)) + (spring (first 1683) (second 1681) (length 57.315041)) + (spring (first 1681) (second 1687) (length 56.568031)) + (spring (first 1680) (second 1686) (length 55.973328)) + (spring (first 1686) (second 1676) (length 60.141491)) + (spring (first 1675) (second 1681) (length 58.728489)) + (spring (first 1678) (second 1676) (length 58.000305)) + (spring (first 1676) (second 1682) (length 55.172371)) + (spring (first 1684) (second 1686) (length 57.384823)) + (spring (first 1683) (second 1689) (length 60.827251)) + (spring (first 1678) (second 1673) (length 37.013428)) + (spring (first 1668) (second 1675) (length 39.013172)) + (spring (first 1674) (second 1669) (length 39.000206)) + (spring (first 1672) (second 1679) (length 37.053944)) + (spring (first 1679) (second 1673) (length 51.623585)) + (spring (first 1675) (second 1669) (length 53.740181)) + (spring (first 1668) (second 1674) (length 55.866062)) + (spring (first 1675) (second 1673) (length 57.489323)) + (spring (first 1668) (second 1678) (length 57.315044)) + (spring (first 1678) (second 1672) (length 55.172298)) + (spring (first 1690) (second 1691) (length 38.013103)) + (spring (first 1691) (second 1692) (length 40.012424)) + (spring (first 1692) (second 1693) (length 39.013245)) + (spring (first 1693) (second 1690) (length 39.999939)) + (spring (first 1690) (second 1692) (length 55.154594)) + (spring (first 1691) (second 1693) (length 55.901592)) + (spring (first 1694) (second 1695) (length 38.013439)) + (spring (first 1695) (second 1696) (length 40.012363)) + (spring (first 1696) (second 1697) (length 39.012703)) + (spring (first 1697) (second 1694) (length 39.999928)) + (spring (first 1694) (second 1696) (length 55.154659)) + (spring (first 1695) (second 1697) (length 55.901340)) + (spring (first 1698) (second 1699) (length 38.013248)) + (spring (first 1699) (second 1700) (length 40.012547)) + (spring (first 1700) (second 1701) (length 39.012756)) + (spring (first 1701) (second 1698) (length 40.000298)) + (spring (first 1698) (second 1700) (length 55.154526)) + (spring (first 1699) (second 1701) (length 55.901775)) + (spring (first 1702) (second 1703) (length 38.013683)) + (spring (first 1703) (second 1704) (length 40.012547)) + (spring (first 1704) (second 1705) (length 39.013191)) + (spring (first 1705) (second 1702) (length 40.000111)) + (spring (first 1702) (second 1704) (length 55.154957)) + (spring (first 1703) (second 1705) (length 55.901817)) + (spring (first 1691) (second 1694) (length 42.999649)) + (spring (first 1697) (second 1702) (length 41.048679)) + (spring (first 1702) (second 1699) (length 44.044945)) + (spring (first 1699) (second 1692) (length 38.999794)) + (spring (first 1692) (second 1697) (length 41.999802)) + (spring (first 1696) (second 1703) (length 41.012085)) + (spring (first 1705) (second 1700) (length 43.046280)) + (spring (first 1698) (second 1693) (length 39.012718)) + (spring (first 1693) (second 1699) (length 54.451813)) + (spring (first 1699) (second 1697) (length 57.315048)) + (spring (first 1697) (second 1703) (length 56.568485)) + (spring (first 1696) (second 1702) (length 55.973419)) + (spring (first 1702) (second 1692) (length 60.140705)) + (spring (first 1691) (second 1697) (length 58.728096)) + (spring (first 1694) (second 1692) (length 57.999592)) + (spring (first 1692) (second 1698) (length 55.172596)) + (spring (first 1700) (second 1702) (length 57.384289)) + (spring (first 1699) (second 1705) (length 60.827595)) + (spring (first 1706) (second 1707) (length 38.013248)) + (spring (first 1707) (second 1708) (length 40.012608)) + (spring (first 1708) (second 1709) (length 39.013245)) + (spring (first 1709) (second 1706) (length 40.000118)) + (spring (first 1706) (second 1708) (length 55.154739)) + (spring (first 1707) (second 1709) (length 55.901814)) + (spring (first 1710) (second 1711) (length 38.012707)) + (spring (first 1711) (second 1712) (length 40.012424)) + (spring (first 1712) (second 1713) (length 39.012703)) + (spring (first 1713) (second 1710) (length 40.000065)) + (spring (first 1710) (second 1712) (length 55.153980)) + (spring (first 1711) (second 1713) (length 55.901646)) + (spring (first 1714) (second 1715) (length 38.013004)) + (spring (first 1715) (second 1716) (length 40.012486)) + (spring (first 1716) (second 1717) (length 39.012756)) + (spring (first 1717) (second 1714) (length 40.000053)) + (spring (first 1714) (second 1716) (length 55.154438)) + (spring (first 1715) (second 1717) (length 55.901474)) + (spring (first 1718) (second 1719) (length 38.013073)) + (spring (first 1719) (second 1720) (length 40.012424)) + (spring (first 1720) (second 1721) (length 39.012459)) + (spring (first 1721) (second 1718) (length 39.999928)) + (spring (first 1718) (second 1720) (length 55.154274)) + (spring (first 1719) (second 1721) (length 55.901348)) + (spring (first 1707) (second 1710) (length 43.000385)) + (spring (first 1713) (second 1718) (length 41.048878)) + (spring (first 1718) (second 1715) (length 44.045677)) + (spring (first 1715) (second 1708) (length 39.000042)) + (spring (first 1708) (second 1713) (length 41.999683)) + (spring (first 1712) (second 1719) (length 41.012390)) + (spring (first 1721) (second 1716) (length 43.046764)) + (spring (first 1714) (second 1709) (length 39.012901)) + (spring (first 1709) (second 1715) (length 54.451729)) + (spring (first 1715) (second 1713) (length 57.315220)) + (spring (first 1713) (second 1719) (length 56.568531)) + (spring (first 1712) (second 1718) (length 55.973320)) + (spring (first 1718) (second 1708) (length 60.141266)) + (spring (first 1707) (second 1713) (length 58.728222)) + (spring (first 1710) (second 1708) (length 58.000130)) + (spring (first 1708) (second 1714) (length 55.172813)) + (spring (first 1716) (second 1718) (length 57.384583)) + (spring (first 1715) (second 1721) (length 60.828026)) + (spring (first 1710) (second 1705) (length 37.013596)) + (spring (first 1700) (second 1707) (length 39.012985)) + (spring (first 1706) (second 1701) (length 38.999912)) + (spring (first 1704) (second 1711) (length 37.054153)) + (spring (first 1711) (second 1705) (length 51.623783)) + (spring (first 1707) (second 1701) (length 53.739975)) + (spring (first 1700) (second 1706) (length 55.866123)) + (spring (first 1707) (second 1705) (length 57.489128)) + (spring (first 1700) (second 1710) (length 57.315220)) + (spring (first 1710) (second 1704) (length 55.172409)) + (spring (first 1663) (second 1690) (length 50.040283)) + (spring (first 1693) (second 1671) (length 64.443901)) + (spring (first 1664) (second 1698) (length 62.201157)) + (spring (first 1698) (second 1672) (length 65.115501)) + (spring (first 1671) (second 1701) (length 60.803257)) + (spring (first 1701) (second 1679) (length 64.660797)) + (spring (first 1688) (second 1717) (length 48.166576)) + (spring (first 1714) (second 1687) (length 49.163273)) + (spring (first 1680) (second 1709) (length 49.040745)) + (spring (first 1679) (second 1706) (length 50.040016)) + (spring (first 1672) (second 1701) (length 48.166698)) + (spring (first 1664) (second 1693) (length 49.040867)) + (spring (first 1663) (second 1693) (length 62.801376)) + (spring (first 1690) (second 1664) (length 64.537018)) + (spring (first 1671) (second 1698) (length 49.163052)) + (spring (first 1672) (second 1706) (length 59.405426)) + (spring (first 1706) (second 1680) (length 64.536888)) + (spring (first 1680) (second 1714) (length 62.201210)) + (spring (first 1714) (second 1688) (length 65.115250)) + (spring (first 1717) (second 1687) (length 60.803528)) + (spring (first 1687) (second 1709) (length 64.443970)) + (spring (first 1709) (second 1679) (length 62.801395)) + (spring (first 1722) (second 1723) (length 38.012741)) + (spring (first 1723) (second 1724) (length 40.012611)) + (spring (first 1724) (second 1725) (length 39.013714)) + (spring (first 1725) (second 1722) (length 39.999767)) + (spring (first 1722) (second 1724) (length 55.154381)) + (spring (first 1723) (second 1725) (length 55.901882)) + (spring (first 1726) (second 1727) (length 38.012913)) + (spring (first 1727) (second 1728) (length 40.012730)) + (spring (first 1728) (second 1729) (length 39.012787)) + (spring (first 1729) (second 1726) (length 40.000000)) + (spring (first 1726) (second 1728) (length 55.154251)) + (spring (first 1727) (second 1729) (length 55.901752)) + (spring (first 1730) (second 1731) (length 38.012863)) + (spring (first 1731) (second 1732) (length 40.012241)) + (spring (first 1732) (second 1733) (length 39.012981)) + (spring (first 1733) (second 1730) (length 39.999882)) + (spring (first 1730) (second 1732) (length 55.154037)) + (spring (first 1731) (second 1733) (length 55.901627)) + (spring (first 1734) (second 1735) (length 38.013279)) + (spring (first 1735) (second 1736) (length 40.012486)) + (spring (first 1736) (second 1737) (length 39.012787)) + (spring (first 1737) (second 1734) (length 39.999874)) + (spring (first 1734) (second 1736) (length 55.154331)) + (spring (first 1735) (second 1737) (length 55.901661)) + (spring (first 1723) (second 1726) (length 43.000263)) + (spring (first 1729) (second 1734) (length 41.048813)) + (spring (first 1734) (second 1731) (length 44.045437)) + (spring (first 1731) (second 1724) (length 38.999920)) + (spring (first 1724) (second 1729) (length 41.999561)) + (spring (first 1728) (second 1735) (length 41.012146)) + (spring (first 1737) (second 1732) (length 43.046413)) + (spring (first 1730) (second 1725) (length 39.012966)) + (spring (first 1725) (second 1731) (length 54.452057)) + (spring (first 1731) (second 1729) (length 57.315090)) + (spring (first 1729) (second 1735) (length 56.568501)) + (spring (first 1728) (second 1734) (length 55.973328)) + (spring (first 1734) (second 1724) (length 60.141006)) + (spring (first 1723) (second 1729) (length 58.728268)) + (spring (first 1726) (second 1724) (length 57.999859)) + (spring (first 1724) (second 1730) (length 55.172672)) + (spring (first 1732) (second 1734) (length 57.384331)) + (spring (first 1731) (second 1737) (length 60.827641)) + (spring (first 1738) (second 1739) (length 38.012741)) + (spring (first 1739) (second 1740) (length 40.012363)) + (spring (first 1740) (second 1741) (length 39.013100)) + (spring (first 1741) (second 1738) (length 39.999763)) + (spring (first 1738) (second 1740) (length 55.153954)) + (spring (first 1739) (second 1741) (length 55.901707)) + (spring (first 1742) (second 1743) (length 38.013035)) + (spring (first 1743) (second 1744) (length 40.012486)) + (spring (first 1744) (second 1745) (length 39.012665)) + (spring (first 1745) (second 1742) (length 40.000118)) + (spring (first 1742) (second 1744) (length 55.154335)) + (spring (first 1743) (second 1745) (length 55.901581)) + (spring (first 1746) (second 1747) (length 38.013348)) + (spring (first 1747) (second 1748) (length 40.012360)) + (spring (first 1748) (second 1749) (length 39.012615)) + (spring (first 1749) (second 1746) (length 40.000122)) + (spring (first 1746) (second 1748) (length 55.154129)) + (spring (first 1747) (second 1749) (length 55.901882)) + (spring (first 1750) (second 1751) (length 38.012913)) + (spring (first 1751) (second 1752) (length 40.012547)) + (spring (first 1752) (second 1753) (length 39.013031)) + (spring (first 1753) (second 1750) (length 39.999817)) + (spring (first 1750) (second 1752) (length 55.154289)) + (spring (first 1751) (second 1753) (length 55.901619)) + (spring (first 1739) (second 1742) (length 43.000259)) + (spring (first 1745) (second 1750) (length 41.048809)) + (spring (first 1750) (second 1747) (length 44.045193)) + (spring (first 1747) (second 1740) (length 39.000027)) + (spring (first 1740) (second 1745) (length 42.000298)) + (spring (first 1744) (second 1751) (length 41.012146)) + (spring (first 1753) (second 1748) (length 43.046646)) + (spring (first 1746) (second 1741) (length 39.012718)) + (spring (first 1741) (second 1747) (length 54.452229)) + (spring (first 1747) (second 1745) (length 57.314999)) + (spring (first 1745) (second 1751) (length 56.568073)) + (spring (first 1744) (second 1750) (length 55.973415)) + (spring (first 1750) (second 1740) (length 60.141529)) + (spring (first 1739) (second 1745) (length 58.728359)) + (spring (first 1742) (second 1740) (length 58.000221)) + (spring (first 1740) (second 1746) (length 55.172325)) + (spring (first 1748) (second 1750) (length 57.384785)) + (spring (first 1747) (second 1753) (length 60.827251)) + (spring (first 1742) (second 1737) (length 37.013245)) + (spring (first 1732) (second 1739) (length 39.012989)) + (spring (first 1738) (second 1733) (length 39.000023)) + (spring (first 1736) (second 1743) (length 37.053761)) + (spring (first 1743) (second 1737) (length 51.623497)) + (spring (first 1739) (second 1733) (length 53.740047)) + (spring (first 1732) (second 1738) (length 55.865932)) + (spring (first 1739) (second 1737) (length 57.489243)) + (spring (first 1732) (second 1742) (length 57.314873)) + (spring (first 1742) (second 1736) (length 55.172134)) + (spring (first 1754) (second 1755) (length 38.013103)) + (spring (first 1755) (second 1756) (length 40.012486)) + (spring (first 1756) (second 1757) (length 39.013222)) + (spring (first 1757) (second 1754) (length 40.000000)) + (spring (first 1754) (second 1756) (length 55.154640)) + (spring (first 1755) (second 1757) (length 55.901623)) + (spring (first 1758) (second 1759) (length 38.013454)) + (spring (first 1759) (second 1760) (length 40.012363)) + (spring (first 1760) (second 1761) (length 39.012718)) + (spring (first 1761) (second 1758) (length 39.999989)) + (spring (first 1758) (second 1760) (length 55.154713)) + (spring (first 1759) (second 1761) (length 55.901352)) + (spring (first 1762) (second 1763) (length 38.013226)) + (spring (first 1763) (second 1764) (length 40.012486)) + (spring (first 1764) (second 1765) (length 39.012733)) + (spring (first 1765) (second 1762) (length 40.000237)) + (spring (first 1762) (second 1764) (length 55.154469)) + (spring (first 1763) (second 1765) (length 55.901714)) + (spring (first 1766) (second 1767) (length 38.013699)) + (spring (first 1767) (second 1768) (length 40.012486)) + (spring (first 1768) (second 1769) (length 39.013206)) + (spring (first 1769) (second 1766) (length 40.000111)) + (spring (first 1766) (second 1768) (length 55.154968)) + (spring (first 1767) (second 1769) (length 55.901783)) + (spring (first 1755) (second 1758) (length 42.999645)) + (spring (first 1761) (second 1766) (length 41.048679)) + (spring (first 1766) (second 1763) (length 44.044941)) + (spring (first 1763) (second 1756) (length 38.999794)) + (spring (first 1756) (second 1761) (length 41.999802)) + (spring (first 1760) (second 1767) (length 41.012146)) + (spring (first 1769) (second 1764) (length 43.046280)) + (spring (first 1762) (second 1757) (length 39.012718)) + (spring (first 1757) (second 1763) (length 54.451797)) + (spring (first 1763) (second 1761) (length 57.315090)) + (spring (first 1761) (second 1767) (length 56.568542)) + (spring (first 1760) (second 1766) (length 55.973431)) + (spring (first 1766) (second 1756) (length 60.140659)) + (spring (first 1755) (second 1761) (length 58.728096)) + (spring (first 1758) (second 1756) (length 57.999672)) + (spring (first 1756) (second 1762) (length 55.172581)) + (spring (first 1764) (second 1766) (length 57.384289)) + (spring (first 1763) (second 1769) (length 60.827553)) + (spring (first 1770) (second 1771) (length 38.013226)) + (spring (first 1771) (second 1772) (length 40.012486)) + (spring (first 1772) (second 1773) (length 39.013222)) + (spring (first 1773) (second 1770) (length 39.999996)) + (spring (first 1770) (second 1772) (length 55.154636)) + (spring (first 1771) (second 1773) (length 55.901711)) + (spring (first 1774) (second 1775) (length 38.012722)) + (spring (first 1775) (second 1776) (length 40.012363)) + (spring (first 1776) (second 1777) (length 39.012718)) + (spring (first 1777) (second 1774) (length 39.999882)) + (spring (first 1774) (second 1776) (length 55.153946)) + (spring (first 1775) (second 1777) (length 55.901527)) + (spring (first 1778) (second 1779) (length 38.012981)) + (spring (first 1779) (second 1780) (length 40.012486)) + (spring (first 1780) (second 1781) (length 39.012733)) + (spring (first 1781) (second 1778) (length 40.000114)) + (spring (first 1778) (second 1780) (length 55.154469)) + (spring (first 1779) (second 1781) (length 55.901459)) + (spring (first 1782) (second 1783) (length 38.013088)) + (spring (first 1783) (second 1784) (length 40.012363)) + (spring (first 1784) (second 1785) (length 39.012474)) + (spring (first 1785) (second 1782) (length 39.999866)) + (spring (first 1782) (second 1784) (length 55.154285)) + (spring (first 1783) (second 1785) (length 55.901272)) + (spring (first 1771) (second 1774) (length 43.000385)) + (spring (first 1777) (second 1782) (length 41.048939)) + (spring (first 1782) (second 1779) (length 44.045677)) + (spring (first 1779) (second 1772) (length 39.000042)) + (spring (first 1772) (second 1777) (length 41.999683)) + (spring (first 1776) (second 1783) (length 41.012390)) + (spring (first 1785) (second 1780) (length 43.046761)) + (spring (first 1778) (second 1773) (length 39.012840)) + (spring (first 1773) (second 1779) (length 54.451714)) + (spring (first 1779) (second 1777) (length 57.315262)) + (spring (first 1777) (second 1783) (length 56.568630)) + (spring (first 1776) (second 1782) (length 55.973286)) + (spring (first 1782) (second 1772) (length 60.141266)) + (spring (first 1771) (second 1777) (length 58.728096)) + (spring (first 1774) (second 1772) (length 58.000050)) + (spring (first 1772) (second 1778) (length 55.172756)) + (spring (first 1780) (second 1782) (length 57.384583)) + (spring (first 1779) (second 1785) (length 60.827984)) + (spring (first 1774) (second 1769) (length 37.013351)) + (spring (first 1764) (second 1771) (length 39.012741)) + (spring (first 1770) (second 1765) (length 38.999668)) + (spring (first 1768) (second 1775) (length 37.053913)) + (spring (first 1775) (second 1769) (length 51.623619)) + (spring (first 1771) (second 1765) (length 53.739784)) + (spring (first 1764) (second 1770) (length 55.865936)) + (spring (first 1771) (second 1769) (length 57.488976)) + (spring (first 1764) (second 1774) (length 57.315048)) + (spring (first 1774) (second 1768) (length 55.172256)) + (spring (first 1727) (second 1754) (length 50.040279)) + (spring (first 1757) (second 1735) (length 64.443916)) + (spring (first 1728) (second 1762) (length 62.201176)) + (spring (first 1762) (second 1736) (length 65.115479)) + (spring (first 1735) (second 1765) (length 60.803238)) + (spring (first 1765) (second 1743) (length 64.660706)) + (spring (first 1752) (second 1781) (length 48.166595)) + (spring (first 1778) (second 1751) (length 49.163303)) + (spring (first 1744) (second 1773) (length 49.040764)) + (spring (first 1743) (second 1770) (length 50.040039)) + (spring (first 1736) (second 1765) (length 48.166721)) + (spring (first 1728) (second 1757) (length 49.040890)) + (spring (first 1727) (second 1757) (length 62.801472)) + (spring (first 1754) (second 1728) (length 64.537056)) + (spring (first 1735) (second 1762) (length 49.163074)) + (spring (first 1736) (second 1770) (length 59.405296)) + (spring (first 1770) (second 1744) (length 64.536789)) + (spring (first 1744) (second 1778) (length 62.201229)) + (spring (first 1778) (second 1752) (length 65.115265)) + (spring (first 1781) (second 1751) (length 60.803509)) + (spring (first 1751) (second 1773) (length 64.444023)) + (spring (first 1773) (second 1743) (length 62.801300)) + (spring (first 1786) (second 1787) (length 38.012753)) + (spring (first 1787) (second 1788) (length 40.012672)) + (spring (first 1788) (second 1789) (length 39.013725)) + (spring (first 1789) (second 1786) (length 39.999706)) + (spring (first 1786) (second 1788) (length 55.154388)) + (spring (first 1787) (second 1789) (length 55.901890)) + (spring (first 1790) (second 1791) (length 38.012966)) + (spring (first 1791) (second 1792) (length 40.012669)) + (spring (first 1792) (second 1793) (length 39.012840)) + (spring (first 1793) (second 1790) (length 40.000000)) + (spring (first 1790) (second 1792) (length 55.154289)) + (spring (first 1791) (second 1793) (length 55.901745)) + (spring (first 1794) (second 1795) (length 38.012875)) + (spring (first 1795) (second 1796) (length 40.012241)) + (spring (first 1796) (second 1797) (length 39.012993)) + (spring (first 1797) (second 1794) (length 39.999882)) + (spring (first 1794) (second 1796) (length 55.154045)) + (spring (first 1795) (second 1797) (length 55.901634)) + (spring (first 1798) (second 1799) (length 38.013332)) + (spring (first 1799) (second 1800) (length 40.012424)) + (spring (first 1800) (second 1801) (length 39.012840)) + (spring (first 1801) (second 1798) (length 39.999874)) + (spring (first 1798) (second 1800) (length 55.154324)) + (spring (first 1799) (second 1801) (length 55.901699)) + (spring (first 1787) (second 1790) (length 43.000263)) + (spring (first 1793) (second 1798) (length 41.048813)) + (spring (first 1798) (second 1795) (length 44.045437)) + (spring (first 1795) (second 1788) (length 38.999859)) + (spring (first 1788) (second 1793) (length 41.999561)) + (spring (first 1792) (second 1799) (length 41.012146)) + (spring (first 1801) (second 1796) (length 43.046410)) + (spring (first 1794) (second 1789) (length 39.012966)) + (spring (first 1789) (second 1795) (length 54.452068)) + (spring (first 1795) (second 1793) (length 57.315090)) + (spring (first 1793) (second 1799) (length 56.568539)) + (spring (first 1792) (second 1798) (length 55.973362)) + (spring (first 1798) (second 1788) (length 60.140965)) + (spring (first 1787) (second 1793) (length 58.728268)) + (spring (first 1790) (second 1788) (length 57.999901)) + (spring (first 1788) (second 1794) (length 55.172638)) + (spring (first 1796) (second 1798) (length 57.384331)) + (spring (first 1795) (second 1801) (length 60.827637)) + (spring (first 1802) (second 1803) (length 38.012753)) + (spring (first 1803) (second 1804) (length 40.012608)) + (spring (first 1804) (second 1805) (length 39.013115)) + (spring (first 1805) (second 1802) (length 39.999947)) + (spring (first 1802) (second 1804) (length 55.154140)) + (spring (first 1803) (second 1805) (length 55.901848)) + (spring (first 1806) (second 1807) (length 38.013088)) + (spring (first 1807) (second 1808) (length 40.012730)) + (spring (first 1808) (second 1809) (length 39.012718)) + (spring (first 1809) (second 1806) (length 40.000301)) + (spring (first 1806) (second 1808) (length 55.154503)) + (spring (first 1807) (second 1809) (length 55.901791)) + (spring (first 1810) (second 1811) (length 38.013363)) + (spring (first 1811) (second 1812) (length 40.012360)) + (spring (first 1812) (second 1813) (length 39.012627)) + (spring (first 1813) (second 1810) (length 40.000122)) + (spring (first 1810) (second 1812) (length 55.154140)) + (spring (first 1811) (second 1813) (length 55.901890)) + (spring (first 1814) (second 1815) (length 38.012966)) + (spring (first 1815) (second 1816) (length 40.012669)) + (spring (first 1816) (second 1817) (length 39.013084)) + (spring (first 1817) (second 1814) (length 39.999939)) + (spring (first 1814) (second 1816) (length 55.154411)) + (spring (first 1815) (second 1817) (length 55.901745)) + (spring (first 1803) (second 1806) (length 43.000259)) + (spring (first 1809) (second 1814) (length 41.048687)) + (spring (first 1814) (second 1811) (length 44.045185)) + (spring (first 1811) (second 1804) (length 39.000027)) + (spring (first 1804) (second 1809) (length 42.000294)) + (spring (first 1808) (second 1815) (length 41.012024)) + (spring (first 1817) (second 1812) (length 43.046642)) + (spring (first 1810) (second 1805) (length 39.012779)) + (spring (first 1805) (second 1811) (length 54.452282)) + (spring (first 1811) (second 1809) (length 57.314999)) + (spring (first 1809) (second 1815) (length 56.568024)) + (spring (first 1808) (second 1814) (length 55.973362)) + (spring (first 1814) (second 1804) (length 60.141445)) + (spring (first 1803) (second 1809) (length 58.728527)) + (spring (first 1806) (second 1804) (length 58.000343)) + (spring (first 1804) (second 1810) (length 55.172337)) + (spring (first 1812) (second 1814) (length 57.384861)) + (spring (first 1811) (second 1817) (length 60.827248)) + (spring (first 1806) (second 1801) (length 37.013367)) + (spring (first 1796) (second 1803) (length 39.013050)) + (spring (first 1802) (second 1797) (length 39.000084)) + (spring (first 1800) (second 1807) (length 37.053883)) + (spring (first 1807) (second 1801) (length 51.623577)) + (spring (first 1803) (second 1797) (length 53.740101)) + (spring (first 1796) (second 1802) (length 55.865986)) + (spring (first 1803) (second 1801) (length 57.489281)) + (spring (first 1796) (second 1806) (length 57.314960)) + (spring (first 1806) (second 1800) (length 55.172298)) + (spring (first 1818) (second 1819) (length 38.013088)) + (spring (first 1819) (second 1820) (length 40.012486)) + (spring (first 1820) (second 1821) (length 39.013206)) + (spring (first 1821) (second 1818) (length 40.000000)) + (spring (first 1818) (second 1820) (length 55.154629)) + (spring (first 1819) (second 1821) (length 55.901611)) + (spring (first 1822) (second 1823) (length 38.013577)) + (spring (first 1823) (second 1824) (length 40.012424)) + (spring (first 1824) (second 1825) (length 39.012840)) + (spring (first 1825) (second 1822) (length 39.999989)) + (spring (first 1822) (second 1824) (length 55.154800)) + (spring (first 1823) (second 1825) (length 55.901482)) + (spring (first 1826) (second 1827) (length 38.013210)) + (spring (first 1827) (second 1828) (length 40.012486)) + (spring (first 1828) (second 1829) (length 39.012718)) + (spring (first 1829) (second 1826) (length 40.000237)) + (spring (first 1826) (second 1828) (length 55.154457)) + (spring (first 1827) (second 1829) (length 55.901703)) + (spring (first 1830) (second 1831) (length 38.013821)) + (spring (first 1831) (second 1832) (length 40.012424)) + (spring (first 1832) (second 1833) (length 39.013329)) + (spring (first 1833) (second 1830) (length 39.999989)) + (spring (first 1830) (second 1832) (length 55.154964)) + (spring (first 1831) (second 1833) (length 55.901825)) + (spring (first 1819) (second 1822) (length 42.999466)) + (spring (first 1825) (second 1830) (length 41.048679)) + (spring (first 1830) (second 1827) (length 44.044762)) + (spring (first 1827) (second 1820) (length 38.999794)) + (spring (first 1820) (second 1825) (length 41.999619)) + (spring (first 1824) (second 1831) (length 41.012085)) + (spring (first 1833) (second 1828) (length 43.046093)) + (spring (first 1826) (second 1821) (length 39.012718)) + (spring (first 1821) (second 1827) (length 54.451786)) + (spring (first 1827) (second 1825) (length 57.314911)) + (spring (first 1825) (second 1831) (length 56.568581)) + (spring (first 1824) (second 1830) (length 55.973511)) + (spring (first 1830) (second 1820) (length 60.140572)) + (spring (first 1819) (second 1825) (length 58.728008)) + (spring (first 1822) (second 1820) (length 57.999496)) + (spring (first 1820) (second 1826) (length 55.172569)) + (spring (first 1828) (second 1830) (length 57.384109)) + (spring (first 1827) (second 1833) (length 60.827377)) + (spring (first 1834) (second 1835) (length 38.013210)) + (spring (first 1835) (second 1836) (length 40.012608)) + (spring (first 1836) (second 1837) (length 39.013206)) + (spring (first 1837) (second 1834) (length 40.000179)) + (spring (first 1834) (second 1836) (length 55.154713)) + (spring (first 1835) (second 1837) (length 55.901829)) + (spring (first 1838) (second 1839) (length 38.012844)) + (spring (first 1839) (second 1840) (length 40.012486)) + (spring (first 1840) (second 1841) (length 39.012840)) + (spring (first 1841) (second 1838) (length 40.000065)) + (spring (first 1838) (second 1840) (length 55.154118)) + (spring (first 1839) (second 1841) (length 55.901741)) + (spring (first 1842) (second 1843) (length 38.012966)) + (spring (first 1843) (second 1844) (length 40.012547)) + (spring (first 1844) (second 1845) (length 39.012718)) + (spring (first 1845) (second 1842) (length 40.000114)) + (spring (first 1842) (second 1844) (length 55.154457)) + (spring (first 1843) (second 1845) (length 55.901489)) + (spring (first 1846) (second 1847) (length 38.013210)) + (spring (first 1847) (second 1848) (length 40.012486)) + (spring (first 1848) (second 1849) (length 39.012596)) + (spring (first 1849) (second 1846) (length 39.999928)) + (spring (first 1846) (second 1848) (length 55.154411)) + (spring (first 1847) (second 1849) (length 55.901443)) + (spring (first 1835) (second 1838) (length 43.000202)) + (spring (first 1841) (second 1846) (length 41.048878)) + (spring (first 1846) (second 1843) (length 44.045494)) + (spring (first 1843) (second 1836) (length 39.000042)) + (spring (first 1836) (second 1841) (length 41.999500)) + (spring (first 1840) (second 1847) (length 41.012329)) + (spring (first 1849) (second 1844) (length 43.046577)) + (spring (first 1842) (second 1837) (length 39.012840)) + (spring (first 1837) (second 1843) (length 54.451660)) + (spring (first 1843) (second 1841) (length 57.315083)) + (spring (first 1841) (second 1847) (length 56.568626)) + (spring (first 1840) (second 1846) (length 55.973370)) + (spring (first 1846) (second 1836) (length 60.141136)) + (spring (first 1835) (second 1841) (length 58.728088)) + (spring (first 1838) (second 1836) (length 57.999996)) + (spring (first 1836) (second 1842) (length 55.172787)) + (spring (first 1844) (second 1846) (length 57.384483)) + (spring (first 1843) (second 1849) (length 60.827896)) + (spring (first 1838) (second 1833) (length 37.013535)) + (spring (first 1828) (second 1835) (length 39.012863)) + (spring (first 1834) (second 1829) (length 38.999790)) + (spring (first 1832) (second 1839) (length 37.054092)) + (spring (first 1839) (second 1833) (length 51.623837)) + (spring (first 1835) (second 1829) (length 53.739861)) + (spring (first 1828) (second 1834) (length 55.866013)) + (spring (first 1835) (second 1833) (length 57.488949)) + (spring (first 1828) (second 1838) (length 57.315002)) + (spring (first 1838) (second 1832) (length 55.172470)) + (spring (first 1791) (second 1818) (length 50.040207)) + (spring (first 1821) (second 1799) (length 64.443863)) + (spring (first 1792) (second 1826) (length 62.201115)) + (spring (first 1826) (second 1800) (length 65.115379)) + (spring (first 1799) (second 1829) (length 60.803177)) + (spring (first 1829) (second 1807) (length 64.660683)) + (spring (first 1816) (second 1845) (length 48.166519)) + (spring (first 1842) (second 1815) (length 49.163219)) + (spring (first 1808) (second 1837) (length 49.040688)) + (spring (first 1807) (second 1834) (length 50.039963)) + (spring (first 1800) (second 1829) (length 48.166641)) + (spring (first 1792) (second 1821) (length 49.040813)) + (spring (first 1791) (second 1821) (length 62.801373)) + (spring (first 1818) (second 1792) (length 64.537003)) + (spring (first 1799) (second 1826) (length 49.162998)) + (spring (first 1800) (second 1834) (length 59.405346)) + (spring (first 1834) (second 1808) (length 64.536850)) + (spring (first 1808) (second 1842) (length 62.201168)) + (spring (first 1842) (second 1816) (length 65.115211)) + (spring (first 1845) (second 1815) (length 60.803520)) + (spring (first 1815) (second 1837) (length 64.443886)) + (spring (first 1837) (second 1807) (length 62.801392)) + (spring (first 1850) (second 1851) (length 38.012753)) + (spring (first 1851) (second 1852) (length 40.012611)) + (spring (first 1852) (second 1853) (length 39.013725)) + (spring (first 1853) (second 1850) (length 39.999767)) + (spring (first 1850) (second 1852) (length 55.154388)) + (spring (first 1851) (second 1853) (length 55.901890)) + (spring (first 1854) (second 1855) (length 38.012966)) + (spring (first 1855) (second 1856) (length 40.012730)) + (spring (first 1856) (second 1857) (length 39.012840)) + (spring (first 1857) (second 1854) (length 40.000000)) + (spring (first 1854) (second 1856) (length 55.154289)) + (spring (first 1855) (second 1857) (length 55.901791)) + (spring (first 1858) (second 1859) (length 38.012875)) + (spring (first 1859) (second 1860) (length 40.012241)) + (spring (first 1860) (second 1861) (length 39.012993)) + (spring (first 1861) (second 1858) (length 39.999882)) + (spring (first 1858) (second 1860) (length 55.154045)) + (spring (first 1859) (second 1861) (length 55.901634)) + (spring (first 1862) (second 1863) (length 38.013332)) + (spring (first 1863) (second 1864) (length 40.012486)) + (spring (first 1864) (second 1865) (length 39.012840)) + (spring (first 1865) (second 1862) (length 39.999874)) + (spring (first 1862) (second 1864) (length 55.154369)) + (spring (first 1863) (second 1865) (length 55.901699)) + (spring (first 1851) (second 1854) (length 43.000263)) + (spring (first 1857) (second 1862) (length 41.048813)) + (spring (first 1862) (second 1859) (length 44.045437)) + (spring (first 1859) (second 1852) (length 38.999920)) + (spring (first 1852) (second 1857) (length 41.999561)) + (spring (first 1856) (second 1863) (length 41.012146)) + (spring (first 1865) (second 1860) (length 43.046410)) + (spring (first 1858) (second 1853) (length 39.012966)) + (spring (first 1853) (second 1859) (length 54.452068)) + (spring (first 1859) (second 1857) (length 57.315090)) + (spring (first 1857) (second 1863) (length 56.568539)) + (spring (first 1856) (second 1862) (length 55.973362)) + (spring (first 1862) (second 1852) (length 60.141006)) + (spring (first 1851) (second 1857) (length 58.728268)) + (spring (first 1854) (second 1852) (length 57.999859)) + (spring (first 1852) (second 1858) (length 55.172680)) + (spring (first 1860) (second 1862) (length 57.384331)) + (spring (first 1859) (second 1865) (length 60.827637)) + (spring (first 1866) (second 1867) (length 38.012753)) + (spring (first 1867) (second 1868) (length 40.012608)) + (spring (first 1868) (second 1869) (length 39.013115)) + (spring (first 1869) (second 1866) (length 40.000008)) + (spring (first 1866) (second 1868) (length 55.154140)) + (spring (first 1867) (second 1869) (length 55.901894)) + (spring (first 1870) (second 1871) (length 38.013088)) + (spring (first 1871) (second 1872) (length 40.012730)) + (spring (first 1872) (second 1873) (length 39.012718)) + (spring (first 1873) (second 1870) (length 40.000240)) + (spring (first 1870) (second 1872) (length 55.154461)) + (spring (first 1871) (second 1873) (length 55.901791)) + (spring (first 1874) (second 1875) (length 38.013363)) + (spring (first 1875) (second 1876) (length 40.012299)) + (spring (first 1876) (second 1877) (length 39.012627)) + (spring (first 1877) (second 1874) (length 40.000061)) + (spring (first 1874) (second 1876) (length 55.154095)) + (spring (first 1875) (second 1877) (length 55.901844)) + (spring (first 1878) (second 1879) (length 38.012966)) + (spring (first 1879) (second 1880) (length 40.012424)) + (spring (first 1880) (second 1881) (length 39.013084)) + (spring (first 1881) (second 1878) (length 39.999695)) + (spring (first 1878) (second 1880) (length 55.154236)) + (spring (first 1879) (second 1881) (length 55.901569)) + (spring (first 1867) (second 1870) (length 43.000259)) + (spring (first 1873) (second 1878) (length 41.049053)) + (spring (first 1878) (second 1875) (length 44.045193)) + (spring (first 1875) (second 1868) (length 39.000271)) + (spring (first 1868) (second 1873) (length 42.000294)) + (spring (first 1872) (second 1879) (length 41.012390)) + (spring (first 1881) (second 1876) (length 43.046638)) + (spring (first 1874) (second 1869) (length 39.012962)) + (spring (first 1869) (second 1875) (length 54.452412)) + (spring (first 1875) (second 1873) (length 57.315159)) + (spring (first 1873) (second 1879) (length 56.568287)) + (spring (first 1872) (second 1878) (length 55.973633)) + (spring (first 1878) (second 1868) (length 60.141701)) + (spring (first 1867) (second 1873) (length 58.728527)) + (spring (first 1870) (second 1868) (length 58.000305)) + (spring (first 1868) (second 1874) (length 55.172508)) + (spring (first 1876) (second 1878) (length 57.384743)) + (spring (first 1875) (second 1881) (length 60.827164)) + (spring (first 1870) (second 1865) (length 37.013245)) + (spring (first 1860) (second 1867) (length 39.012867)) + (spring (first 1866) (second 1861) (length 38.999901)) + (spring (first 1864) (second 1871) (length 37.053642)) + (spring (first 1871) (second 1865) (length 51.623447)) + (spring (first 1867) (second 1861) (length 53.739967)) + (spring (first 1860) (second 1866) (length 55.865856)) + (spring (first 1867) (second 1865) (length 57.489166)) + (spring (first 1860) (second 1870) (length 57.314873)) + (spring (first 1870) (second 1864) (length 55.172176)) + (spring (first 1882) (second 1883) (length 38.013027)) + (spring (first 1883) (second 1884) (length 40.012486)) + (spring (first 1884) (second 1885) (length 39.013145)) + (spring (first 1885) (second 1882) (length 40.000000)) + (spring (first 1882) (second 1884) (length 55.154587)) + (spring (first 1883) (second 1885) (length 55.901569)) + (spring (first 1886) (second 1887) (length 38.013577)) + (spring (first 1887) (second 1888) (length 40.012363)) + (spring (first 1888) (second 1889) (length 39.012779)) + (spring (first 1889) (second 1886) (length 39.999985)) + (spring (first 1886) (second 1888) (length 55.154800)) + (spring (first 1887) (second 1889) (length 55.901394)) + (spring (first 1890) (second 1891) (length 38.013149)) + (spring (first 1891) (second 1892) (length 40.012486)) + (spring (first 1892) (second 1893) (length 39.012657)) + (spring (first 1893) (second 1890) (length 40.000237)) + (spring (first 1890) (second 1892) (length 55.154415)) + (spring (first 1891) (second 1893) (length 55.901661)) + (spring (first 1894) (second 1895) (length 38.013821)) + (spring (first 1895) (second 1896) (length 40.012486)) + (spring (first 1896) (second 1897) (length 39.013329)) + (spring (first 1897) (second 1894) (length 40.000111)) + (spring (first 1894) (second 1896) (length 55.155052)) + (spring (first 1895) (second 1897) (length 55.901867)) + (spring (first 1883) (second 1886) (length 42.999462)) + (spring (first 1889) (second 1894) (length 41.048676)) + (spring (first 1894) (second 1891) (length 44.044758)) + (spring (first 1891) (second 1884) (length 38.999794)) + (spring (first 1884) (second 1889) (length 41.999680)) + (spring (first 1888) (second 1895) (length 41.012146)) + (spring (first 1897) (second 1892) (length 43.046097)) + (spring (first 1890) (second 1885) (length 39.012718)) + (spring (first 1885) (second 1891) (length 54.451744)) + (spring (first 1891) (second 1889) (length 57.314999)) + (spring (first 1889) (second 1895) (length 56.568584)) + (spring (first 1888) (second 1894) (length 55.973511)) + (spring (first 1894) (second 1884) (length 60.140530)) + (spring (first 1883) (second 1889) (length 58.728008)) + (spring (first 1886) (second 1884) (length 57.999538)) + (spring (first 1884) (second 1890) (length 55.172527)) + (spring (first 1892) (second 1894) (length 57.384148)) + (spring (first 1891) (second 1897) (length 60.827423)) + (spring (first 1898) (second 1899) (length 38.013149)) + (spring (first 1899) (second 1900) (length 40.012608)) + (spring (first 1900) (second 1901) (length 39.013145)) + (spring (first 1901) (second 1898) (length 40.000118)) + (spring (first 1898) (second 1900) (length 55.154671)) + (spring (first 1899) (second 1901) (length 55.901745)) + (spring (first 1902) (second 1903) (length 38.012844)) + (spring (first 1903) (second 1904) (length 40.012486)) + (spring (first 1904) (second 1905) (length 39.012779)) + (spring (first 1905) (second 1902) (length 40.000004)) + (spring (first 1902) (second 1904) (length 55.154076)) + (spring (first 1903) (second 1905) (length 55.901699)) + (spring (first 1906) (second 1907) (length 38.012966)) + (spring (first 1907) (second 1908) (length 40.012424)) + (spring (first 1908) (second 1909) (length 39.012718)) + (spring (first 1909) (second 1906) (length 40.000053)) + (spring (first 1906) (second 1908) (length 55.154411)) + (spring (first 1907) (second 1909) (length 55.901402)) + (spring (first 1910) (second 1911) (length 38.013149)) + (spring (first 1911) (second 1912) (length 40.012302)) + (spring (first 1912) (second 1913) (length 39.012535)) + (spring (first 1913) (second 1910) (length 39.999805)) + (spring (first 1910) (second 1912) (length 55.154282)) + (spring (first 1911) (second 1913) (length 55.901268)) + (spring (first 1899) (second 1902) (length 43.000263)) + (spring (first 1905) (second 1910) (length 41.049183)) + (spring (first 1910) (second 1907) (length 44.045494)) + (spring (first 1907) (second 1900) (length 39.000286)) + (spring (first 1900) (second 1905) (length 41.999561)) + (spring (first 1904) (second 1911) (length 41.012634)) + (spring (first 1913) (second 1908) (length 43.046577)) + (spring (first 1906) (second 1901) (length 39.013084)) + (spring (first 1901) (second 1907) (length 54.451878)) + (spring (first 1907) (second 1905) (length 57.315289)) + (spring (first 1905) (second 1911) (length 56.568848)) + (spring (first 1904) (second 1910) (length 55.973507)) + (spring (first 1910) (second 1900) (length 60.141350)) + (spring (first 1899) (second 1905) (length 58.728092)) + (spring (first 1902) (second 1900) (length 58.000042)) + (spring (first 1900) (second 1906) (length 55.172874)) + (spring (first 1908) (second 1910) (length 57.384403)) + (spring (first 1907) (second 1913) (length 60.827812)) + (spring (first 1902) (second 1897) (length 37.013348)) + (spring (first 1892) (second 1899) (length 39.012741)) + (spring (first 1898) (second 1893) (length 38.999668)) + (spring (first 1896) (second 1903) (length 37.053905)) + (spring (first 1903) (second 1897) (length 51.623749)) + (spring (first 1899) (second 1893) (length 53.739731)) + (spring (first 1892) (second 1898) (length 55.865883)) + (spring (first 1899) (second 1897) (length 57.488831)) + (spring (first 1892) (second 1902) (length 57.314960)) + (spring (first 1902) (second 1896) (length 55.172302)) + (spring (first 1855) (second 1882) (length 50.040203)) + (spring (first 1885) (second 1863) (length 64.443863)) + (spring (first 1856) (second 1890) (length 62.201115)) + (spring (first 1890) (second 1864) (length 65.115417)) + (spring (first 1863) (second 1893) (length 60.803177)) + (spring (first 1893) (second 1871) (length 64.660568)) + (spring (first 1880) (second 1909) (length 48.166515)) + (spring (first 1906) (second 1879) (length 49.163227)) + (spring (first 1872) (second 1901) (length 49.040688)) + (spring (first 1871) (second 1898) (length 50.039959)) + (spring (first 1864) (second 1893) (length 48.166645)) + (spring (first 1856) (second 1885) (length 49.040813)) + (spring (first 1855) (second 1885) (length 62.801411)) + (spring (first 1882) (second 1856) (length 64.537003)) + (spring (first 1863) (second 1890) (length 49.162998)) + (spring (first 1864) (second 1898) (length 59.405235)) + (spring (first 1898) (second 1872) (length 64.536812)) + (spring (first 1872) (second 1906) (length 62.201317)) + (spring (first 1906) (second 1880) (length 65.115128)) + (spring (first 1909) (second 1879) (length 60.803410)) + (spring (first 1879) (second 1901) (length 64.444122)) + (spring (first 1901) (second 1871) (length 62.801392)) + (spring (first 1695) (second 1877) (length 63.030163)) + (spring (first 1784) (second 1786) (length 66.146332)) + (spring (first 1695) (second 1784) (length 47.484505)) + (spring (first 1784) (second 1694) (length 61.997841)) + (spring (first 1694) (second 1785) (length 47.481274)) + (spring (first 1785) (second 1691) (length 63.819710)) + (spring (first 1691) (second 1780) (length 49.481331)) + (spring (first 1690) (second 1780) (length 62.970901)) + (spring (first 1781) (second 1690) (length 49.498360)) + (spring (first 1663) (second 1781) (length 70.827271)) + (spring (first 1752) (second 1662) (length 61.997669)) + (spring (first 1662) (second 1753) (length 47.481384)) + (spring (first 1659) (second 1748) (length 49.481327)) + (spring (first 1658) (second 1749) (length 49.498791)) + (spring (first 1658) (second 1748) (length 62.970867)) + (spring (first 1749) (second 1659) (length 62.443207)) + (spring (first 1748) (second 1662) (length 65.787552)) + (spring (first 1659) (second 1753) (length 63.819416)) + (spring (first 1753) (second 1663) (length 60.262127)) + (spring (first 1663) (second 1752) (length 47.484264)) + (spring (first 1752) (second 1690) (length 67.114761)) + (spring (first 1781) (second 1691) (length 62.443127)) + (spring (first 1780) (second 1694) (length 65.786858)) + (spring (first 1785) (second 1695) (length 60.262039)) + (spring (first 1786) (second 1876) (length 62.970730)) + (spring (first 1877) (second 1787) (length 62.443069)) + (spring (first 1787) (second 1881) (length 63.819328)) + (spring (first 1881) (second 1791) (length 60.262062)) + (spring (first 1791) (second 1909) (length 70.827087)) + (spring (first 1819) (second 1908) (length 49.481148)) + (spring (first 1909) (second 1818) (length 49.498177)) + (spring (first 1822) (second 1913) (length 47.481091)) + (spring (first 1823) (second 1912) (length 47.484322)) + (spring (first 1912) (second 1822) (length 61.997742)) + (spring (first 1913) (second 1823) (length 60.261978)) + (spring (first 1822) (second 1908) (length 65.786598)) + (spring (first 1819) (second 1913) (length 63.819450)) + (spring (first 1908) (second 1818) (length 62.970749)) + (spring (first 1909) (second 1819) (length 62.442974)) + (spring (first 1818) (second 1880) (length 67.114624)) + (spring (first 1880) (second 1791) (length 47.484142)) + (spring (first 1790) (second 1881) (length 47.481262)) + (spring (first 1880) (second 1790) (length 61.997608)) + (spring (first 1790) (second 1876) (length 65.787407)) + (spring (first 1787) (second 1876) (length 49.481144)) + (spring (first 1877) (second 1786) (length 49.498608)) + (spring (first 1720) (second 1813) (length 41.674278)) + (spring (first 1810) (second 1719) (length 42.674320)) + (spring (first 1719) (second 1805) (length 56.553173)) + (spring (first 1805) (second 1711) (length 61.118408)) + (spring (first 1711) (second 1797) (length 56.744957)) + (spring (first 1703) (second 1797) (length 59.009304)) + (spring (first 1703) (second 1789) (length 56.552826)) + (spring (first 1789) (second 1695) (length 61.118237)) + (spring (first 1784) (second 1877) (length 41.674274)) + (spring (first 1877) (second 1783) (length 59.009380)) + (spring (first 1783) (second 1869) (length 56.553120)) + (spring (first 1869) (second 1775) (length 61.118397)) + (spring (first 1775) (second 1861) (length 56.744869)) + (spring (first 1861) (second 1767) (length 59.009167)) + (spring (first 1767) (second 1858) (length 42.674313)) + (spring (first 1760) (second 1853) (length 42.756241)) + (spring (first 1759) (second 1850) (length 43.755024)) + (spring (first 1850) (second 1760) (length 56.631618)) + (spring (first 1759) (second 1853) (length 61.118137)) + (spring (first 1853) (second 1767) (length 56.552937)) + (spring (first 1760) (second 1858) (length 60.423229)) + (spring (first 1858) (second 1768) (length 57.233974)) + (spring (first 1768) (second 1861) (length 41.674019)) + (spring (first 1866) (second 1775) (length 43.755024)) + (spring (first 1866) (second 1768) (length 57.595379)) + (spring (first 1776) (second 1866) (length 56.631714)) + (spring (first 1776) (second 1869) (length 42.756504)) + (spring (first 1776) (second 1874) (length 60.423405)) + (spring (first 1874) (second 1784) (length 57.233982)) + (spring (first 1783) (second 1874) (length 42.674313)) + (spring (first 1696) (second 1786) (length 56.631516)) + (spring (first 1696) (second 1789) (length 42.756264)) + (spring (first 1704) (second 1797) (length 41.674038)) + (spring (first 1704) (second 1794) (length 57.233906)) + (spring (first 1794) (second 1703) (length 42.674335)) + (spring (first 1696) (second 1794) (length 60.423328)) + (spring (first 1802) (second 1711) (length 43.755047)) + (spring (first 1704) (second 1802) (length 57.595604)) + (spring (first 1802) (second 1712) (length 56.631725)) + (spring (first 1712) (second 1805) (length 42.756512)) + (spring (first 1712) (second 1810) (length 60.423241)) + (spring (first 1810) (second 1720) (length 57.234200)) + (spring (first 1719) (second 1813) (length 59.009262)) + (spring (first 1695) (second 1786) (length 43.755054)) + (spring (first 1916) (second 1917) (length 38.012783)) + (spring (first 1917) (second 1918) (length 40.012672)) + (spring (first 1918) (second 1919) (length 39.013634)) + (spring (first 1919) (second 1916) (length 39.999706)) + (spring (first 1916) (second 1918) (length 55.154411)) + (spring (first 1917) (second 1919) (length 55.901825)) + (spring (first 1920) (second 1921) (length 38.012722)) + (spring (first 1921) (second 1922) (length 40.012669)) + (spring (first 1922) (second 1923) (length 39.012596)) + (spring (first 1923) (second 1920) (length 40.000000)) + (spring (first 1920) (second 1922) (length 55.154118)) + (spring (first 1921) (second 1923) (length 55.901577)) + (spring (first 1924) (second 1925) (length 38.012783)) + (spring (first 1925) (second 1926) (length 40.012241)) + (spring (first 1926) (second 1927) (length 39.012901)) + (spring (first 1927) (second 1924) (length 39.999882)) + (spring (first 1924) (second 1926) (length 55.153896)) + (spring (first 1925) (second 1927) (length 55.901657)) + (spring (first 1928) (second 1929) (length 38.013210)) + (spring (first 1929) (second 1930) (length 40.012486)) + (spring (first 1930) (second 1931) (length 39.012596)) + (spring (first 1931) (second 1928) (length 39.999935)) + (spring (first 1928) (second 1930) (length 55.154202)) + (spring (first 1929) (second 1931) (length 55.901657)) + (spring (first 1917) (second 1920) (length 43.000263)) + (spring (first 1923) (second 1928) (length 41.048813)) + (spring (first 1928) (second 1925) (length 44.045437)) + (spring (first 1925) (second 1918) (length 38.999859)) + (spring (first 1918) (second 1923) (length 41.999561)) + (spring (first 1922) (second 1929) (length 41.012146)) + (spring (first 1931) (second 1926) (length 43.046535)) + (spring (first 1924) (second 1919) (length 39.012966)) + (spring (first 1919) (second 1925) (length 54.452003)) + (spring (first 1925) (second 1923) (length 57.315090)) + (spring (first 1923) (second 1929) (length 56.568455)) + (spring (first 1922) (second 1928) (length 55.973198)) + (spring (first 1928) (second 1918) (length 60.140965)) + (spring (first 1917) (second 1923) (length 58.728268)) + (spring (first 1920) (second 1918) (length 57.999901)) + (spring (first 1918) (second 1924) (length 55.172573)) + (spring (first 1926) (second 1928) (length 57.384422)) + (spring (first 1925) (second 1931) (length 60.827682)) + (spring (first 1932) (second 1933) (length 38.012783)) + (spring (first 1933) (second 1934) (length 40.012547)) + (spring (first 1934) (second 1935) (length 39.013145)) + (spring (first 1935) (second 1932) (length 39.999886)) + (spring (first 1932) (second 1934) (length 55.154118)) + (spring (first 1933) (second 1935) (length 55.901825)) + (spring (first 1936) (second 1937) (length 38.012966)) + (spring (first 1937) (second 1938) (length 40.012669)) + (spring (first 1938) (second 1939) (length 39.012596)) + (spring (first 1939) (second 1936) (length 40.000240)) + (spring (first 1936) (second 1938) (length 55.154377)) + (spring (first 1937) (second 1939) (length 55.901665)) + (spring (first 1940) (second 1941) (length 38.013271)) + (spring (first 1941) (second 1942) (length 40.012363)) + (spring (first 1942) (second 1943) (length 39.012657)) + (spring (first 1943) (second 1940) (length 40.000122)) + (spring (first 1940) (second 1942) (length 55.154118)) + (spring (first 1941) (second 1943) (length 55.901871)) + (spring (first 1944) (second 1945) (length 38.012966)) + (spring (first 1945) (second 1946) (length 40.012730)) + (spring (first 1946) (second 1947) (length 39.013084)) + (spring (first 1947) (second 1944) (length 40.000000)) + (spring (first 1944) (second 1946) (length 55.154457)) + (spring (first 1945) (second 1947) (length 55.901791)) + (spring (first 1933) (second 1936) (length 43.000259)) + (spring (first 1939) (second 1944) (length 41.048683)) + (spring (first 1944) (second 1941) (length 44.045185)) + (spring (first 1941) (second 1934) (length 39.000027)) + (spring (first 1934) (second 1939) (length 42.000294)) + (spring (first 1938) (second 1945) (length 41.012024)) + (spring (first 1947) (second 1942) (length 43.046524)) + (spring (first 1940) (second 1935) (length 39.012840)) + (spring (first 1935) (second 1941) (length 54.452217)) + (spring (first 1941) (second 1939) (length 57.315090)) + (spring (first 1939) (second 1945) (length 56.567940)) + (spring (first 1938) (second 1944) (length 55.973362)) + (spring (first 1944) (second 1934) (length 60.141357)) + (spring (first 1933) (second 1939) (length 58.728485)) + (spring (first 1936) (second 1934) (length 58.000305)) + (spring (first 1934) (second 1940) (length 55.172401)) + (spring (first 1942) (second 1944) (length 57.384769)) + (spring (first 1941) (second 1947) (length 60.827293)) + (spring (first 1936) (second 1931) (length 37.013489)) + (spring (first 1926) (second 1933) (length 39.013229)) + (spring (first 1932) (second 1927) (length 39.000267)) + (spring (first 1930) (second 1937) (length 37.053997)) + (spring (first 1937) (second 1931) (length 51.623577)) + (spring (first 1933) (second 1927) (length 53.740253)) + (spring (first 1926) (second 1932) (length 55.866051)) + (spring (first 1933) (second 1931) (length 57.489357)) + (spring (first 1926) (second 1936) (length 57.315174)) + (spring (first 1936) (second 1930) (length 55.172199)) + (spring (first 1948) (second 1949) (length 38.013454)) + (spring (first 1949) (second 1950) (length 40.012486)) + (spring (first 1950) (second 1951) (length 39.013573)) + (spring (first 1951) (second 1948) (length 40.000000)) + (spring (first 1948) (second 1950) (length 55.154884)) + (spring (first 1949) (second 1951) (length 55.901863)) + (spring (first 1952) (second 1953) (length 38.013119)) + (spring (first 1953) (second 1954) (length 40.012424)) + (spring (first 1954) (second 1955) (length 39.012260)) + (spring (first 1955) (second 1952) (length 39.999985)) + (spring (first 1952) (second 1954) (length 55.154480)) + (spring (first 1953) (second 1955) (length 55.901077)) + (spring (first 1956) (second 1957) (length 38.013454)) + (spring (first 1957) (second 1958) (length 40.012547)) + (spring (first 1958) (second 1959) (length 39.013084)) + (spring (first 1959) (second 1956) (length 40.000240)) + (spring (first 1956) (second 1958) (length 55.154671)) + (spring (first 1957) (second 1959) (length 55.901958)) + (spring (first 1960) (second 1961) (length 38.013119)) + (spring (first 1961) (second 1962) (length 40.012486)) + (spring (first 1962) (second 1963) (length 39.012749)) + (spring (first 1963) (second 1960) (length 40.000050)) + (spring (first 1960) (second 1962) (length 55.154606)) + (spring (first 1961) (second 1963) (length 55.901379)) + (spring (first 1949) (second 1952) (length 42.999527)) + (spring (first 1955) (second 1960) (length 41.048679)) + (spring (first 1960) (second 1957) (length 44.044945)) + (spring (first 1957) (second 1950) (length 38.999794)) + (spring (first 1950) (second 1955) (length 41.999802)) + (spring (first 1954) (second 1961) (length 41.012085)) + (spring (first 1963) (second 1958) (length 43.046276)) + (spring (first 1956) (second 1951) (length 39.012718)) + (spring (first 1951) (second 1957) (length 54.452045)) + (spring (first 1957) (second 1955) (length 57.315048)) + (spring (first 1955) (second 1961) (length 56.568096)) + (spring (first 1954) (second 1960) (length 55.973122)) + (spring (first 1960) (second 1950) (length 60.140705)) + (spring (first 1949) (second 1955) (length 58.728138)) + (spring (first 1952) (second 1950) (length 57.999542)) + (spring (first 1950) (second 1956) (length 55.172741)) + (spring (first 1958) (second 1960) (length 57.384289)) + (spring (first 1957) (second 1963) (length 60.827553)) + (spring (first 1964) (second 1965) (length 38.013454)) + (spring (first 1965) (second 1966) (length 40.012547)) + (spring (first 1966) (second 1967) (length 39.013573)) + (spring (first 1967) (second 1964) (length 40.000183)) + (spring (first 1964) (second 1966) (length 55.154884)) + (spring (first 1965) (second 1967) (length 55.902039)) + (spring (first 1968) (second 1969) (length 38.012386)) + (spring (first 1969) (second 1970) (length 40.012486)) + (spring (first 1970) (second 1971) (length 39.012260)) + (spring (first 1971) (second 1968) (length 40.000065)) + (spring (first 1968) (second 1970) (length 55.153717)) + (spring (first 1969) (second 1971) (length 55.901424)) + (spring (first 1972) (second 1973) (length 38.013210)) + (spring (first 1973) (second 1974) (length 40.012486)) + (spring (first 1974) (second 1975) (length 39.013084)) + (spring (first 1975) (second 1972) (length 40.000057)) + (spring (first 1972) (second 1974) (length 55.154583)) + (spring (first 1973) (second 1975) (length 55.901703)) + (spring (first 1976) (second 1977) (length 38.012630)) + (spring (first 1977) (second 1978) (length 40.012486)) + (spring (first 1978) (second 1979) (length 39.012016)) + (spring (first 1979) (second 1976) (length 39.999989)) + (spring (first 1976) (second 1978) (length 55.154011)) + (spring (first 1977) (second 1979) (length 55.901085)) + (spring (first 1965) (second 1968) (length 43.000259)) + (spring (first 1971) (second 1976) (length 41.048882)) + (spring (first 1976) (second 1973) (length 44.045673)) + (spring (first 1973) (second 1966) (length 39.000103)) + (spring (first 1966) (second 1971) (length 41.999561)) + (spring (first 1970) (second 1977) (length 41.012329)) + (spring (first 1979) (second 1974) (length 43.046764)) + (spring (first 1972) (second 1967) (length 39.012901)) + (spring (first 1967) (second 1973) (length 54.451962)) + (spring (first 1973) (second 1971) (length 57.315170)) + (spring (first 1971) (second 1977) (length 56.568310)) + (spring (first 1970) (second 1976) (length 55.972897)) + (spring (first 1976) (second 1966) (length 60.141266)) + (spring (first 1965) (second 1971) (length 58.728092)) + (spring (first 1968) (second 1966) (length 58.000042)) + (spring (first 1966) (second 1972) (length 55.173004)) + (spring (first 1974) (second 1976) (length 57.384621)) + (spring (first 1973) (second 1979) (length 60.828026)) + (spring (first 1968) (second 1963) (length 37.013599)) + (spring (first 1958) (second 1965) (length 39.012985)) + (spring (first 1964) (second 1959) (length 38.999912)) + (spring (first 1962) (second 1969) (length 37.054153)) + (spring (first 1969) (second 1963) (length 51.623474)) + (spring (first 1965) (second 1959) (length 53.740246)) + (spring (first 1958) (second 1964) (length 55.866226)) + (spring (first 1965) (second 1963) (length 57.489166)) + (spring (first 1958) (second 1968) (length 57.315090)) + (spring (first 1968) (second 1962) (length 55.172173)) + (spring (first 1921) (second 1948) (length 50.040237)) + (spring (first 1951) (second 1929) (length 64.443794)) + (spring (first 1922) (second 1956) (length 62.201237)) + (spring (first 1956) (second 1930) (length 65.115540)) + (spring (first 1929) (second 1959) (length 60.803104)) + (spring (first 1959) (second 1937) (length 64.660721)) + (spring (first 1946) (second 1975) (length 48.166431)) + (spring (first 1972) (second 1945) (length 49.163246)) + (spring (first 1938) (second 1967) (length 49.040596)) + (spring (first 1937) (second 1964) (length 50.039993)) + (spring (first 1930) (second 1959) (length 48.166676)) + (spring (first 1922) (second 1951) (length 49.040844)) + (spring (first 1921) (second 1951) (length 62.801395)) + (spring (first 1948) (second 1922) (length 64.537025)) + (spring (first 1929) (second 1956) (length 49.163029)) + (spring (first 1930) (second 1964) (length 59.405502)) + (spring (first 1964) (second 1938) (length 64.536873)) + (spring (first 1938) (second 1972) (length 62.201229)) + (spring (first 1972) (second 1946) (length 65.115234)) + (spring (first 1975) (second 1945) (length 60.803448)) + (spring (first 1945) (second 1967) (length 64.443817)) + (spring (first 1967) (second 1937) (length 62.801281)) + (spring (first 1980) (second 1981) (length 38.012783)) + (spring (first 1981) (second 1982) (length 40.012611)) + (spring (first 1982) (second 1983) (length 39.013634)) + (spring (first 1983) (second 1980) (length 39.999763)) + (spring (first 1980) (second 1982) (length 55.154411)) + (spring (first 1981) (second 1983) (length 55.901825)) + (spring (first 1984) (second 1985) (length 38.012722)) + (spring (first 1985) (second 1986) (length 40.012730)) + (spring (first 1986) (second 1987) (length 39.012596)) + (spring (first 1987) (second 1984) (length 40.000000)) + (spring (first 1984) (second 1986) (length 55.154118)) + (spring (first 1985) (second 1987) (length 55.901619)) + (spring (first 1988) (second 1989) (length 38.012783)) + (spring (first 1989) (second 1990) (length 40.012241)) + (spring (first 1990) (second 1991) (length 39.012901)) + (spring (first 1991) (second 1988) (length 39.999882)) + (spring (first 1988) (second 1990) (length 55.153896)) + (spring (first 1989) (second 1991) (length 55.901657)) + (spring (first 1992) (second 1993) (length 38.013210)) + (spring (first 1993) (second 1994) (length 40.012486)) + (spring (first 1994) (second 1995) (length 39.012596)) + (spring (first 1995) (second 1992) (length 39.999874)) + (spring (first 1992) (second 1994) (length 55.154202)) + (spring (first 1993) (second 1995) (length 55.901615)) + (spring (first 1981) (second 1984) (length 43.000263)) + (spring (first 1987) (second 1992) (length 41.048813)) + (spring (first 1992) (second 1989) (length 44.045437)) + (spring (first 1989) (second 1982) (length 38.999920)) + (spring (first 1982) (second 1987) (length 41.999561)) + (spring (first 1986) (second 1993) (length 41.012146)) + (spring (first 1995) (second 1990) (length 43.046532)) + (spring (first 1988) (second 1983) (length 39.012966)) + (spring (first 1983) (second 1989) (length 54.452003)) + (spring (first 1989) (second 1987) (length 57.315090)) + (spring (first 1987) (second 1993) (length 56.568455)) + (spring (first 1986) (second 1992) (length 55.973198)) + (spring (first 1992) (second 1982) (length 60.141006)) + (spring (first 1981) (second 1987) (length 58.728268)) + (spring (first 1984) (second 1982) (length 57.999859)) + (spring (first 1982) (second 1988) (length 55.172615)) + (spring (first 1990) (second 1992) (length 57.384422)) + (spring (first 1989) (second 1995) (length 60.827637)) + (spring (first 1996) (second 1997) (length 38.012783)) + (spring (first 1997) (second 1998) (length 40.012363)) + (spring (first 1998) (second 1999) (length 39.013145)) + (spring (first 1999) (second 1996) (length 39.999763)) + (spring (first 1996) (second 1998) (length 55.153984)) + (spring (first 1997) (second 1999) (length 55.901737)) + (spring (first 2000) (second 2001) (length 38.012966)) + (spring (first 2001) (second 2002) (length 40.012486)) + (spring (first 2002) (second 2003) (length 39.012596)) + (spring (first 2003) (second 2000) (length 39.999996)) + (spring (first 2000) (second 2002) (length 55.154202)) + (spring (first 2001) (second 2003) (length 55.901531)) + (spring (first 2004) (second 2005) (length 38.013271)) + (spring (first 2005) (second 2006) (length 40.012363)) + (spring (first 2006) (second 2007) (length 39.012657)) + (spring (first 2007) (second 2004) (length 40.000122)) + (spring (first 2004) (second 2006) (length 55.154160)) + (spring (first 2005) (second 2007) (length 55.901825)) + (spring (first 2008) (second 2009) (length 38.012966)) + (spring (first 2009) (second 2010) (length 40.012608)) + (spring (first 2010) (second 2011) (length 39.013084)) + (spring (first 2011) (second 2008) (length 39.999878)) + (spring (first 2008) (second 2010) (length 55.154369)) + (spring (first 2009) (second 2011) (length 55.901703)) + (spring (first 1997) (second 2000) (length 43.000259)) + (spring (first 2003) (second 2008) (length 41.048683)) + (spring (first 2008) (second 2005) (length 44.045185)) + (spring (first 2005) (second 1998) (length 39.000027)) + (spring (first 1998) (second 2003) (length 42.000294)) + (spring (first 2002) (second 2009) (length 41.012024)) + (spring (first 2011) (second 2006) (length 43.046516)) + (spring (first 2004) (second 1999) (length 39.012718)) + (spring (first 1999) (second 2005) (length 54.452175)) + (spring (first 2005) (second 2003) (length 57.315090)) + (spring (first 2003) (second 2009) (length 56.567940)) + (spring (first 2002) (second 2008) (length 55.973362)) + (spring (first 2008) (second 1998) (length 60.141357)) + (spring (first 1997) (second 2003) (length 58.728355)) + (spring (first 2000) (second 1998) (length 58.000137)) + (spring (first 1998) (second 2004) (length 55.172356)) + (spring (first 2006) (second 2008) (length 57.384769)) + (spring (first 2005) (second 2011) (length 60.827206)) + (spring (first 2000) (second 1995) (length 37.013367)) + (spring (first 1990) (second 1997) (length 39.012985)) + (spring (first 1996) (second 1991) (length 39.000023)) + (spring (first 1994) (second 2001) (length 37.053753)) + (spring (first 2001) (second 1995) (length 51.623447)) + (spring (first 1997) (second 1991) (length 53.740078)) + (spring (first 1990) (second 1996) (length 55.865879)) + (spring (first 1997) (second 1995) (length 57.489243)) + (spring (first 1990) (second 2000) (length 57.315048)) + (spring (first 2000) (second 1994) (length 55.172077)) + (spring (first 2012) (second 2013) (length 38.013454)) + (spring (first 2013) (second 2014) (length 40.012486)) + (spring (first 2014) (second 2015) (length 39.013573)) + (spring (first 2015) (second 2012) (length 40.000000)) + (spring (first 2012) (second 2014) (length 55.154884)) + (spring (first 2013) (second 2015) (length 55.901863)) + (spring (first 2016) (second 2017) (length 38.013119)) + (spring (first 2017) (second 2018) (length 40.012363)) + (spring (first 2018) (second 2019) (length 39.012260)) + (spring (first 2019) (second 2016) (length 39.999985)) + (spring (first 2016) (second 2018) (length 55.154480)) + (spring (first 2017) (second 2019) (length 55.901035)) + (spring (first 2020) (second 2021) (length 38.013454)) + (spring (first 2021) (second 2022) (length 40.012486)) + (spring (first 2022) (second 2023) (length 39.013084)) + (spring (first 2023) (second 2020) (length 40.000240)) + (spring (first 2020) (second 2022) (length 55.154625)) + (spring (first 2021) (second 2023) (length 55.901958)) + (spring (first 2024) (second 2025) (length 38.013363)) + (spring (first 2025) (second 2026) (length 40.012486)) + (spring (first 2026) (second 2027) (length 39.012627)) + (spring (first 2027) (second 2024) (length 40.000111)) + (spring (first 2024) (second 2026) (length 55.154568)) + (spring (first 2025) (second 2027) (length 55.901550)) + (spring (first 2013) (second 2016) (length 42.999523)) + (spring (first 2019) (second 2024) (length 41.048679)) + (spring (first 2024) (second 2021) (length 44.044941)) + (spring (first 2021) (second 2014) (length 38.999794)) + (spring (first 2014) (second 2019) (length 41.999802)) + (spring (first 2018) (second 2025) (length 41.012146)) + (spring (first 2027) (second 2022) (length 43.046280)) + (spring (first 2020) (second 2015) (length 39.012718)) + (spring (first 2015) (second 2021) (length 54.452045)) + (spring (first 2021) (second 2019) (length 57.315090)) + (spring (first 2019) (second 2025) (length 56.568310)) + (spring (first 2018) (second 2024) (length 55.973122)) + (spring (first 2024) (second 2014) (length 60.140659)) + (spring (first 2013) (second 2019) (length 58.728096)) + (spring (first 2016) (second 2014) (length 57.999584)) + (spring (first 2014) (second 2020) (length 55.172741)) + (spring (first 2022) (second 2024) (length 57.384289)) + (spring (first 2021) (second 2027) (length 60.827553)) + (spring (first 2028) (second 2029) (length 38.013454)) + (spring (first 2029) (second 2030) (length 40.012363)) + (spring (first 2030) (second 2031) (length 39.013573)) + (spring (first 2031) (second 2028) (length 39.999878)) + (spring (first 2028) (second 2030) (length 55.154709)) + (spring (first 2029) (second 2031) (length 55.901863)) + (spring (first 2032) (second 2033) (length 38.012386)) + (spring (first 2033) (second 2034) (length 40.012241)) + (spring (first 2034) (second 2035) (length 39.012505)) + (spring (first 2035) (second 2032) (length 39.999760)) + (spring (first 2032) (second 2034) (length 55.153709)) + (spring (first 2033) (second 2035) (length 55.901203)) + (spring (first 2036) (second 2037) (length 38.013210)) + (spring (first 2037) (second 2038) (length 40.012486)) + (spring (first 2038) (second 2039) (length 39.013084)) + (spring (first 2039) (second 2036) (length 40.000118)) + (spring (first 2036) (second 2038) (length 55.154625)) + (spring (first 2037) (second 2039) (length 55.901703)) + (spring (first 2040) (second 2041) (length 38.012630)) + (spring (first 2041) (second 2042) (length 40.012486)) + (spring (first 2042) (second 2043) (length 39.012016)) + (spring (first 2043) (second 2040) (length 39.999989)) + (spring (first 2040) (second 2042) (length 55.154057)) + (spring (first 2041) (second 2043) (length 55.901039)) + (spring (first 2029) (second 2032) (length 43.000263)) + (spring (first 2035) (second 2040) (length 41.048820)) + (spring (first 2040) (second 2037) (length 44.045670)) + (spring (first 2037) (second 2030) (length 39.000042)) + (spring (first 2030) (second 2035) (length 41.999561)) + (spring (first 2034) (second 2041) (length 41.012268)) + (spring (first 2043) (second 2038) (length 43.046761)) + (spring (first 2036) (second 2031) (length 39.012840)) + (spring (first 2031) (second 2037) (length 54.451962)) + (spring (first 2037) (second 2035) (length 57.315170)) + (spring (first 2035) (second 2041) (length 56.568310)) + (spring (first 2034) (second 2040) (length 55.972969)) + (spring (first 2040) (second 2030) (length 60.141182)) + (spring (first 2029) (second 2035) (length 58.727921)) + (spring (first 2032) (second 2030) (length 57.999878)) + (spring (first 2030) (second 2036) (length 55.172916)) + (spring (first 2038) (second 2040) (length 57.384663)) + (spring (first 2037) (second 2043) (length 60.827984)) + (spring (first 2032) (second 2027) (length 37.013477)) + (spring (first 2022) (second 2029) (length 39.012863)) + (spring (first 2028) (second 2023) (length 38.999790)) + (spring (first 2026) (second 2033) (length 37.054024)) + (spring (first 2033) (second 2027) (length 51.623386)) + (spring (first 2029) (second 2023) (length 53.740116)) + (spring (first 2022) (second 2028) (length 55.866184)) + (spring (first 2029) (second 2027) (length 57.489052)) + (spring (first 2022) (second 2032) (length 57.315048)) + (spring (first 2032) (second 2026) (length 55.172001)) + (spring (first 1985) (second 2012) (length 50.040234)) + (spring (first 2015) (second 1993) (length 64.443794)) + (spring (first 1986) (second 2020) (length 62.201237)) + (spring (first 2020) (second 1994) (length 65.115540)) + (spring (first 1993) (second 2023) (length 60.803104)) + (spring (first 2023) (second 2001) (length 64.660568)) + (spring (first 2010) (second 2039) (length 48.166424)) + (spring (first 2036) (second 2009) (length 49.163250)) + (spring (first 2002) (second 2031) (length 49.040596)) + (spring (first 2001) (second 2028) (length 50.039989)) + (spring (first 1994) (second 2023) (length 48.166676)) + (spring (first 1986) (second 2015) (length 49.040844)) + (spring (first 1985) (second 2015) (length 62.801434)) + (spring (first 2012) (second 1986) (length 64.537025)) + (spring (first 1993) (second 2020) (length 49.163029)) + (spring (first 1994) (second 2028) (length 59.405430)) + (spring (first 2028) (second 2002) (length 64.536682)) + (spring (first 2002) (second 2036) (length 62.201191)) + (spring (first 2036) (second 2010) (length 65.115189)) + (spring (first 2039) (second 2009) (length 60.803448)) + (spring (first 2009) (second 2031) (length 64.443817)) + (spring (first 2031) (second 2001) (length 62.801167)) + (spring (first 2044) (second 2045) (length 38.012722)) + (spring (first 2045) (second 2046) (length 40.012611)) + (spring (first 2046) (second 2047) (length 39.013695)) + (spring (first 2047) (second 2044) (length 39.999645)) + (spring (first 2044) (second 2046) (length 55.154324)) + (spring (first 2045) (second 2047) (length 55.901825)) + (spring (first 2048) (second 2049) (length 38.012905)) + (spring (first 2049) (second 2050) (length 40.012608)) + (spring (first 2050) (second 2051) (length 39.012779)) + (spring (first 2051) (second 2048) (length 39.999939)) + (spring (first 2048) (second 2050) (length 55.154202)) + (spring (first 2049) (second 2051) (length 55.901657)) + (spring (first 2052) (second 2053) (length 38.012844)) + (spring (first 2053) (second 2054) (length 40.012241)) + (spring (first 2054) (second 2055) (length 39.012962)) + (spring (first 2055) (second 2052) (length 39.999882)) + (spring (first 2052) (second 2054) (length 55.154022)) + (spring (first 2053) (second 2055) (length 55.901615)) + (spring (first 2056) (second 2057) (length 38.013302)) + (spring (first 2057) (second 2058) (length 40.012486)) + (spring (first 2058) (second 2059) (length 39.012810)) + (spring (first 2059) (second 2056) (length 39.999874)) + (spring (first 2056) (second 2058) (length 55.154346)) + (spring (first 2057) (second 2059) (length 55.901676)) + (spring (first 2045) (second 2048) (length 43.000263)) + (spring (first 2051) (second 2056) (length 41.048813)) + (spring (first 2056) (second 2053) (length 44.045437)) + (spring (first 2053) (second 2046) (length 38.999859)) + (spring (first 2046) (second 2051) (length 41.999561)) + (spring (first 2050) (second 2057) (length 41.012146)) + (spring (first 2059) (second 2054) (length 43.046410)) + (spring (first 2052) (second 2047) (length 39.012966)) + (spring (first 2047) (second 2053) (length 54.452045)) + (spring (first 2053) (second 2051) (length 57.315090)) + (spring (first 2051) (second 2057) (length 56.568516)) + (spring (first 2050) (second 2056) (length 55.973320)) + (spring (first 2056) (second 2046) (length 60.140965)) + (spring (first 2045) (second 2051) (length 58.728226)) + (spring (first 2048) (second 2046) (length 57.999859)) + (spring (first 2046) (second 2052) (length 55.172615)) + (spring (first 2054) (second 2056) (length 57.384331)) + (spring (first 2053) (second 2059) (length 60.827637)) + (spring (first 2060) (second 2061) (length 38.012722)) + (spring (first 2061) (second 2062) (length 40.012547)) + (spring (first 2062) (second 2063) (length 39.013084)) + (spring (first 2063) (second 2060) (length 39.999886)) + (spring (first 2060) (second 2062) (length 55.154076)) + (spring (first 2061) (second 2063) (length 55.901783)) + (spring (first 2064) (second 2065) (length 38.013027)) + (spring (first 2065) (second 2066) (length 40.012669)) + (spring (first 2066) (second 2067) (length 39.012657)) + (spring (first 2067) (second 2064) (length 40.000240)) + (spring (first 2064) (second 2066) (length 55.154419)) + (spring (first 2065) (second 2067) (length 55.901707)) + (spring (first 2068) (second 2069) (length 38.013332)) + (spring (first 2069) (second 2070) (length 40.012360)) + (spring (first 2070) (second 2071) (length 39.012596)) + (spring (first 2071) (second 2068) (length 40.000122)) + (spring (first 2068) (second 2070) (length 55.154118)) + (spring (first 2069) (second 2071) (length 55.901867)) + (spring (first 2072) (second 2073) (length 38.012905)) + (spring (first 2073) (second 2074) (length 40.012669)) + (spring (first 2074) (second 2075) (length 39.013023)) + (spring (first 2075) (second 2072) (length 39.999939)) + (spring (first 2072) (second 2074) (length 55.154369)) + (spring (first 2073) (second 2075) (length 55.901703)) + (spring (first 2061) (second 2064) (length 43.000259)) + (spring (first 2067) (second 2072) (length 41.048748)) + (spring (first 2072) (second 2069) (length 44.045185)) + (spring (first 2069) (second 2062) (length 39.000088)) + (spring (first 2062) (second 2067) (length 42.000294)) + (spring (first 2066) (second 2073) (length 41.012085)) + (spring (first 2075) (second 2070) (length 43.046642)) + (spring (first 2068) (second 2063) (length 39.012840)) + (spring (first 2063) (second 2069) (length 54.452305)) + (spring (first 2069) (second 2067) (length 57.315037)) + (spring (first 2067) (second 2073) (length 56.568027)) + (spring (first 2066) (second 2072) (length 55.973366)) + (spring (first 2072) (second 2062) (length 60.141487)) + (spring (first 2061) (second 2067) (length 58.728485)) + (spring (first 2064) (second 2062) (length 58.000305)) + (spring (first 2062) (second 2068) (length 55.172359)) + (spring (first 2070) (second 2072) (length 57.384861)) + (spring (first 2069) (second 2075) (length 60.827248)) + (spring (first 2064) (second 2059) (length 37.013428)) + (spring (first 2054) (second 2061) (length 39.013111)) + (spring (first 2060) (second 2055) (length 39.000145)) + (spring (first 2058) (second 2065) (length 37.053886)) + (spring (first 2065) (second 2059) (length 51.623577)) + (spring (first 2061) (second 2055) (length 53.740124)) + (spring (first 2054) (second 2060) (length 55.866009)) + (spring (first 2061) (second 2059) (length 57.489319)) + (spring (first 2054) (second 2064) (length 57.315002)) + (spring (first 2064) (second 2058) (length 55.172276)) + (spring (first 2076) (second 2077) (length 38.013149)) + (spring (first 2077) (second 2078) (length 40.012424)) + (spring (first 2078) (second 2079) (length 39.013268)) + (spring (first 2079) (second 2076) (length 39.999939)) + (spring (first 2076) (second 2078) (length 55.154629)) + (spring (first 2077) (second 2079) (length 55.901608)) + (spring (first 2080) (second 2081) (length 38.013454)) + (spring (first 2081) (second 2082) (length 40.012363)) + (spring (first 2082) (second 2083) (length 39.012711)) + (spring (first 2083) (second 2080) (length 39.999928)) + (spring (first 2080) (second 2082) (length 55.154671)) + (spring (first 2081) (second 2083) (length 55.901348)) + (spring (first 2084) (second 2085) (length 38.013271)) + (spring (first 2085) (second 2086) (length 40.012486)) + (spring (first 2086) (second 2087) (length 39.012779)) + (spring (first 2087) (second 2084) (length 40.000237)) + (spring (first 2084) (second 2086) (length 55.154499)) + (spring (first 2085) (second 2087) (length 55.901745)) + (spring (first 2088) (second 2089) (length 38.013699)) + (spring (first 2089) (second 2090) (length 40.012486)) + (spring (first 2090) (second 2091) (length 39.013199)) + (spring (first 2091) (second 2088) (length 40.000050)) + (spring (first 2088) (second 2090) (length 55.154922)) + (spring (first 2089) (second 2091) (length 55.901779)) + (spring (first 2077) (second 2080) (length 42.999680)) + (spring (first 2083) (second 2088) (length 41.048679)) + (spring (first 2088) (second 2085) (length 44.044975)) + (spring (first 2085) (second 2078) (length 38.999794)) + (spring (first 2078) (second 2083) (length 41.999840)) + (spring (first 2082) (second 2089) (length 41.012085)) + (spring (first 2091) (second 2086) (length 43.046318)) + (spring (first 2084) (second 2079) (length 39.012718)) + (spring (first 2079) (second 2085) (length 54.451832)) + (spring (first 2085) (second 2083) (length 57.315075)) + (spring (first 2083) (second 2089) (length 56.568493)) + (spring (first 2082) (second 2088) (length 55.973431)) + (spring (first 2088) (second 2078) (length 60.140724)) + (spring (first 2077) (second 2083) (length 58.728123)) + (spring (first 2080) (second 2078) (length 57.999611)) + (spring (first 2078) (second 2084) (length 55.172615)) + (spring (first 2086) (second 2088) (length 57.384274)) + (spring (first 2085) (second 2091) (length 60.827579)) + (spring (first 2092) (second 2093) (length 38.013271)) + (spring (first 2093) (second 2094) (length 40.012547)) + (spring (first 2094) (second 2095) (length 39.013268)) + (spring (first 2095) (second 2092) (length 40.000179)) + (spring (first 2092) (second 2094) (length 55.154755)) + (spring (first 2093) (second 2095) (length 55.901829)) + (spring (first 2096) (second 2097) (length 38.012714)) + (spring (first 2097) (second 2098) (length 40.012486)) + (spring (first 2098) (second 2099) (length 39.012688)) + (spring (first 2099) (second 2096) (length 40.000065)) + (spring (first 2096) (second 2098) (length 55.154030)) + (spring (first 2097) (second 2099) (length 55.901634)) + (spring (first 2100) (second 2101) (length 38.013027)) + (spring (first 2101) (second 2102) (length 40.012547)) + (spring (first 2102) (second 2103) (length 39.012779)) + (spring (first 2103) (second 2100) (length 40.000114)) + (spring (first 2100) (second 2102) (length 55.154499)) + (spring (first 2101) (second 2103) (length 55.901531)) + (spring (first 2104) (second 2105) (length 38.013081)) + (spring (first 2105) (second 2106) (length 40.012486)) + (spring (first 2106) (second 2107) (length 39.012466)) + (spring (first 2107) (second 2104) (length 39.999928)) + (spring (first 2104) (second 2106) (length 55.154324)) + (spring (first 2105) (second 2107) (length 55.901352)) + (spring (first 2093) (second 2096) (length 43.000420)) + (spring (first 2099) (second 2104) (length 41.048939)) + (spring (first 2104) (second 2101) (length 44.045715)) + (spring (first 2101) (second 2094) (length 39.000103)) + (spring (first 2094) (second 2099) (length 41.999744)) + (spring (first 2098) (second 2105) (length 41.012390)) + (spring (first 2107) (second 2102) (length 43.046799)) + (spring (first 2100) (second 2095) (length 39.012901)) + (spring (first 2095) (second 2101) (length 54.451744)) + (spring (first 2101) (second 2099) (length 57.315308)) + (spring (first 2099) (second 2105) (length 56.568565)) + (spring (first 2098) (second 2104) (length 55.973328)) + (spring (first 2104) (second 2094) (length 60.141335)) + (spring (first 2093) (second 2099) (length 58.728222)) + (spring (first 2096) (second 2094) (length 58.000160)) + (spring (first 2094) (second 2100) (length 55.172874)) + (spring (first 2102) (second 2104) (length 57.384651)) + (spring (first 2101) (second 2107) (length 60.828056)) + (spring (first 2096) (second 2091) (length 37.013474)) + (spring (first 2086) (second 2093) (length 39.012924)) + (spring (first 2092) (second 2087) (length 38.999790)) + (spring (first 2090) (second 2097) (length 37.054031)) + (spring (first 2097) (second 2091) (length 51.623703)) + (spring (first 2093) (second 2087) (length 53.739948)) + (spring (first 2086) (second 2092) (length 55.866055)) + (spring (first 2093) (second 2091) (length 57.489120)) + (spring (first 2086) (second 2096) (length 57.315163)) + (spring (first 2096) (second 2090) (length 55.172333)) + (spring (first 2049) (second 2076) (length 50.040329)) + (spring (first 2079) (second 2057) (length 64.443932)) + (spring (first 2050) (second 2084) (length 62.201214)) + (spring (first 2084) (second 2058) (length 65.115494)) + (spring (first 2057) (second 2087) (length 60.803253)) + (spring (first 2087) (second 2065) (length 64.660812)) + (spring (first 2074) (second 2103) (length 48.166641)) + (spring (first 2100) (second 2073) (length 49.163342)) + (spring (first 2066) (second 2095) (length 49.040810)) + (spring (first 2065) (second 2092) (length 50.040085)) + (spring (first 2058) (second 2087) (length 48.166737)) + (spring (first 2050) (second 2079) (length 49.040936)) + (spring (first 2049) (second 2079) (length 62.801430)) + (spring (first 2076) (second 2050) (length 64.537056)) + (spring (first 2057) (second 2084) (length 49.163090)) + (spring (first 2058) (second 2092) (length 59.405380)) + (spring (first 2092) (second 2066) (length 64.536942)) + (spring (first 2066) (second 2100) (length 62.201302)) + (spring (first 2100) (second 2074) (length 65.115303)) + (spring (first 2103) (second 2073) (length 60.803619)) + (spring (first 2073) (second 2095) (length 64.444016)) + (spring (first 2095) (second 2065) (length 62.801449)) + (spring (first 2108) (second 2109) (length 38.012722)) + (spring (first 2109) (second 2110) (length 40.012611)) + (spring (first 2110) (second 2111) (length 39.013695)) + (spring (first 2111) (second 2108) (length 39.999767)) + (spring (first 2108) (second 2110) (length 55.154369)) + (spring (first 2109) (second 2111) (length 55.901867)) + (spring (first 2112) (second 2113) (length 38.012936)) + (spring (first 2113) (second 2114) (length 40.012730)) + (spring (first 2114) (second 2115) (length 39.012810)) + (spring (first 2115) (second 2112) (length 40.000000)) + (spring (first 2112) (second 2114) (length 55.154266)) + (spring (first 2113) (second 2115) (length 55.901768)) + (spring (first 2116) (second 2117) (length 38.012844)) + (spring (first 2117) (second 2118) (length 40.012241)) + (spring (first 2118) (second 2119) (length 39.012962)) + (spring (first 2119) (second 2116) (length 39.999882)) + (spring (first 2116) (second 2118) (length 55.154022)) + (spring (first 2117) (second 2119) (length 55.901615)) + (spring (first 2120) (second 2121) (length 38.013302)) + (spring (first 2121) (second 2122) (length 40.012486)) + (spring (first 2122) (second 2123) (length 39.012810)) + (spring (first 2123) (second 2120) (length 39.999874)) + (spring (first 2120) (second 2122) (length 55.154346)) + (spring (first 2121) (second 2123) (length 55.901676)) + (spring (first 2109) (second 2112) (length 43.000263)) + (spring (first 2115) (second 2120) (length 41.048813)) + (spring (first 2120) (second 2117) (length 44.045437)) + (spring (first 2117) (second 2110) (length 38.999920)) + (spring (first 2110) (second 2115) (length 41.999561)) + (spring (first 2114) (second 2121) (length 41.012146)) + (spring (first 2123) (second 2118) (length 43.046410)) + (spring (first 2116) (second 2111) (length 39.012966)) + (spring (first 2111) (second 2117) (length 54.452045)) + (spring (first 2117) (second 2115) (length 57.315090)) + (spring (first 2115) (second 2121) (length 56.568516)) + (spring (first 2114) (second 2120) (length 55.973343)) + (spring (first 2120) (second 2110) (length 60.141006)) + (spring (first 2109) (second 2115) (length 58.728268)) + (spring (first 2112) (second 2110) (length 57.999859)) + (spring (first 2110) (second 2116) (length 55.172657)) + (spring (first 2118) (second 2120) (length 57.384331)) + (spring (first 2117) (second 2123) (length 60.827637)) + (spring (first 2124) (second 2125) (length 38.012722)) + (spring (first 2125) (second 2126) (length 40.012486)) + (spring (first 2126) (second 2127) (length 39.013084)) + (spring (first 2127) (second 2124) (length 39.999763)) + (spring (first 2124) (second 2126) (length 55.154030)) + (spring (first 2125) (second 2127) (length 55.901695)) + (spring (first 2128) (second 2129) (length 38.013058)) + (spring (first 2129) (second 2130) (length 40.012608)) + (spring (first 2130) (second 2131) (length 39.012688)) + (spring (first 2131) (second 2128) (length 40.000240)) + (spring (first 2128) (second 2130) (length 55.154438)) + (spring (first 2129) (second 2131) (length 55.901684)) + (spring (first 2132) (second 2133) (length 38.013332)) + (spring (first 2133) (second 2134) (length 40.012360)) + (spring (first 2134) (second 2135) (length 39.012596)) + (spring (first 2135) (second 2132) (length 40.000061)) + (spring (first 2132) (second 2134) (length 55.154118)) + (spring (first 2133) (second 2135) (length 55.901825)) + (spring (first 2136) (second 2137) (length 38.012936)) + (spring (first 2137) (second 2138) (length 40.012424)) + (spring (first 2138) (second 2139) (length 39.013054)) + (spring (first 2139) (second 2136) (length 39.999817)) + (spring (first 2136) (second 2138) (length 55.154305)) + (spring (first 2137) (second 2139) (length 55.901546)) + (spring (first 2125) (second 2128) (length 43.000256)) + (spring (first 2131) (second 2136) (length 41.048809)) + (spring (first 2136) (second 2133) (length 44.045185)) + (spring (first 2133) (second 2126) (length 39.000149)) + (spring (first 2126) (second 2131) (length 42.000294)) + (spring (first 2130) (second 2137) (length 41.012268)) + (spring (first 2139) (second 2134) (length 43.046635)) + (spring (first 2132) (second 2127) (length 39.012962)) + (spring (first 2127) (second 2133) (length 54.452393)) + (spring (first 2133) (second 2131) (length 57.315079)) + (spring (first 2131) (second 2137) (length 56.568180)) + (spring (first 2130) (second 2136) (length 55.973431)) + (spring (first 2136) (second 2126) (length 60.141529)) + (spring (first 2125) (second 2131) (length 58.728443)) + (spring (first 2128) (second 2126) (length 58.000305)) + (spring (first 2126) (second 2132) (length 55.172401)) + (spring (first 2134) (second 2136) (length 57.384861)) + (spring (first 2133) (second 2139) (length 60.827164)) + (spring (first 2128) (second 2123) (length 37.013245)) + (spring (first 2118) (second 2125) (length 39.012989)) + (spring (first 2124) (second 2119) (length 39.000023)) + (spring (first 2122) (second 2129) (length 37.053761)) + (spring (first 2129) (second 2123) (length 51.623512)) + (spring (first 2125) (second 2119) (length 53.740036)) + (spring (first 2118) (second 2124) (length 55.865921)) + (spring (first 2125) (second 2123) (length 57.489243)) + (spring (first 2118) (second 2128) (length 57.314873)) + (spring (first 2128) (second 2122) (length 55.172153)) + (spring (first 2140) (second 2141) (length 38.013119)) + (spring (first 2141) (second 2142) (length 40.012486)) + (spring (first 2142) (second 2143) (length 39.013237)) + (spring (first 2143) (second 2140) (length 40.000000)) + (spring (first 2140) (second 2142) (length 55.154652)) + (spring (first 2141) (second 2143) (length 55.901630)) + (spring (first 2144) (second 2145) (length 38.013447)) + (spring (first 2145) (second 2146) (length 40.012363)) + (spring (first 2146) (second 2147) (length 39.012711)) + (spring (first 2147) (second 2144) (length 39.999989)) + (spring (first 2144) (second 2146) (length 55.154709)) + (spring (first 2145) (second 2147) (length 55.901348)) + (spring (first 2148) (second 2149) (length 38.013241)) + (spring (first 2149) (second 2150) (length 40.012486)) + (spring (first 2150) (second 2151) (length 39.012749)) + (spring (first 2151) (second 2148) (length 40.000237)) + (spring (first 2148) (second 2150) (length 55.154480)) + (spring (first 2149) (second 2151) (length 55.901726)) + (spring (first 2152) (second 2153) (length 38.013691)) + (spring (first 2153) (second 2154) (length 40.012486)) + (spring (first 2154) (second 2155) (length 39.013199)) + (spring (first 2155) (second 2152) (length 40.000111)) + (spring (first 2152) (second 2154) (length 55.154961)) + (spring (first 2153) (second 2155) (length 55.901779)) + (spring (first 2141) (second 2144) (length 42.999683)) + (spring (first 2147) (second 2152) (length 41.048679)) + (spring (first 2152) (second 2149) (length 44.044979)) + (spring (first 2149) (second 2142) (length 38.999794)) + (spring (first 2142) (second 2147) (length 41.999840)) + (spring (first 2146) (second 2153) (length 41.012146)) + (spring (first 2155) (second 2150) (length 43.046318)) + (spring (first 2148) (second 2143) (length 39.012718)) + (spring (first 2143) (second 2149) (length 54.451809)) + (spring (first 2149) (second 2147) (length 57.315117)) + (spring (first 2147) (second 2153) (length 56.568535)) + (spring (first 2146) (second 2152) (length 55.973423)) + (spring (first 2152) (second 2142) (length 60.140690)) + (spring (first 2141) (second 2147) (length 58.728123)) + (spring (first 2144) (second 2142) (length 57.999702)) + (spring (first 2142) (second 2148) (length 55.172592)) + (spring (first 2150) (second 2152) (length 57.384319)) + (spring (first 2149) (second 2155) (length 60.827579)) + (spring (first 2156) (second 2157) (length 38.013271)) + (spring (first 2157) (second 2158) (length 40.012486)) + (spring (first 2158) (second 2159) (length 39.013268)) + (spring (first 2159) (second 2156) (length 40.000118)) + (spring (first 2156) (second 2158) (length 55.154667)) + (spring (first 2157) (second 2159) (length 55.901829)) + (spring (first 2160) (second 2161) (length 38.012722)) + (spring (first 2161) (second 2162) (length 40.012363)) + (spring (first 2162) (second 2163) (length 39.012718)) + (spring (first 2163) (second 2160) (length 40.000004)) + (spring (first 2160) (second 2162) (length 55.153946)) + (spring (first 2161) (second 2163) (length 55.901615)) + (spring (first 2164) (second 2165) (length 38.013027)) + (spring (first 2165) (second 2166) (length 40.012486)) + (spring (first 2166) (second 2167) (length 39.012779)) + (spring (first 2167) (second 2164) (length 40.000114)) + (spring (first 2164) (second 2166) (length 55.154499)) + (spring (first 2165) (second 2167) (length 55.901489)) + (spring (first 2168) (second 2169) (length 38.013088)) + (spring (first 2169) (second 2170) (length 40.012302)) + (spring (first 2170) (second 2171) (length 39.012474)) + (spring (first 2171) (second 2168) (length 39.999805)) + (spring (first 2168) (second 2170) (length 55.154240)) + (spring (first 2169) (second 2171) (length 55.901226)) + (spring (first 2157) (second 2160) (length 43.000416)) + (spring (first 2163) (second 2168) (length 41.049061)) + (spring (first 2168) (second 2165) (length 44.045708)) + (spring (first 2165) (second 2158) (length 39.000286)) + (spring (first 2158) (second 2163) (length 41.999714)) + (spring (first 2162) (second 2169) (length 41.012634)) + (spring (first 2171) (second 2166) (length 43.046787)) + (spring (first 2164) (second 2159) (length 39.012962)) + (spring (first 2159) (second 2165) (length 54.451832)) + (spring (first 2165) (second 2163) (length 57.315365)) + (spring (first 2163) (second 2169) (length 56.568718)) + (spring (first 2162) (second 2168) (length 55.973465)) + (spring (first 2168) (second 2158) (length 60.141457)) + (spring (first 2157) (second 2163) (length 58.728203)) + (spring (first 2160) (second 2158) (length 58.000072)) + (spring (first 2158) (second 2164) (length 55.172962)) + (spring (first 2166) (second 2168) (length 57.384605)) + (spring (first 2165) (second 2171) (length 60.827965)) + (spring (first 2160) (second 2155) (length 37.013351)) + (spring (first 2150) (second 2157) (length 39.012741)) + (spring (first 2156) (second 2151) (length 38.999672)) + (spring (first 2154) (second 2161) (length 37.053913)) + (spring (first 2161) (second 2155) (length 51.623615)) + (spring (first 2157) (second 2151) (length 53.739796)) + (spring (first 2150) (second 2156) (length 55.865971)) + (spring (first 2157) (second 2155) (length 57.489006)) + (spring (first 2150) (second 2160) (length 57.315071)) + (spring (first 2160) (second 2154) (length 55.172256)) + (spring (first 2113) (second 2140) (length 50.040325)) + (spring (first 2143) (second 2121) (length 64.443954)) + (spring (first 2114) (second 2148) (length 62.201214)) + (spring (first 2148) (second 2122) (length 65.115517)) + (spring (first 2121) (second 2151) (length 60.803276)) + (spring (first 2151) (second 2129) (length 64.660736)) + (spring (first 2138) (second 2167) (length 48.166603)) + (spring (first 2164) (second 2137) (length 49.163319)) + (spring (first 2130) (second 2159) (length 49.040779)) + (spring (first 2129) (second 2156) (length 50.040054)) + (spring (first 2122) (second 2151) (length 48.166767)) + (spring (first 2114) (second 2143) (length 49.040936)) + (spring (first 2113) (second 2143) (length 62.801506)) + (spring (first 2140) (second 2114) (length 64.537094)) + (spring (first 2121) (second 2148) (length 49.163120)) + (spring (first 2122) (second 2156) (length 59.405308)) + (spring (first 2156) (second 2130) (length 64.536880)) + (spring (first 2130) (second 2164) (length 62.201317)) + (spring (first 2164) (second 2138) (length 65.115196)) + (spring (first 2167) (second 2137) (length 60.803520)) + (spring (first 2137) (second 2159) (length 64.444115)) + (spring (first 2159) (second 2129) (length 62.801388)) + (spring (first 1953) (second 2135) (length 63.030125)) + (spring (first 2042) (second 2044) (length 66.146263)) + (spring (first 1953) (second 2042) (length 47.484444)) + (spring (first 2042) (second 1952) (length 61.997581)) + (spring (first 1952) (second 2043) (length 47.481216)) + (spring (first 2043) (second 1949) (length 63.819668)) + (spring (first 1949) (second 2038) (length 49.481270)) + (spring (first 1948) (second 2038) (length 62.971069)) + (spring (first 2039) (second 1948) (length 49.498299)) + (spring (first 1921) (second 2039) (length 70.827194)) + (spring (first 2010) (second 1920) (length 61.997623)) + (spring (first 1920) (second 2011) (length 47.481384)) + (spring (first 1917) (second 2006) (length 49.481266)) + (spring (first 1916) (second 2007) (length 49.498730)) + (spring (first 1916) (second 2006) (length 62.970844)) + (spring (first 2007) (second 1917) (length 62.443184)) + (spring (first 2006) (second 1920) (length 65.787498)) + (spring (first 1917) (second 2011) (length 63.819332)) + (spring (first 2011) (second 1921) (length 60.262085)) + (spring (first 1921) (second 2010) (length 47.484268)) + (spring (first 2010) (second 1948) (length 67.114639)) + (spring (first 2039) (second 1949) (length 62.443295)) + (spring (first 2038) (second 1952) (length 65.786736)) + (spring (first 2043) (second 1953) (length 60.261715)) + (spring (first 2044) (second 2134) (length 62.970760)) + (spring (first 2135) (second 2045) (length 62.443146)) + (spring (first 2045) (second 2139) (length 63.819416)) + (spring (first 2139) (second 2049) (length 60.262119)) + (spring (first 2049) (second 2167) (length 70.827217)) + (spring (first 2077) (second 2166) (length 49.481209)) + (spring (first 2167) (second 2076) (length 49.498238)) + (spring (first 2080) (second 2171) (length 47.481213)) + (spring (first 2081) (second 2170) (length 47.484444)) + (spring (first 2170) (second 2080) (length 61.997795)) + (spring (first 2171) (second 2081) (length 60.262001)) + (spring (first 2080) (second 2166) (length 65.786781)) + (spring (first 2077) (second 2171) (length 63.819687)) + (spring (first 2166) (second 2076) (length 62.970837)) + (spring (first 2167) (second 2077) (length 62.443062)) + (spring (first 2076) (second 2138) (length 67.114777)) + (spring (first 2138) (second 2049) (length 47.484268)) + (spring (first 2048) (second 2139) (length 47.481384)) + (spring (first 2138) (second 2048) (length 61.997681)) + (spring (first 2048) (second 2134) (length 65.787453)) + (spring (first 2045) (second 2134) (length 49.481205)) + (spring (first 2135) (second 2044) (length 49.498730)) + (spring (first 1978) (second 2071) (length 41.674156)) + (spring (first 2068) (second 1977) (length 42.674198)) + (spring (first 1977) (second 2063) (length 56.553082)) + (spring (first 2063) (second 1969) (length 61.118324)) + (spring (first 1969) (second 2055) (length 56.744862)) + (spring (first 1961) (second 2055) (length 59.009262)) + (spring (first 1961) (second 2047) (length 56.552868)) + (spring (first 2047) (second 1953) (length 61.118153)) + (spring (first 2042) (second 2135) (length 41.674164)) + (spring (first 2135) (second 2041) (length 59.009304)) + (spring (first 2041) (second 2127) (length 56.553040)) + (spring (first 2127) (second 2033) (length 61.118149)) + (spring (first 2033) (second 2119) (length 56.744862)) + (spring (first 2119) (second 2025) (length 59.009003)) + (spring (first 2025) (second 2116) (length 42.674084)) + (spring (first 2018) (second 2111) (length 42.756134)) + (spring (first 2017) (second 2108) (length 43.754917)) + (spring (first 2108) (second 2018) (length 56.631538)) + (spring (first 2017) (second 2111) (length 61.118065)) + (spring (first 2111) (second 2025) (length 56.552765)) + (spring (first 2018) (second 2116) (length 60.423157)) + (spring (first 2116) (second 2026) (length 57.233986)) + (spring (first 2026) (second 2119) (length 41.674034)) + (spring (first 2124) (second 2033) (length 43.754917)) + (spring (first 2124) (second 2026) (length 57.595474)) + (spring (first 2034) (second 2124) (length 56.631458)) + (spring (first 2034) (second 2127) (length 42.756264)) + (spring (first 2034) (second 2132) (length 60.423153)) + (spring (first 2132) (second 2042) (length 57.233986)) + (spring (first 2041) (second 2132) (length 42.674206)) + (spring (first 1954) (second 2044) (length 56.631420)) + (spring (first 1954) (second 2047) (length 42.756138)) + (spring (first 1962) (second 2055) (length 41.673916)) + (spring (first 1962) (second 2052) (length 57.233814)) + (spring (first 2052) (second 1961) (length 42.674332)) + (spring (first 1954) (second 2052) (length 60.423199)) + (spring (first 2060) (second 1969) (length 43.754929)) + (spring (first 1962) (second 2060) (length 57.595558)) + (spring (first 2060) (second 1970) (length 56.631725)) + (spring (first 1970) (second 2063) (length 42.756508)) + (spring (first 1970) (second 2068) (length 60.423241)) + (spring (first 2068) (second 1978) (length 57.234108)) + (spring (first 1977) (second 2071) (length 59.009220)) + (spring (first 1953) (second 2044) (length 43.754940)) + (spring (first 1685) (second 2106) (length 39.439404)) + (spring (first 1682) (second 2098) (length 56.837093)) + (spring (first 2098) (second 1674) (length 56.873375)) + (spring (first 1674) (second 2090) (length 54.010036)) + (spring (first 2090) (second 1666) (length 57.610386)) + (spring (first 1666) (second 2082) (length 56.836964)) + (spring (first 2082) (second 1658) (length 56.873329)) + (spring (first 1658) (second 2170) (length 62.531120)) + (spring (first 2170) (second 1746) (length 57.610691)) + (spring (first 1746) (second 2162) (length 56.837009)) + (spring (first 2162) (second 1738) (length 56.873291)) + (spring (first 1738) (second 2154) (length 54.009953)) + (spring (first 2154) (second 1730) (length 57.610302)) + (spring (first 1730) (second 2146) (length 56.837097)) + (spring (first 2146) (second 1722) (length 56.873287)) + (spring (first 1722) (second 2145) (length 41.386887)) + (spring (first 2145) (second 1725) (length 57.526577)) + (spring (first 2146) (second 1725) (length 40.386066)) + (spring (first 2153) (second 1725) (length 56.884476)) + (spring (first 2153) (second 1730) (length 40.438305)) + (spring (first 2153) (second 1733) (length 55.423332)) + (spring (first 1733) (second 2161) (length 56.896732)) + (spring (first 2161) (second 1741) (length 57.526749)) + (spring (first 1741) (second 2169) (length 56.884907)) + (spring (first 1746) (second 2169) (length 40.438324)) + (spring (first 2169) (second 1749) (length 55.423161)) + (spring (first 1749) (second 2081) (length 63.679668)) + (spring (first 2081) (second 1661) (length 57.526443)) + (spring (first 1661) (second 2089) (length 56.884560)) + (spring (first 2089) (second 1669) (length 55.423286)) + (spring (first 2097) (second 1669) (length 56.896854)) + (spring (first 2097) (second 1677) (length 57.526833)) + (spring (first 1677) (second 2105) (length 56.884731)) + (spring (first 2105) (second 1685) (length 55.423416)) + (spring (first 2106) (second 1682) (length 57.610558)) + (spring (first 1682) (second 2105) (length 40.438309)) + (spring (first 2098) (second 1677) (length 40.386307)) + (spring (first 2097) (second 1674) (length 41.386887)) + (spring (first 2090) (second 1669) (length 39.439163)) + (spring (first 1666) (second 2089) (length 40.438305)) + (spring (first 2082) (second 1661) (length 40.386059)) + (spring (first 1658) (second 2081) (length 41.386883)) + (spring (first 2170) (second 1749) (length 39.439411)) + (spring (first 2154) (second 1733) (length 39.439163)) + (spring (first 1738) (second 2161) (length 41.386890)) + (spring (first 2162) (second 1741) (length 40.386311)) + ) + (colliders + )) + +;; EOF ;; diff --git a/examples/waaagggee45.construo b/examples/waaagggee45.construo new file mode 100644 index 0000000..943e93c --- /dev/null +++ b/examples/waaagggee45.construo @@ -0,0 +1,166 @@ + +(construo-scene + (particles + (particle (id 99072) (pos 137 594 0 ) (velocity 0 0 0 ) ) + (particle (id 99073) (pos 152 554 0 ) (velocity 0 0 0 ) ) + (particle (id 99074) (pos 254 552 0 ) (velocity 0 0 0 ) ) + (particle (id 99075) (pos 266 594 0 ) (velocity 0 0 0 ) ) + (particle (id 99076) (pos 172 508 0 ) (velocity 0 0 0 ) ) + (particle (id 99077) (pos 258 510 0 ) (velocity 0 0 0 ) ) + (particle (id 99078) (pos 352 509 0 ) (velocity 0 0 0 ) ) + (particle (id 99079) (pos 353 550 0 ) (velocity 0 0 0 ) ) + (particle (id 99080) (pos 354 595 0 ) (velocity 0 0 0 ) ) + (particle (id 99081) (pos 453 593 0 ) (velocity 0 0 0 ) ) + (particle (id 99082) (pos 445 545 0 ) (velocity 0 0 0 ) ) + (particle (id 99083) (pos 440 507 0 ) (velocity 0 0 0 ) ) + (particle (id 99084) (pos 518 508 0 ) (velocity 0 0 0 ) ) + (particle (id 99085) (pos 527 545 0 ) (velocity 0 0 0 ) ) + (particle (id 99086) (pos 543 593 0 ) (velocity 0 0 0 ) ) + (particle (id 99087) (pos 608 510 0 ) (velocity 0 0 0 ) ) + (particle (id 99088) (pos 621 539 0 ) (velocity 0 0 0 ) ) + (particle (id 99089) (pos 636 588 0 ) (velocity 0 0 0 ) ) + (particle (id 99149) (pos 409 400 0 ) (velocity 0 0 0 ) ) + (particle (id 99150) (pos 372 403 0 ) (velocity 0 0 0 ) ) + (particle (id 99151) (pos 369 315 0 ) (velocity 0 0 0 ) ) + (particle (id 99152) (pos 414 314 0 ) (velocity 0 0 0 ) ) + (particle (id 99153) (pos 373 224 0 ) (velocity 0 0 0 ) ) + (particle (id 99154) (pos 410 228 0 ) (velocity 0 0 0 ) ) + (particle (id 99155) (pos 376 120 0 ) (velocity 0 0 0 ) ) + (particle (id 99156) (pos 407 120 0 ) (velocity 0 0 0 ) ) + (particle (id 99209) (pos 284 119 0 ) (velocity 0 0 0 ) ) + (particle (id 99210) (pos 177 119 0 ) (velocity 0 0 0 ) ) + (particle (id 99211) (pos 177 73 0 ) (velocity 0 0 0 ) ) + (particle (id 99212) (pos 286 74 0 ) (velocity 0 0 0 ) ) + (particle (id 99213) (pos 384 81 0 ) (velocity 0 0 0 ) ) + (particle (id 99214) (pos 412 84 0 ) (velocity 0 0 0 ) ) + (particle (id 99215) (pos 491 116 0 ) (velocity 0 0 0 ) ) + (particle (id 99216) (pos 490 86 0 ) (velocity 0 0 0 ) ) + (particle (id 99217) (pos 595 85 0 ) (velocity 0 0 0 ) ) + (particle (id 99218) (pos 598 128 0 ) (velocity 0 0 0 ) ) + (particle (id 99255) (pos 399 3 0 ) (velocity 0 0 0 ) ) + (particle (id 99256) (pos 79 74 0 ) (velocity 0 0 0 ) ) + (particle (id 99257) (pos 82 114 0 ) (velocity 0 0 0 ) ) + (particle (id 99258) (pos 686 85 0 ) (velocity 0 0 0 ) ) + (particle (id 99259) (pos 691 130 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 99072)(second 99073)) + (spring (first 99073)(second 99074)) + (spring (first 99074)(second 99075)) + (spring (first 99075)(second 99072)) + (spring (first 99073)(second 99075)) + (spring (first 99074)(second 99072)) + (spring (first 99073)(second 99076)) + (spring (first 99076)(second 99077)) + (spring (first 99077)(second 99074)) + (spring (first 99077)(second 99073)) + (spring (first 99076)(second 99074)) + (spring (first 99077)(second 99078)) + (spring (first 99078)(second 99079)) + (spring (first 99079)(second 99074)) + (spring (first 99074)(second 99080)) + (spring (first 99080)(second 99079)) + (spring (first 99075)(second 99080)) + (spring (first 99079)(second 99075)) + (spring (first 99074)(second 99078)) + (spring (first 99077)(second 99079)) + (spring (first 99080)(second 99081)) + (spring (first 99081)(second 99082)) + (spring (first 99079)(second 99082)) + (spring (first 99082)(second 99080)) + (spring (first 99079)(second 99081)) + (spring (first 99082)(second 99083)) + (spring (first 99083)(second 99078)) + (spring (first 99082)(second 99078)) + (spring (first 99079)(second 99083)) + (spring (first 99083)(second 99084)) + (spring (first 99084)(second 99085)) + (spring (first 99085)(second 99082)) + (spring (first 99085)(second 99086)) + (spring (first 99086)(second 99081)) + (spring (first 99081)(second 99085)) + (spring (first 99082)(second 99086)) + (spring (first 99085)(second 99083)) + (spring (first 99084)(second 99082)) + (spring (first 99084)(second 99087)) + (spring (first 99087)(second 99088)) + (spring (first 99088)(second 99085)) + (spring (first 99086)(second 99089)) + (spring (first 99089)(second 99088)) + (spring (first 99088)(second 99086)) + (spring (first 99085)(second 99089)) + (spring (first 99084)(second 99088)) + (spring (first 99087)(second 99085)) + (spring (first 99083)(second 99149)) + (spring (first 99149)(second 99150)) + (spring (first 99150)(second 99078)) + (spring (first 99150)(second 99083)) + (spring (first 99149)(second 99078)) + (spring (first 99150)(second 99151)) + (spring (first 99151)(second 99152)) + (spring (first 99152)(second 99149)) + (spring (first 99149)(second 99151)) + (spring (first 99152)(second 99150)) + (spring (first 99151)(second 99153)) + (spring (first 99153)(second 99154)) + (spring (first 99154)(second 99152)) + (spring (first 99154)(second 99151)) + (spring (first 99153)(second 99152)) + (spring (first 99153)(second 99155)) + (spring (first 99155)(second 99156)) + (spring (first 99156)(second 99154)) + (spring (first 99156)(second 99153)) + (spring (first 99155)(second 99154)) + (spring (first 99077)(second 99150)) + (spring (first 99149)(second 99084)) + (spring (first 99087)(second 99149)) + (spring (first 99150)(second 99076)) + (spring (first 99077)(second 99151)) + (spring (first 99152)(second 99084)) + (spring (first 99084)(second 99154)) + (spring (first 99153)(second 99077)) + (spring (first 99155)(second 99209)) + (spring (first 99209)(second 99210)) + (spring (first 99210)(second 99211)) + (spring (first 99211)(second 99212)) + (spring (first 99212)(second 99209)) + (spring (first 99212)(second 99210)) + (spring (first 99211)(second 99209)) + (spring (first 99212)(second 99213)) + (spring (first 99213)(second 99155)) + (spring (first 99213)(second 99209)) + (spring (first 99212)(second 99155)) + (spring (first 99213)(second 99214)) + (spring (first 99214)(second 99156)) + (spring (first 99214)(second 99155)) + (spring (first 99213)(second 99156)) + (spring (first 99156)(second 99215)) + (spring (first 99215)(second 99216)) + (spring (first 99216)(second 99214)) + (spring (first 99215)(second 99214)) + (spring (first 99156)(second 99216)) + (spring (first 99216)(second 99217)) + (spring (first 99217)(second 99218)) + (spring (first 99218)(second 99215)) + (spring (first 99215)(second 99217)) + (spring (first 99216)(second 99218)) + (spring (first 99213)(second 99255)) + (spring (first 99255)(second 99214)) + (spring (first 99211)(second 99256)) + (spring (first 99256)(second 99257)) + (spring (first 99257)(second 99210)) + (spring (first 99257)(second 99211)) + (spring (first 99256)(second 99210)) + (spring (first 99217)(second 99258)) + (spring (first 99258)(second 99259)) + (spring (first 99259)(second 99218)) + (spring (first 99218)(second 99258)) + (spring (first 99217)(second 99259)) + (spring (first 99212)(second 99255)) + (spring (first 99255)(second 99216)) + (spring (first 99255)(second 99217)) + (spring (first 99255)(second 99211)) + (spring (first 99256)(second 99255)) + (spring (first 99258)(second 99255)) + ) +) diff --git a/examples/wheels.construo b/examples/wheels.construo new file mode 100644 index 0000000..2a6e4c7 --- /dev/null +++ b/examples/wheels.construo @@ -0,0 +1,178 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 0) (pos 337.391876 -389.228180) (velocity 1076.845703 -616.580322) (fixed #t) (mass 0.100000)) + (particle (id 1) (pos 383.036285 -175.092194) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 2) (pos 334.245361 -162.514465) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 3) (pos 282.435730 -611.488098) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 4) (pos 350.646759 -629.913452) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 6) (pos 554.675354 -453.208649) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 7) (pos 574.396545 -379.418121) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 8) (pos 118.398674 -326.054962) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 9) (pos 96.013260 -405.138000) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 11) (pos 328.951691 -385.992828) (velocity 1076.845703 -616.580322) (fixed #t) (mass 0.100000)) + (particle (id 12) (pos 181.249939 -224.370071) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 13) (pos 142.652588 -256.758118) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 14) (pos 477.850952 -559.914185) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 15) (pos 532.496216 -515.124146) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 16) (pos 507.323608 -246.389023) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 17) (pos 458.746582 -187.445938) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 18) (pos 150.243530 -527.456909) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 19) (pos 201.577438 -591.644287) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 20) (pos 328.216064 -388.024567) (velocity 1076.845703 -616.580322) (fixed #t) (mass 0.100000)) + (particle (id 21) (pos 165.908157 -241.075928) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 22) (pos 130.542419 -276.964935) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 23) (pos 492.877808 -547.104248) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 24) (pos 543.047913 -497.352539) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 25) (pos 492.603638 -232.197113) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 26) (pos 438.676453 -178.105865) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 27) (pos 163.669052 -545.735962) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 28) (pos 220.836609 -604.787781) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 29) (pos 321.181610 -393.701080) (velocity 1076.845703 -616.580322) (fixed #t) (mass 0.100000)) + (particle (id 30) (pos 107.260292 -440.340973) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 31) (pos 115.903633 -489.979858) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 32) (pos 546.342224 -352.197845) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 33) (pos 535.026306 -282.454163) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 34) (pos 289.951874 -169.357086) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 35) (pos 214.590027 -181.791168) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 36) (pos 353.851715 -619.269897) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 37) (pos 435.133728 -607.082947) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 38) (pos 339.878052 -379.389313) (velocity 1076.845703 -616.580322) (fixed #t) (mass 0.100000)) + (particle (id 39) (pos 207.722702 -204.824966) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 40) (pos 166.300644 -233.512421) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 41) (pos 472.090393 -566.310547) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 42) (pos 530.636169 -526.755127) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 43) (pos 530.372559 -256.843689) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 44) (pos 487.442932 -193.669327) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 45) (pos 148.876282 -503.756653) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 46) (pos 194.067612 -572.407715) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 47) (pos 331.910828 -383.658966) (velocity 1076.845703 -616.580322) (fixed #t) (mass 0.100000)) + (particle (id 48) (pos 113.047661 -389.710968) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 49) (pos 112.310661 -440.091461) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 50) (pos 560.861877 -384.744049) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 51) (pos 562.710754 -314.112335) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 52) (pos 342.937988 -157.420456) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 53) (pos 266.578339 -155.625793) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 54) (pos 322.070862 -611.369324) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 55) (pos 404.201050 -614.507507) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 56) (pos 332.967041 -385.544098) (velocity 1076.845703 -616.580322) (fixed #t) (mass 0.100000)) + (particle (id 57) (pos 115.653923 -412.242493) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 58) (pos 119.678757 -462.467560) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 59) (pos 560.997253 -364.998596) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 60) (pos 556.165710 -294.508087) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 61) (pos 322.575348 -159.276047) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 62) (pos 246.387711 -164.701813) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 63) (pos 344.678955 -613.165466) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 64) (pos 426.739014 -608.531799) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 65) (pos 332.661346 -394.578156) (velocity 1076.845703 -616.580322) (fixed #t) (mass 0.100000)) + (particle (id 66) (pos 228.055237 -586.919434) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 67) (pos 271.261536 -612.841125) (velocity -250.062302 -7.691269) (fixed #f) (mass 0.100000)) + (particle (id 68) (pos 448.503235 -197.093277) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 69) (pos 388.339203 -160.046555) (velocity 179.397339 -7.953857) (fixed #f) (mass 0.100000)) + (particle (id 70) (pos 142.512360 -271.497284) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 71) (pos 102.637047 -336.643524) (velocity 9.163147 231.178833) (fixed #f) (mass 0.100000)) + (particle (id 72) (pos 524.679688 -517.369995) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + (particle (id 73) (pos 568.613098 -447.906769) (velocity 1.372681 -227.058167) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 0) (second 1) (length 218.946640)) + (spring (first 1) (second 2) (length 50.386044)) + (spring (first 2) (second 0) (length 226.735550)) + (spring (first 0) (second 3) (length 228.953384)) + (spring (first 3) (second 4) (length 70.655769)) + (spring (first 0) (second 4) (length 241.049973)) + (spring (first 0) (second 6) (length 226.507416)) + (spring (first 6) (second 7) (length 76.380409)) + (spring (first 7) (second 0) (length 237.207611)) + (spring (first 0) (second 8) (length 227.922958)) + (spring (first 8) (second 9) (length 82.190231)) + (spring (first 9) (second 0) (length 241.902374)) + (spring (first 11) (second 12) (length 218.946854)) + (spring (first 12) (second 13) (length 50.385921)) + (spring (first 13) (second 11) (length 226.735458)) + (spring (first 11) (second 14) (length 228.953339)) + (spring (first 14) (second 15) (length 70.655876)) + (spring (first 11) (second 15) (length 241.050354)) + (spring (first 11) (second 16) (length 226.507751)) + (spring (first 16) (second 17) (length 76.380722)) + (spring (first 17) (second 11) (length 237.207886)) + (spring (first 11) (second 18) (length 227.922562)) + (spring (first 18) (second 19) (length 82.189964)) + (spring (first 19) (second 11) (length 241.902298)) + (spring (first 20) (second 21) (length 218.946930)) + (spring (first 21) (second 22) (length 50.386074)) + (spring (first 22) (second 20) (length 226.735779)) + (spring (first 20) (second 23) (length 228.953781)) + (spring (first 23) (second 24) (length 70.656013)) + (spring (first 20) (second 24) (length 241.050476)) + (spring (first 20) (second 25) (length 226.507111)) + (spring (first 25) (second 26) (length 76.380653)) + (spring (first 26) (second 20) (length 237.207413)) + (spring (first 20) (second 27) (length 227.922363)) + (spring (first 27) (second 28) (length 82.190308)) + (spring (first 28) (second 20) (length 241.902130)) + (spring (first 29) (second 30) (length 218.946594)) + (spring (first 30) (second 31) (length 50.385777)) + (spring (first 31) (second 29) (length 226.734756)) + (spring (first 29) (second 32) (length 228.953751)) + (spring (first 32) (second 33) (length 70.655724)) + (spring (first 29) (second 33) (length 241.050674)) + (spring (first 29) (second 34) (length 226.507233)) + (spring (first 34) (second 35) (length 76.380722)) + (spring (first 35) (second 29) (length 237.207870)) + (spring (first 29) (second 36) (length 227.922409)) + (spring (first 36) (second 37) (length 82.190552)) + (spring (first 37) (second 29) (length 241.902679)) + (spring (first 38) (second 39) (length 218.946899)) + (spring (first 39) (second 40) (length 50.386078)) + (spring (first 40) (second 38) (length 226.735931)) + (spring (first 38) (second 41) (length 228.953384)) + (spring (first 41) (second 42) (length 70.655777)) + (spring (first 38) (second 42) (length 241.050491)) + (spring (first 38) (second 43) (length 226.507370)) + (spring (first 43) (second 44) (length 76.380318)) + (spring (first 44) (second 38) (length 237.207306)) + (spring (first 38) (second 45) (length 227.923035)) + (spring (first 45) (second 46) (length 82.190170)) + (spring (first 46) (second 38) (length 241.902435)) + (spring (first 47) (second 48) (length 218.946823)) + (spring (first 48) (second 49) (length 50.385883)) + (spring (first 49) (second 47) (length 226.735214)) + (spring (first 47) (second 50) (length 228.953629)) + (spring (first 50) (second 51) (length 70.655907)) + (spring (first 47) (second 51) (length 241.050491)) + (spring (first 47) (second 52) (length 226.507095)) + (spring (first 52) (second 53) (length 76.380737)) + (spring (first 53) (second 47) (length 237.207642)) + (spring (first 47) (second 54) (length 227.922867)) + (spring (first 54) (second 55) (length 82.190125)) + (spring (first 55) (second 47) (length 241.902725)) + (spring (first 56) (second 57) (length 218.947021)) + (spring (first 57) (second 58) (length 50.386078)) + (spring (first 58) (second 56) (length 226.735779)) + (spring (first 56) (second 59) (length 228.953918)) + (spring (first 59) (second 60) (length 70.655899)) + (spring (first 56) (second 60) (length 241.050201)) + (spring (first 56) (second 61) (length 226.506546)) + (spring (first 61) (second 62) (length 76.380592)) + (spring (first 62) (second 56) (length 237.207291)) + (spring (first 56) (second 63) (length 227.922485)) + (spring (first 63) (second 64) (length 82.190781)) + (spring (first 64) (second 56) (length 241.902252)) + (spring (first 65) (second 66) (length 218.946579)) + (spring (first 66) (second 67) (length 50.385696)) + (spring (first 67) (second 65) (length 226.734787)) + (spring (first 65) (second 68) (length 228.953308)) + (spring (first 68) (second 69) (length 70.655296)) + (spring (first 65) (second 69) (length 241.049988)) + (spring (first 65) (second 70) (length 226.507263)) + (spring (first 70) (second 71) (length 76.381104)) + (spring (first 71) (second 65) (length 237.207932)) + (spring (first 65) (second 72) (length 227.922974)) + (spring (first 72) (second 73) (length 82.190536)) + (spring (first 73) (second 65) (length 241.903229)) + )) + +;; EOF ;; diff --git a/examples/wooble.construo b/examples/wooble.construo new file mode 100644 index 0000000..f7b52c2 --- /dev/null +++ b/examples/wooble.construo @@ -0,0 +1,1233 @@ +;; Written by construo 0.2.1rc1 +(construo-scene + (version 3) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 250) (pos 807.231445 519.451538) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 251) (pos 837.231445 519.451538) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 252) (pos 807.231445 489.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 253) (pos 837.231445 489.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 254) (pos 807.231445 459.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 255) (pos 837.231445 459.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 256) (pos 807.231445 429.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 257) (pos 837.231445 429.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 258) (pos 807.231445 399.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 259) (pos 837.231445 399.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 260) (pos 807.231445 369.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 261) (pos 837.231445 369.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 262) (pos 807.231445 339.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 263) (pos 837.231445 339.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 264) (pos 807.231445 309.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 265) (pos 837.231445 309.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 266) (pos 807.231445 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 267) (pos 837.231445 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 288) (pos 1167.231323 519.451538) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 290) (pos 1167.231323 489.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 292) (pos 1167.231323 459.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 294) (pos 1167.231323 429.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 296) (pos 1167.231323 399.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 298) (pos 1167.231323 369.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 300) (pos 1167.231323 339.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 302) (pos 1167.231323 309.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 304) (pos 1167.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 314) (pos 867.231445 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 316) (pos 897.231445 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 318) (pos 927.231445 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 320) (pos 957.231445 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 321) (pos 987.231445 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 324) (pos 1017.231445 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 326) (pos 1047.231445 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 328) (pos 1077.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 330) (pos 1107.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 333) (pos 1137.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 338) (pos 807.231445 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 339) (pos 837.231445 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 340) (pos 1167.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 342) (pos 837.231445 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 343) (pos 867.231445 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 344) (pos 867.231445 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 345) (pos 897.231445 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 346) (pos 897.231445 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 347) (pos 927.231445 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 348) (pos 927.231445 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 349) (pos 957.231445 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 350) (pos 957.231445 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 351) (pos 987.231445 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 352) (pos 987.231445 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 353) (pos 1017.231445 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 354) (pos 1017.231445 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 355) (pos 1047.231445 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 356) (pos 1047.231445 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 357) (pos 1077.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 358) (pos 1077.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 359) (pos 1107.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 360) (pos 1107.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 361) (pos 1137.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 362) (pos 1167.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 363) (pos 1137.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 365) (pos 807.231445 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 366) (pos 807.231445 189.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 367) (pos 837.231445 189.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 368) (pos 807.231445 159.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 369) (pos 837.231445 159.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 370) (pos 807.231445 129.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 371) (pos 837.231445 129.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 372) (pos 807.231445 99.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 373) (pos 837.231445 99.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 374) (pos 807.231445 69.451637) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 375) (pos 837.231445 69.451637) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 376) (pos 807.231445 39.451622) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 377) (pos 837.231445 39.451622) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 378) (pos 807.231445 9.451639) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 379) (pos 837.231445 9.451639) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 380) (pos 807.231445 -20.548382) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 381) (pos 837.231445 -20.548382) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 382) (pos 807.231445 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 383) (pos 837.231445 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 384) (pos 1167.231323 189.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 386) (pos 1167.231323 159.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 388) (pos 1167.231323 129.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 390) (pos 1167.231323 99.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 392) (pos 1167.231323 69.451637) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 394) (pos 1167.231323 39.451622) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 396) (pos 1167.231323 9.451639) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 398) (pos 1167.231323 -20.548382) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 400) (pos 1167.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 402) (pos 837.231445 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 403) (pos 867.231445 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 404) (pos 867.231445 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 405) (pos 897.231445 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 406) (pos 897.231445 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 407) (pos 927.231445 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 408) (pos 927.231445 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 409) (pos 957.231445 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 410) (pos 957.231445 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 411) (pos 987.231445 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 412) (pos 987.231445 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 413) (pos 1017.231445 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 414) (pos 1017.231445 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 415) (pos 1047.231445 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 416) (pos 1047.231445 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 417) (pos 1077.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 418) (pos 1077.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 419) (pos 1107.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 420) (pos 1107.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 421) (pos 1137.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 422) (pos 1167.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 423) (pos 1137.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 425) (pos 807.231445 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 426) (pos 807.231445 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 427) (pos 837.231445 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 428) (pos 1167.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 430) (pos 837.231445 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 431) (pos 867.231445 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 432) (pos 867.231445 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 433) (pos 897.231445 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 434) (pos 897.231445 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 435) (pos 927.231445 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 436) (pos 927.231445 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 437) (pos 957.231445 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 438) (pos 957.231445 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 439) (pos 987.231445 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 440) (pos 987.231445 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 441) (pos 1017.231445 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 442) (pos 1017.231445 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 443) (pos 1047.231445 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 444) (pos 1047.231445 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 445) (pos 1077.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 446) (pos 1077.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 447) (pos 1107.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 448) (pos 1107.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 449) (pos 1137.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 450) (pos 1167.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 451) (pos 1137.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 453) (pos 807.231445 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 454) (pos 1197.231323 519.451538) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 455) (pos 1227.231323 519.451538) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 456) (pos 1197.231323 489.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 457) (pos 1227.231323 489.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 458) (pos 1197.231323 459.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 459) (pos 1227.231323 459.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 460) (pos 1197.231323 429.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 461) (pos 1227.231323 429.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 462) (pos 1197.231323 399.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 463) (pos 1227.231323 399.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 464) (pos 1197.231323 369.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 465) (pos 1227.231323 369.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 466) (pos 1197.231323 339.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 467) (pos 1227.231323 339.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 468) (pos 1197.231323 309.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 469) (pos 1227.231323 309.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 470) (pos 1197.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 471) (pos 1227.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 472) (pos 1557.231323 519.451538) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 473) (pos 1587.231323 519.451538) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 474) (pos 1557.231323 489.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 475) (pos 1587.231323 489.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 476) (pos 1557.231323 459.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 477) (pos 1587.231323 459.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 478) (pos 1557.231323 429.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 479) (pos 1587.231323 429.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 480) (pos 1557.231323 399.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 481) (pos 1587.231323 399.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 482) (pos 1557.231323 369.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 483) (pos 1587.231323 369.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 484) (pos 1557.231323 339.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 485) (pos 1587.231323 339.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 486) (pos 1557.231323 309.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 487) (pos 1587.231323 309.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 488) (pos 1557.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 489) (pos 1587.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 490) (pos 1257.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 491) (pos 1287.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 492) (pos 1317.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 493) (pos 1347.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 494) (pos 1377.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 495) (pos 1407.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 496) (pos 1437.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 497) (pos 1467.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 498) (pos 1497.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 499) (pos 1527.231323 279.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 500) (pos 1197.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 501) (pos 1227.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 502) (pos 1557.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 503) (pos 1587.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 504) (pos 1227.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 505) (pos 1257.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 506) (pos 1257.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 507) (pos 1287.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 508) (pos 1287.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 509) (pos 1317.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 510) (pos 1317.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 511) (pos 1347.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 512) (pos 1347.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 513) (pos 1377.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 514) (pos 1377.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 515) (pos 1407.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 516) (pos 1407.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 517) (pos 1437.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 518) (pos 1437.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 519) (pos 1467.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 520) (pos 1467.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 521) (pos 1497.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 522) (pos 1497.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 523) (pos 1527.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 524) (pos 1557.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 525) (pos 1527.231323 579.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 526) (pos 1587.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 527) (pos 1197.231323 549.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 528) (pos 1197.231323 189.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 529) (pos 1227.231323 189.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 530) (pos 1197.231323 159.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 531) (pos 1227.231323 159.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 532) (pos 1197.231323 129.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 533) (pos 1227.231323 129.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 534) (pos 1197.231323 99.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 535) (pos 1227.231323 99.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 536) (pos 1197.231323 69.451637) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 537) (pos 1227.231323 69.451637) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 538) (pos 1197.231323 39.451622) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 539) (pos 1227.231323 39.451622) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 540) (pos 1197.231323 9.451639) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 541) (pos 1227.231323 9.451639) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 542) (pos 1197.231323 -20.548382) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 543) (pos 1227.231323 -20.548382) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 544) (pos 1197.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 545) (pos 1227.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 546) (pos 1557.231323 189.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 547) (pos 1587.231323 189.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 548) (pos 1557.231323 159.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 549) (pos 1587.231323 159.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 550) (pos 1557.231323 129.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 551) (pos 1587.231323 129.451599) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 552) (pos 1557.231323 99.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 553) (pos 1587.231323 99.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 554) (pos 1557.231323 69.451637) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 555) (pos 1587.231323 69.451637) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 556) (pos 1557.231323 39.451622) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 557) (pos 1587.231323 39.451622) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 558) (pos 1557.231323 9.451639) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 559) (pos 1587.231323 9.451639) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 560) (pos 1557.231323 -20.548382) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 561) (pos 1587.231323 -20.548382) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 562) (pos 1557.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 563) (pos 1587.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 564) (pos 1227.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 565) (pos 1257.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 566) (pos 1257.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 567) (pos 1287.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 568) (pos 1287.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 569) (pos 1317.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 570) (pos 1317.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 571) (pos 1347.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 572) (pos 1347.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 573) (pos 1377.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 574) (pos 1377.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 575) (pos 1407.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 576) (pos 1407.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 577) (pos 1437.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 578) (pos 1437.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 579) (pos 1467.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 580) (pos 1467.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 581) (pos 1497.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 582) (pos 1497.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 583) (pos 1527.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 584) (pos 1557.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 585) (pos 1527.231323 -50.548397) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 586) (pos 1587.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 587) (pos 1197.231323 -80.548355) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 588) (pos 1197.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 589) (pos 1227.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 590) (pos 1557.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 591) (pos 1587.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 592) (pos 1227.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 593) (pos 1257.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 594) (pos 1257.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 595) (pos 1287.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 596) (pos 1287.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 597) (pos 1317.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 598) (pos 1317.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 599) (pos 1347.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 600) (pos 1347.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 601) (pos 1377.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 602) (pos 1377.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 603) (pos 1407.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 604) (pos 1407.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 605) (pos 1437.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 606) (pos 1437.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 607) (pos 1467.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 608) (pos 1467.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 609) (pos 1497.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 610) (pos 1497.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 611) (pos 1527.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 612) (pos 1557.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 613) (pos 1527.231323 249.451614) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 614) (pos 1587.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + (particle (id 615) (pos 1197.231323 219.451630) (velocity 0.000000 0.000000) (fixed #f) (mass 0.100000)) + ) + (springs + (spring (first 365) (second 342) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 365) (second 250) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 251) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 342) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 365) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 342) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 250) (second 252) (length 29.999908) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 253) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 251) (length 29.999908) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 251) (length 42.426342) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 250) (length 42.426342) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 252) (second 254) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 255) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 253) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 255) (second 252) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 254) (second 253) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 257) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 258) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 259) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 259) (second 257) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 259) (second 256) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 258) (second 257) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 261) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 262) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 263) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 261) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 263) (second 260) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 261) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 259) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 258) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 260) (second 259) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 261) (second 258) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 262) (second 264) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 265) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 263) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 263) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 265) (second 262) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 264) (second 266) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 267) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 265) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 264) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 265) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 255) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 254) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 256) (second 254) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 257) (second 255) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 362) (second 527) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 362) (second 288) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 454) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 454) (second 527) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 454) (second 362) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 527) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 288) (second 290) (length 29.999908) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 456) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 456) (second 454) (length 29.999908) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 454) (length 42.426342) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 456) (second 288) (length 42.426342) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 290) (second 292) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 458) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 458) (second 456) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 458) (second 290) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 292) (second 456) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 460) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 296) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 462) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 462) (second 460) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 462) (second 294) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 296) (second 460) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 464) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 300) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 466) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 466) (second 464) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 466) (second 298) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 464) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 464) (second 462) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 296) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 298) (second 462) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 464) (second 296) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 302) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 468) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 468) (second 466) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 466) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 468) (second 300) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 302) (second 304) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 470) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 470) (second 468) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 470) (second 302) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 468) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 458) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 460) (second 292) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 294) (second 292) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 460) (second 458) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 266) (second 427) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 427) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 432) (second 314) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 267) (second 314) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 432) (second 427) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 432) (second 434) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 314) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 434) (second 314) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 432) (second 316) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 434) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 432) (second 267) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 427) (second 314) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 434) (second 436) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 318) (second 436) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 318) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 318) (second 434) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 436) (second 316) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 436) (second 438) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 438) (second 320) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 318) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 438) (second 318) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 436) (second 320) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 321) (second 439) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 442) (second 324) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 321) (second 324) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 442) (second 439) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 442) (second 444) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 326) (second 324) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 444) (second 324) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 442) (second 326) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 326) (second 444) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 442) (second 321) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 439) (second 324) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 444) (second 446) (length 29.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 446) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 326) (second 328) (length 29.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 444) (length 42.426331) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 446) (second 326) (length 42.426331) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 446) (second 448) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 448) (second 330) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 328) (second 330) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 448) (second 328) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 446) (second 330) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 438) (second 321) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 439) (second 320) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 438) (second 439) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 321) (second 320) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 448) (second 451) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 451) (second 428) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 428) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 428) (second 333) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 330) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 451) (second 333) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 333) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 451) (second 330) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 448) (second 333) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 428) (second 470) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 304) (second 451) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 333) (second 302) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 314) (second 265) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 428) (second 588) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 470) (second 588) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 588) (second 304) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 427) (second 426) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 426) (second 266) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 426) (second 267) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 339) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 340) (second 500) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 338) (second 342) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 339) (second 342) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 343) (second 344) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 339) (second 344) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 343) (second 342) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 343) (second 345) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 344) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 344) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 343) (second 346) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 345) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 343) (second 339) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 342) (second 344) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 345) (second 347) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 347) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 346) (second 348) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 345) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 346) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 349) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 350) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 348) (second 350) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 348) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 347) (second 350) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 352) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 354) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 354) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 352) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 355) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 356) (second 354) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 355) (second 354) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 356) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 356) (second 355) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 353) (second 351) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 354) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 355) (second 357) (length 29.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 358) (second 357) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 356) (second 358) (length 29.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 358) (second 355) (length 42.426319) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 357) (second 356) (length 42.426319) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 357) (second 359) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 360) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 358) (second 360) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 358) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 357) (second 360) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 351) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 352) (second 350) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 349) (second 352) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 351) (second 350) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 361) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 362) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 340) (second 362) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 362) (second 363) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 363) (second 360) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 363) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 340) (second 363) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 360) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 363) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 362) (second 500) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 340) (second 361) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 362) (second 527) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 500) (second 527) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 527) (second 340) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 342) (second 365) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 365) (second 338) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 365) (second 339) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 251) (second 343) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 361) (second 288) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 316) (second 263) (length 84.852791) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 253) (second 345) (length 84.852791) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 359) (second 290) (length 84.852791) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 300) (second 330) (length 84.852791) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 453) (second 430) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 453) (second 366) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 366) (second 367) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 367) (second 430) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 367) (second 453) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 366) (second 430) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 366) (second 368) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 368) (second 369) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 369) (second 367) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 368) (second 367) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 369) (second 366) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 368) (second 370) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 370) (second 371) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 371) (second 369) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 371) (second 368) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 370) (second 369) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 372) (second 373) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 372) (second 374) (length 29.999977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 374) (second 375) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 375) (second 373) (length 29.999977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 375) (second 372) (length 42.426392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 374) (second 373) (length 42.426392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 376) (second 377) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 376) (second 378) (length 29.999983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 378) (second 379) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 379) (second 377) (length 29.999983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 379) (second 376) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 378) (second 377) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 377) (second 375) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 376) (second 374) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 376) (second 375) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 377) (second 374) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 378) (second 380) (length 30.000021) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 380) (second 381) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 381) (second 379) (length 30.000021) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 380) (second 379) (length 42.426422) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 381) (second 378) (length 42.426422) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 380) (second 382) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 382) (second 383) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 383) (second 381) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 383) (second 380) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 382) (second 381) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 372) (second 371) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 373) (second 370) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 372) (second 370) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 373) (second 371) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 450) (second 615) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 450) (second 384) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 384) (second 528) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 528) (second 615) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 528) (second 450) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 384) (second 615) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 384) (second 386) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 386) (second 530) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 530) (second 528) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 386) (second 528) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 530) (second 384) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 386) (second 388) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 388) (second 532) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 532) (second 530) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 532) (second 386) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 388) (second 530) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 390) (second 534) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 390) (second 392) (length 29.999977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 392) (second 536) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 536) (second 534) (length 29.999977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 536) (second 390) (length 42.426392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 392) (second 534) (length 42.426392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 394) (second 538) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 394) (second 396) (length 29.999983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 396) (second 540) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 540) (second 538) (length 29.999983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 540) (second 394) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 396) (second 538) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 538) (second 536) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 394) (second 392) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 394) (second 536) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 538) (second 392) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 396) (second 398) (length 30.000021) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 398) (second 542) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 542) (second 540) (length 30.000021) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 398) (second 540) (length 42.426422) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 542) (second 396) (length 42.426422) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 398) (second 400) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 400) (second 544) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 544) (second 542) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 544) (second 398) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 400) (second 542) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 390) (second 532) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 534) (second 388) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 390) (second 388) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 534) (second 532) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 382) (second 402) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 383) (second 402) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 403) (second 404) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 383) (second 404) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 403) (second 402) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 403) (second 405) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 406) (second 404) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 405) (second 404) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 403) (second 406) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 406) (second 405) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 403) (second 383) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 402) (second 404) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 405) (second 407) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 408) (second 407) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 406) (second 408) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 408) (second 405) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 407) (second 406) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 407) (second 409) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 409) (second 410) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 408) (second 410) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 409) (second 408) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 407) (second 410) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 411) (second 412) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 413) (second 414) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 411) (second 414) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 413) (second 412) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 413) (second 415) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 416) (second 414) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 415) (second 414) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 413) (second 416) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 416) (second 415) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 413) (second 411) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 412) (second 414) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 415) (second 417) (length 29.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 418) (second 417) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 416) (second 418) (length 29.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 418) (second 415) (length 42.426292) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 417) (second 416) (length 42.426292) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 417) (second 419) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 419) (second 420) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 418) (second 420) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 419) (second 418) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 417) (second 420) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 409) (second 411) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 412) (second 410) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 409) (second 412) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 411) (second 410) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 419) (second 421) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 421) (second 422) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 400) (second 422) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 422) (second 423) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 423) (second 420) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 421) (second 423) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 400) (second 423) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 421) (second 420) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 419) (second 423) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 422) (second 544) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 400) (second 421) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 423) (second 398) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 404) (second 381) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 422) (second 587) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 544) (second 587) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 587) (second 400) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 402) (second 425) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 425) (second 382) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 425) (second 383) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 426) (second 427) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 428) (second 588) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 426) (second 430) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 427) (second 430) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 431) (second 432) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 427) (second 432) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 431) (second 430) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 431) (second 433) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 434) (second 432) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 433) (second 432) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 431) (second 434) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 434) (second 433) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 431) (second 427) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 430) (second 432) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 433) (second 435) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 436) (second 435) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 434) (second 436) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 436) (second 433) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 435) (second 434) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 435) (second 437) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 437) (second 438) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 436) (second 438) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 437) (second 436) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 435) (second 438) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 439) (second 440) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 441) (second 442) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 439) (second 442) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 441) (second 440) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 441) (second 443) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 444) (second 442) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 443) (second 442) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 441) (second 444) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 444) (second 443) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 441) (second 439) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 440) (second 442) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 443) (second 445) (length 29.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 446) (second 445) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 444) (second 446) (length 29.999878) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 446) (second 443) (length 42.426311) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 445) (second 444) (length 42.426311) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 445) (second 447) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 447) (second 448) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 446) (second 448) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 447) (second 446) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 445) (second 448) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 437) (second 439) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 440) (second 438) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 437) (second 440) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 439) (second 438) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 447) (second 449) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 449) (second 450) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 428) (second 450) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 450) (second 451) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 451) (second 448) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 449) (second 451) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 428) (second 451) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 449) (second 448) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 447) (second 451) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 450) (second 588) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 428) (second 449) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 450) (second 615) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 588) (second 615) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 615) (second 428) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 430) (second 453) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 453) (second 426) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 453) (second 427) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 367) (second 431) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 449) (second 384) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 406) (second 379) (length 84.852844) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 369) (second 433) (length 84.852821) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 447) (second 386) (length 84.852821) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 396) (second 420) (length 84.852844) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 527) (second 504) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 527) (second 454) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 454) (second 455) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 455) (second 504) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 455) (second 527) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 454) (second 504) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 454) (second 456) (length 29.999908) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 456) (second 457) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 457) (second 455) (length 29.999908) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 456) (second 455) (length 42.426342) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 457) (second 454) (length 42.426342) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 456) (second 458) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 458) (second 459) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 459) (second 457) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 459) (second 456) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 458) (second 457) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 460) (second 461) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 460) (second 462) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 462) (second 463) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 463) (second 461) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 463) (second 460) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 462) (second 461) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 464) (second 465) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 464) (second 466) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 466) (second 467) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 467) (second 465) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 467) (second 464) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 466) (second 465) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 465) (second 463) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 464) (second 462) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 464) (second 463) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 465) (second 462) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 466) (second 468) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 468) (second 469) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 469) (second 467) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 468) (second 467) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 469) (second 466) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 468) (second 470) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 470) (second 471) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 471) (second 469) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 471) (second 468) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 470) (second 469) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 460) (second 459) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 461) (second 458) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 460) (second 458) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 461) (second 459) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 524) (second 526) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 524) (second 472) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 472) (second 473) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 473) (second 526) (length 30.000061) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 473) (second 524) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 472) (second 526) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 472) (second 474) (length 29.999908) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 474) (second 475) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 475) (second 473) (length 29.999908) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 474) (second 473) (length 42.426342) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 475) (second 472) (length 42.426342) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 474) (second 476) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 476) (second 477) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 477) (second 475) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 477) (second 474) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 476) (second 475) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 478) (second 479) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 478) (second 480) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 480) (second 481) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 481) (second 479) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 481) (second 478) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 480) (second 479) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 482) (second 483) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 482) (second 484) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 484) (second 485) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 485) (second 483) (length 30.000031) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 485) (second 482) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 484) (second 483) (length 42.426430) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 483) (second 481) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 482) (second 480) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 482) (second 481) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 483) (second 480) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 484) (second 486) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 486) (second 487) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 487) (second 485) (length 29.999969) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 486) (second 485) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 487) (second 484) (length 42.426384) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 486) (second 488) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 488) (second 489) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 489) (second 487) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 489) (second 486) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 488) (second 487) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 478) (second 477) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 479) (second 476) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 478) (second 476) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 479) (second 477) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 470) (second 589) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 471) (second 589) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 594) (second 490) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 471) (second 490) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 594) (second 589) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 594) (second 596) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 491) (second 490) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 596) (second 490) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 594) (second 491) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 491) (second 596) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 594) (second 471) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 589) (second 490) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 596) (second 598) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 492) (second 598) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 491) (second 492) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 492) (second 596) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 598) (second 491) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 598) (second 600) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 600) (second 493) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 492) (second 493) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 600) (second 492) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 598) (second 493) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 494) (second 601) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 604) (second 495) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 494) (second 495) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 604) (second 601) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 604) (second 606) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 496) (second 495) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 606) (second 495) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 604) (second 496) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 496) (second 606) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 604) (second 494) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 601) (second 495) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 606) (second 608) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 497) (second 608) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 496) (second 497) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 497) (second 606) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 608) (second 496) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 608) (second 610) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 610) (second 498) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 497) (second 498) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 610) (second 497) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 608) (second 498) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 600) (second 494) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 601) (second 493) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 600) (second 601) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 494) (second 493) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 610) (second 613) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 613) (second 590) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 488) (second 590) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 590) (second 499) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 499) (second 498) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 613) (second 499) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 488) (second 499) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 613) (second 498) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 610) (second 499) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 590) (second 489) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 488) (second 613) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 499) (second 486) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 490) (second 469) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 590) (second 591) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 489) (second 591) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 591) (second 488) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 589) (second 588) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 588) (second 470) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 588) (second 471) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 500) (second 501) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 502) (second 503) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 500) (second 504) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 501) (second 504) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 505) (second 506) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 501) (second 506) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 505) (second 504) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 505) (second 507) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 508) (second 506) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 507) (second 506) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 505) (second 508) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 508) (second 507) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 505) (second 501) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 504) (second 506) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 507) (second 509) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 510) (second 509) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 508) (second 510) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 510) (second 507) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 509) (second 508) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 509) (second 511) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 511) (second 512) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 510) (second 512) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 511) (second 510) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 509) (second 512) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 513) (second 514) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 515) (second 516) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 513) (second 516) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 515) (second 514) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 515) (second 517) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 518) (second 516) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 517) (second 516) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 515) (second 518) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 518) (second 517) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 515) (second 513) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 514) (second 516) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 517) (second 519) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 520) (second 519) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 518) (second 520) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 520) (second 517) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 519) (second 518) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 519) (second 521) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 521) (second 522) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 520) (second 522) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 521) (second 520) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 519) (second 522) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 511) (second 513) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 514) (second 512) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 511) (second 514) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 513) (second 512) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 521) (second 523) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 523) (second 524) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 502) (second 524) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 524) (second 525) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 525) (second 522) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 523) (second 525) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 502) (second 525) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 523) (second 522) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 521) (second 525) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 524) (second 503) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 502) (second 523) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 524) (second 526) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 503) (second 526) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 526) (second 502) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 504) (second 527) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 527) (second 500) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 527) (second 501) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 455) (second 505) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 523) (second 472) (length 42.426449) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 491) (second 467) (length 84.852791) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 457) (second 507) (length 84.852791) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 521) (second 474) (length 84.852791) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 484) (second 498) (length 84.852791) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 615) (second 592) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 615) (second 528) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 528) (second 529) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 529) (second 592) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 529) (second 615) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 528) (second 592) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 528) (second 530) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 530) (second 531) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 531) (second 529) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 530) (second 529) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 531) (second 528) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 530) (second 532) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 532) (second 533) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 533) (second 531) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 533) (second 530) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 532) (second 531) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 534) (second 535) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 534) (second 536) (length 29.999977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 536) (second 537) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 537) (second 535) (length 29.999977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 537) (second 534) (length 42.426392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 536) (second 535) (length 42.426392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 538) (second 539) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 538) (second 540) (length 29.999983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 540) (second 541) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 541) (second 539) (length 29.999983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 541) (second 538) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 540) (second 539) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 539) (second 537) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 538) (second 536) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 538) (second 537) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 539) (second 536) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 540) (second 542) (length 30.000021) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 542) (second 543) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 543) (second 541) (length 30.000021) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 542) (second 541) (length 42.426422) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 543) (second 540) (length 42.426422) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 542) (second 544) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 544) (second 545) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 545) (second 543) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 545) (second 542) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 544) (second 543) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 534) (second 533) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 535) (second 532) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 534) (second 532) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 535) (second 533) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 612) (second 614) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 612) (second 546) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 546) (second 547) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 547) (second 614) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 547) (second 612) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 546) (second 614) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 546) (second 548) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 548) (second 549) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 549) (second 547) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 548) (second 547) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 549) (second 546) (length 42.426407) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 548) (second 550) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 550) (second 551) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 551) (second 549) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 551) (second 548) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 550) (second 549) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 552) (second 553) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 552) (second 554) (length 29.999977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 554) (second 555) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 555) (second 553) (length 29.999977) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 555) (second 552) (length 42.426392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 554) (second 553) (length 42.426392) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 556) (second 557) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 556) (second 558) (length 29.999983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 558) (second 559) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 559) (second 557) (length 29.999983) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 559) (second 556) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 558) (second 557) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 557) (second 555) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 556) (second 554) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 556) (second 555) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 557) (second 554) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 558) (second 560) (length 30.000021) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 560) (second 561) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 561) (second 559) (length 30.000021) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 560) (second 559) (length 42.426422) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 561) (second 558) (length 42.426422) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 560) (second 562) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 562) (second 563) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 563) (second 561) (length 30.000015) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 563) (second 560) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 562) (second 561) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 552) (second 551) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 553) (second 550) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 552) (second 550) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 553) (second 551) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 544) (second 564) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 545) (second 564) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 565) (second 566) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 545) (second 566) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 565) (second 564) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 565) (second 567) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 568) (second 566) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 567) (second 566) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 565) (second 568) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 568) (second 567) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 565) (second 545) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 564) (second 566) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 567) (second 569) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 570) (second 569) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 568) (second 570) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 570) (second 567) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 569) (second 568) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 569) (second 571) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 571) (second 572) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 570) (second 572) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 571) (second 570) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 569) (second 572) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 573) (second 574) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 575) (second 576) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 573) (second 576) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 575) (second 574) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 575) (second 577) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 578) (second 576) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 577) (second 576) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 575) (second 578) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 578) (second 577) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 575) (second 573) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 574) (second 576) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 577) (second 579) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 580) (second 579) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 578) (second 580) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 580) (second 577) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 579) (second 578) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 579) (second 581) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 581) (second 582) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 580) (second 582) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 581) (second 580) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 579) (second 582) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 571) (second 573) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 574) (second 572) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 571) (second 574) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 573) (second 572) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 581) (second 583) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 583) (second 584) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 562) (second 584) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 584) (second 585) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 585) (second 582) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 583) (second 585) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 562) (second 585) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 583) (second 582) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 581) (second 585) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 584) (second 563) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 562) (second 583) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 585) (second 560) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 566) (second 543) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 584) (second 586) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 563) (second 586) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 586) (second 562) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 564) (second 587) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 587) (second 544) (length 29.999958) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 587) (second 545) (length 42.426376) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 588) (second 589) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 590) (second 591) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 588) (second 592) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 589) (second 592) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 593) (second 594) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 589) (second 594) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 593) (second 592) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 593) (second 595) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 596) (second 594) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 595) (second 594) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 593) (second 596) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 596) (second 595) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 593) (second 589) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 592) (second 594) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 595) (second 597) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 598) (second 597) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 596) (second 598) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 598) (second 595) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 597) (second 596) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 597) (second 599) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 599) (second 600) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 598) (second 600) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 599) (second 598) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 597) (second 600) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 601) (second 602) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 603) (second 604) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 601) (second 604) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 603) (second 602) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 603) (second 605) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 606) (second 604) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 605) (second 604) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 603) (second 606) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 606) (second 605) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 603) (second 601) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 602) (second 604) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 605) (second 607) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 608) (second 607) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 606) (second 608) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 608) (second 605) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 607) (second 606) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 607) (second 609) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 609) (second 610) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 608) (second 610) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 609) (second 608) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 607) (second 610) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 599) (second 601) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 602) (second 600) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 599) (second 602) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 601) (second 600) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 609) (second 611) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 611) (second 612) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 590) (second 612) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 612) (second 613) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 613) (second 610) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 611) (second 613) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 590) (second 613) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 611) (second 610) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 609) (second 613) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 612) (second 591) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 590) (second 611) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 612) (second 614) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 591) (second 614) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 614) (second 590) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 592) (second 615) (length 30.000000) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 615) (second 588) (length 29.999985) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 615) (second 589) (length 42.426395) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 529) (second 593) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 611) (second 546) (length 42.426418) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 568) (second 541) (length 84.852844) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 531) (second 595) (length 84.852821) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 609) (second 548) (length 84.852821) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + (spring (first 558) (second 582) (length 84.852844) (stiffness 50.000000) (damping 0.100000) (maxstretch 0.150000)) + ) + (colliders + )) + +;; EOF ;; diff --git a/examples/zeppelin.construo b/examples/zeppelin.construo new file mode 100644 index 0000000..0a3ad4b --- /dev/null +++ b/examples/zeppelin.construo @@ -0,0 +1,179 @@ +;; Written by construo 0.2.0 +(construo-scene + (version 2) + (author "Ingo Ruhnke,,," "grumbel@gmx.de") + (particles + (particle (id 1) (pos -1036.047607 -1859.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 2) (pos -1144.047729 -1817.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 3) (pos -1228.047729 -1749.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 4) (pos -1241.047729 -1674.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 5) (pos -1209.047729 -1610.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 6) (pos -1103.047607 -1548.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 7) (pos -980.047607 -1527.183594) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 8) (pos -833.047607 -1517.183594) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 9) (pos -680.047607 -1514.183594) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 10) (pos -474.047699 -1512.183594) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 11) (pos -312.047699 -1511.183594) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 12) (pos -100.047676 -1511.183594) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 13) (pos 86.952148 -1538.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 14) (pos 256.952148 -1590.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 15) (pos 391.952087 -1634.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 16) (pos 393.952087 -1704.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 17) (pos 287.952148 -1750.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 18) (pos 131.952148 -1806.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 19) (pos -31.047735 -1835.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 20) (pos -222.047684 -1862.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 22) (pos -452.047699 -1879.183838) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 23) (pos -639.047668 -1881.183838) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 24) (pos -807.047607 -1885.183838) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 26) (pos -1165.047729 -1683.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 28) (pos -1050.047607 -1776.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 29) (pos -1046.047607 -1644.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 31) (pos -895.047607 -1598.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 32) (pos -930.047546 -1708.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 33) (pos -926.047546 -1807.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 34) (pos -911.047607 -1882.183838) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 35) (pos -824.047607 -1812.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 36) (pos -828.047607 -1714.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 37) (pos -787.047607 -1600.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 38) (pos 309.952087 -1695.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 41) (pos 145.952148 -1735.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 42) (pos 139.952148 -1647.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 43) (pos -20.047733 -1612.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 44) (pos -7.047733 -1747.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 45) (pos -192.047684 -1755.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 46) (pos -200.047684 -1629.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 47) (pos -401.047699 -1623.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 48) (pos -374.047699 -1761.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 49) (pos -635.047668 -1784.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 50) (pos -633.047668 -1639.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + (particle (id 51) (pos -546.047729 -1585.183716) (velocity 0.000000 0.000000) (fixed #f) (mass 10.000000)) + ) + (springs + (spring (first 1) (second 2) (length 115.879364)) + (spring (first 2) (second 3) (length 108.074051)) + (spring (first 3) (second 4) (length 76.118332)) + (spring (first 4) (second 5) (length 71.554176)) + (spring (first 5) (second 6) (length 122.800758)) + (spring (first 6) (second 7) (length 124.779823)) + (spring (first 7) (second 8) (length 147.339737)) + (spring (first 8) (second 9) (length 153.029404)) + (spring (first 9) (second 10) (length 206.009613)) + (spring (first 10) (second 11) (length 162.003082)) + (spring (first 11) (second 12) (length 212.000031)) + (spring (first 12) (second 13) (length 188.938980)) + (spring (first 13) (second 14) (length 177.775146)) + (spring (first 14) (second 15) (length 141.989380)) + (spring (first 15) (second 16) (length 70.028564)) + (spring (first 16) (second 17) (length 115.550797)) + (spring (first 17) (second 18) (length 165.746796)) + (spring (first 18) (second 19) (length 165.559540)) + (spring (first 19) (second 20) (length 192.898880)) + (spring (first 20) (second 22) (length 230.627426)) + (spring (first 22) (second 23) (length 187.010666)) + (spring (first 23) (second 24) (length 168.047546)) + (spring (first 3) (second 26) (length 91.241440)) + (spring (first 26) (second 4) (length 76.531036)) + (spring (first 26) (second 5) (length 85.234970)) + (spring (first 26) (second 2) (length 135.635544)) + (spring (first 26) (second 6) (length 148.556442)) + (spring (first 1) (second 28) (length 84.172440)) + (spring (first 28) (second 29) (length 132.060593)) + (spring (first 29) (second 7) (length 134.331787)) + (spring (first 31) (second 32) (length 115.433945)) + (spring (first 32) (second 33) (length 99.080772)) + (spring (first 1) (second 34) (length 127.098412)) + (spring (first 34) (second 24) (length 104.043259)) + (spring (first 34) (second 33) (length 76.485397)) + (spring (first 24) (second 35) (length 74.953438)) + (spring (first 35) (second 36) (length 98.081596)) + (spring (first 36) (second 37) (length 121.148666)) + (spring (first 37) (second 9) (length 137.277176)) + (spring (first 17) (second 38) (length 59.236790)) + (spring (first 18) (second 41) (length 72.367119)) + (spring (first 41) (second 42) (length 88.204308)) + (spring (first 13) (second 42) (length 121.202309)) + (spring (first 12) (second 43) (length 128.844925)) + (spring (first 43) (second 44) (length 135.624481)) + (spring (first 44) (second 19) (length 91.214035)) + (spring (first 20) (second 45) (length 111.126053)) + (spring (first 45) (second 46) (length 126.253716)) + (spring (first 46) (second 11) (length 162.689987)) + (spring (first 10) (second 47) (length 132.853409)) + (spring (first 47) (second 48) (length 140.616501)) + (spring (first 48) (second 22) (length 141.449738)) + (spring (first 23) (second 49) (length 97.082558)) + (spring (first 49) (second 50) (length 145.013794)) + (spring (first 50) (second 9) (length 133.544098)) + (spring (first 10) (second 51) (length 102.533028)) + (spring (first 51) (second 50) (length 102.396240)) + (spring (first 51) (second 47) (length 149.896667)) + (spring (first 51) (second 9) (length 151.647568)) + (spring (first 37) (second 50) (length 158.861511)) + (spring (first 36) (second 49) (length 205.302155)) + (spring (first 35) (second 49) (length 191.062759)) + (spring (first 23) (second 35) (length 197.448715)) + (spring (first 35) (second 33) (length 102.122414)) + (spring (first 33) (second 28) (length 127.816330)) + (spring (first 29) (second 32) (length 132.484009)) + (spring (first 32) (second 7) (length 187.779266)) + (spring (first 29) (second 31) (length 157.851196)) + (spring (first 31) (second 7) (length 110.752052)) + (spring (first 29) (second 6) (length 111.646767)) + (spring (first 26) (second 29) (length 125.227905)) + (spring (first 26) (second 28) (length 147.898712)) + (spring (first 2) (second 28) (length 102.552536)) + (spring (first 1) (second 33) (length 121.671745)) + (spring (first 33) (second 29) (length 202.408035)) + (spring (first 33) (second 36) (length 135.103622)) + (spring (first 36) (second 32) (length 102.176254)) + (spring (first 32) (second 37) (length 179.200958)) + (spring (first 37) (second 31) (length 108.018517)) + (spring (first 37) (second 8) (length 94.894783)) + (spring (first 31) (second 8) (length 102.004997)) + (spring (first 34) (second 35) (length 111.664757)) + (spring (first 35) (second 50) (length 257.701324)) + (spring (first 50) (second 36) (length 208.925766)) + (spring (first 50) (second 48) (length 286.295288)) + (spring (first 49) (second 47) (length 284.036957)) + (spring (first 51) (second 48) (length 246.089432)) + (spring (first 49) (second 51) (length 217.995392)) + (spring (first 23) (second 48) (length 290.903778)) + (spring (first 22) (second 49) (length 206.189270)) + (spring (first 22) (second 45) (length 288.055603)) + (spring (first 20) (second 48) (length 182.496582)) + (spring (first 48) (second 46) (length 218.403305)) + (spring (first 47) (second 46) (length 201.089554)) + (spring (first 47) (second 11) (length 143.056030)) + (spring (first 47) (second 45) (length 247.194275)) + (spring (first 49) (second 48) (length 262.011414)) + (spring (first 48) (second 45) (length 182.098892)) + (spring (first 45) (second 44) (length 185.172836)) + (spring (first 44) (second 41) (length 153.469742)) + (spring (first 41) (second 38) (length 168.807526)) + (spring (first 38) (second 16) (length 84.480766)) + (spring (first 38) (second 15) (length 102.200783)) + (spring (first 14) (second 38) (length 117.617996)) + (spring (first 14) (second 42) (length 130.146072)) + (spring (first 42) (second 43) (length 163.783279)) + (spring (first 43) (second 46) (length 180.800949)) + (spring (first 46) (second 44) (length 226.214462)) + (spring (first 44) (second 42) (length 177.789108)) + (spring (first 42) (second 38) (length 176.646484)) + (spring (first 45) (second 43) (length 223.680542)) + (spring (first 43) (second 41) (length 206.603394)) + (spring (first 41) (second 19) (length 203.295258)) + (spring (first 19) (second 45) (length 179.780380)) + (spring (first 20) (second 44) (length 243.823669)) + (spring (first 44) (second 18) (length 151.003204)) + (spring (first 18) (second 38) (length 209.773636)) + (spring (first 17) (second 41) (length 142.790054)) + (spring (first 42) (second 12) (length 275.854950)) + (spring (first 43) (second 13) (length 130.096024)) + (spring (first 13) (second 38) (length 272.723267)) + (spring (first 46) (second 12) (length 154.673950)) + (spring (first 43) (second 11) (length 308.974121)) + (spring (first 10) (second 46) (length 297.934631)) + )) + +;; EOF ;; diff --git a/examples/ziege.construo b/examples/ziege.construo new file mode 100644 index 0000000..36ff8fa --- /dev/null +++ b/examples/ziege.construo @@ -0,0 +1,322 @@ + +(construo-scene + (particles + (particle (id 23794) (pos 254.303 516.083 0 ) (velocity -0.0261088 0.0677444 0 ) ) + (particle (id 23795) (pos 254.609 557.578 0 ) (velocity 0.351153 -0.0714957 0 ) ) + (particle (id 23796) (pos 353.365 550.679 0 ) (velocity 0.0295553 -0.135376 0 ) ) + (particle (id 23797) (pos 352.038 508.343 0 ) (velocity 0.0117154 0.286039 0 ) ) + (particle (id 23798) (pos 438.593 507.974 0 ) (velocity 0.21127 -0.0887251 0 ) ) + (particle (id 23799) (pos 451.593 550.454 0 ) (velocity -0.0633239 0.29779 0 ) ) + (particle (id 23800) (pos 538.45 517.045 0 ) (velocity 0.017316 0.037099 0 ) ) + (particle (id 23801) (pos 550.25 560.751 0 ) (velocity -0.267835 0.145448 0 ) ) + (particle (id 23802) (pos 269.283 600 0 ) (velocity -0.00473355 -0.247941 0 ) ) + (particle (id 23803) (pos 342.207 597.367 0 ) (velocity -0.0112886 0.223396 0 ) ) + (particle (id 23804) (pos 472.044 596.992 0 ) (velocity -0.107129 0.0696617 0 ) ) + (particle (id 23805) (pos 562.836 600 0 ) (velocity 0.00421225 -0.274924 0 ) ) + (particle (id 23860) (pos 256.904 468.405 0 ) (velocity 0.189159 0.0781872 0 ) ) + (particle (id 23861) (pos 304.818 466.243 0 ) (velocity 0.187105 0.16704 0 ) ) + (particle (id 23862) (pos 483.391 467.067 0 ) (velocity -0.0616822 0.138527 0 ) ) + (particle (id 23863) (pos 532.759 475.566 0 ) (velocity -0.125769 -0.0759686 0 ) ) + (particle (id 23864) (pos 252.76 412.435 0 ) (velocity 0.14818 -0.661122 0 ) ) + (particle (id 23865) (pos 308.211 402.656 0 ) (velocity 0.0545352 0.0754033 0 ) ) + (particle (id 23866) (pos 481.503 403.922 0 ) (velocity -0.313673 0.192496 0 ) ) + (particle (id 23867) (pos 546.013 414.616 0 ) (velocity -0.253514 -0.132546 0 ) ) + (particle (id 23868) (pos 231.697 363.141 0 ) (velocity 0.608296 -0.156291 0 ) ) + (particle (id 23869) (pos 266.387 344.284 0 ) (velocity 0.121419 0.0200677 0 ) ) + (particle (id 23870) (pos 519.192 335.406 0 ) (velocity -0.257489 0.0883079 0 ) ) + (particle (id 23871) (pos 569.069 358.865 0 ) (velocity -0.3961 -0.0724611 0 ) ) + (particle (id 23872) (pos 208.738 301.46 0 ) (velocity 1.15074 -0.370167 0 ) ) + (particle (id 23873) (pos 194.126 337.327 0 ) (velocity 0.637535 -0.168387 0 ) ) + (particle (id 23874) (pos 143.593 335.116 0 ) (velocity 0.211749 -0.373489 0 ) ) + (particle (id 23875) (pos 127.294 293.376 0 ) (velocity 0.622696 -1.10199 0 ) ) + (particle (id 23876) (pos 86.7181 350.765 0 ) (velocity 0.843287 -1.35878 0 ) ) + (particle (id 23877) (pos 73.2392 312.026 0 ) (velocity 0.926468 -1.64983 0 ) ) + (particle (id 23908) (pos 581.073 291.608 0 ) (velocity -0.342658 -0.576338 0 ) ) + (particle (id 23909) (pos 597.61 333.246 0 ) (velocity -0.373586 -0.290572 0 ) ) + (particle (id 23910) (pos 646.54 290.987 0 ) (velocity -0.915149 -0.631275 0 ) ) + (particle (id 23911) (pos 650.015 337.93 0 ) (velocity -0.482117 -0.454894 0 ) ) + (particle (id 23912) (pos 707.25 315.509 0 ) (velocity -0.747795 -1.28724 0 ) ) + (particle (id 23913) (pos 685.534 355.955 0 ) (velocity -0.271319 -0.663753 0 ) ) + (particle (id 23914) (pos 753.981 353.377 0 ) (velocity -0.226431 -1.19337 0 ) ) + (particle (id 23915) (pos 720.382 397.724 0 ) (velocity -0.240332 -0.891628 0 ) ) + (particle (id 24398) (pos 40.2158 345.975 0 ) (velocity 0.0400983 -1.05894 0 ) ) + (particle (id 24399) (pos 40.2598 378.747 0 ) (velocity 0.00728066 -1.29283 0 ) ) + (particle (id 24400) (pos 86.9014 376.608 0 ) (velocity 0.362283 -0.385649 0 ) ) + (particle (id 24401) (pos 51.3572 424.461 0 ) (velocity -0.106223 -1.27371 0 ) ) + (particle (id 24402) (pos 93.9274 403.781 0 ) (velocity 0.198812 -1.34402 0 ) ) + (particle (id 24446) (pos 776.718 401.343 0 ) (velocity 0.0189161 -1.2207 0 ) ) + (particle (id 24447) (pos 769.012 437.551 0 ) (velocity 0.411613 -1.32679 0 ) ) + (particle (id 24448) (pos 713.913 427.327 0 ) (velocity 0.432791 -1.10578 0 ) ) + (particle (id 24449) (pos 753.354 468.773 0 ) (velocity 0.37446 -1.06664 0 ) ) + (particle (id 24450) (pos 705.173 451.021 0 ) (velocity 0.214748 -0.676338 0 ) ) + (particle (id 24451) (pos 689.841 472.097 0 ) (velocity -0.121161 -0.615868 0 ) ) + (particle (id 24452) (pos 739.588 500.478 0 ) (velocity 0.417871 -1.39167 0 ) ) + (particle (id 25229) (pos 577.127 552.118 0 ) (velocity 0.327876 -0.102717 0 ) ) + (particle (id 25230) (pos 224.293 559.578 0 ) (velocity -0.275167 -0.0420959 0 ) ) + (particle (id 25668) (pos 44 287 0 ) (velocity 0 0 0 ) ) + (particle (id 25669) (pos 86 261 0 ) (velocity 0 0 0 ) ) + (particle (id 25670) (pos 116 224 0 ) (velocity 0 0 0 ) ) + (particle (id 25671) (pos 159 207 0 ) (velocity 0 0 0 ) ) + (particle (id 25672) (pos 203 208 0 ) (velocity 0 0 0 ) ) + (particle (id 25673) (pos 245 223 0 ) (velocity 0 0 0 ) ) + (particle (id 25674) (pos 277 255 0 ) (velocity 0 0 0 ) ) + (particle (id 25675) (pos 286 210 0 ) (velocity 0 0 0 ) ) + (particle (id 25676) (pos 242 186 0 ) (velocity 0 0 0 ) ) + (particle (id 25677) (pos 187 175 0 ) (velocity 0 0 0 ) ) + (particle (id 25678) (pos 127 184 0 ) (velocity 0 0 0 ) ) + (particle (id 25679) (pos 77 218 0 ) (velocity 0 0 0 ) ) + (particle (id 26224) (pos 224 599 0 ) (velocity 0 0 0 ) ) + (particle (id 28756) (pos 172 270 0 ) (velocity 0 0 0 ) ) + (particle (id 28757) (pos 257 299 0 ) (velocity 0 0 0 ) ) + (particle (id 28758) (pos 303 348 0 ) (velocity 0 0 0 ) ) + (particle (id 28759) (pos 351 442 0 ) (velocity 0 0 0 ) ) + ) + (springs + (spring (first 23794)(second 23795)) + (spring (first 23795)(second 23796)) + (spring (first 23796)(second 23797)) + (spring (first 23797)(second 23794)) + (spring (first 23794)(second 23796)) + (spring (first 23797)(second 23798)) + (spring (first 23798)(second 23799)) + (spring (first 23799)(second 23796)) + (spring (first 23796)(second 23798)) + (spring (first 23798)(second 23800)) + (spring (first 23800)(second 23801)) + (spring (first 23801)(second 23799)) + (spring (first 23798)(second 23801)) + (spring (first 23795)(second 23802)) + (spring (first 23802)(second 23803)) + (spring (first 23803)(second 23796)) + (spring (first 23799)(second 23804)) + (spring (first 23804)(second 23803)) + (spring (first 23804)(second 23805)) + (spring (first 23805)(second 23801)) + (spring (first 23801)(second 23803)) + (spring (first 23795)(second 23804)) + (spring (first 23802)(second 23796)) + (spring (first 23799)(second 23805)) + (spring (first 23794)(second 23860)) + (spring (first 23861)(second 23860)) + (spring (first 23861)(second 23797)) + (spring (first 23861)(second 23794)) + (spring (first 23860)(second 23797)) + (spring (first 23798)(second 23862)) + (spring (first 23862)(second 23863)) + (spring (first 23863)(second 23800)) + (spring (first 23863)(second 23798)) + (spring (first 23862)(second 23800)) + (spring (first 23860)(second 23864)) + (spring (first 23865)(second 23864)) + (spring (first 23865)(second 23861)) + (spring (first 23862)(second 23866)) + (spring (first 23866)(second 23867)) + (spring (first 23867)(second 23863)) + (spring (first 23867)(second 23862)) + (spring (first 23866)(second 23863)) + (spring (first 23861)(second 23864)) + (spring (first 23860)(second 23865)) + (spring (first 23864)(second 23868)) + (spring (first 23868)(second 23869)) + (spring (first 23869)(second 23865)) + (spring (first 23865)(second 23868)) + (spring (first 23869)(second 23864)) + (spring (first 23866)(second 23870)) + (spring (first 23870)(second 23871)) + (spring (first 23871)(second 23867)) + (spring (first 23871)(second 23866)) + (spring (first 23870)(second 23867)) + (spring (first 23869)(second 23872)) + (spring (first 23872)(second 23873)) + (spring (first 23873)(second 23868)) + (spring (first 23873)(second 23869)) + (spring (first 23872)(second 23868)) + (spring (first 23873)(second 23874)) + (spring (first 23874)(second 23875)) + (spring (first 23875)(second 23872)) + (spring (first 23872)(second 23874)) + (spring (first 23875)(second 23873)) + (spring (first 23874)(second 23876)) + (spring (first 23876)(second 23877)) + (spring (first 23877)(second 23875)) + (spring (first 23875)(second 23876)) + (spring (first 23877)(second 23874)) + (spring (first 23870)(second 23908)) + (spring (first 23908)(second 23909)) + (spring (first 23909)(second 23871)) + (spring (first 23871)(second 23908)) + (spring (first 23870)(second 23909)) + (spring (first 23908)(second 23910)) + (spring (first 23910)(second 23911)) + (spring (first 23911)(second 23909)) + (spring (first 23910)(second 23912)) + (spring (first 23912)(second 23913)) + (spring (first 23913)(second 23911)) + (spring (first 23912)(second 23914)) + (spring (first 23914)(second 23915)) + (spring (first 23915)(second 23913)) + (spring (first 23913)(second 23914)) + (spring (first 23912)(second 23915)) + (spring (first 23913)(second 23910)) + (spring (first 23912)(second 23911)) + (spring (first 23911)(second 23908)) + (spring (first 23910)(second 23909)) + (spring (first 23794)(second 23864)) + (spring (first 23860)(second 23868)) + (spring (first 23864)(second 23873)) + (spring (first 23868)(second 23874)) + (spring (first 23873)(second 23876)) + (spring (first 23800)(second 23867)) + (spring (first 23863)(second 23871)) + (spring (first 23867)(second 23909)) + (spring (first 23871)(second 23911)) + (spring (first 23909)(second 23913)) + (spring (first 23911)(second 23915)) + (spring (first 23797)(second 23865)) + (spring (first 23866)(second 23798)) + (spring (first 23861)(second 23798)) + (spring (first 23862)(second 23797)) + (spring (first 23795)(second 23797)) + (spring (first 23799)(second 23797)) + (spring (first 23800)(second 23799)) + (spring (first 23877)(second 24398)) + (spring (first 24398)(second 23876)) + (spring (first 24398)(second 24399)) + (spring (first 24399)(second 23876)) + (spring (first 24399)(second 24400)) + (spring (first 24400)(second 23876)) + (spring (first 24399)(second 24401)) + (spring (first 24401)(second 24402)) + (spring (first 24402)(second 24400)) + (spring (first 24400)(second 24401)) + (spring (first 24399)(second 24402)) + (spring (first 24398)(second 24400)) + (spring (first 23914)(second 24446)) + (spring (first 24446)(second 23915)) + (spring (first 24446)(second 24447)) + (spring (first 24447)(second 23915)) + (spring (first 23915)(second 24448)) + (spring (first 24448)(second 24447)) + (spring (first 24447)(second 24449)) + (spring (first 24449)(second 24450)) + (spring (first 24450)(second 24448)) + (spring (first 24450)(second 24451)) + (spring (first 24451)(second 24452)) + (spring (first 24452)(second 24449)) + (spring (first 24449)(second 24451)) + (spring (first 24448)(second 24449)) + (spring (first 24448)(second 24446)) + (spring (first 24450)(second 24447)) + (spring (first 24450)(second 24452)) + (spring (first 23800)(second 23802)) + (spring (first 23794)(second 23805)) + (spring (first 23797)(second 23869)) + (spring (first 23865)(second 23872)) + (spring (first 23869)(second 23875)) + (spring (first 23872)(second 23877)) + (spring (first 23875)(second 24398)) + (spring (first 23877)(second 24399)) + (spring (first 24398)(second 24401)) + (spring (first 23866)(second 23908)) + (spring (first 23870)(second 23798)) + (spring (first 23870)(second 23910)) + (spring (first 23908)(second 23912)) + (spring (first 23910)(second 23914)) + (spring (first 23912)(second 24446)) + (spring (first 23914)(second 24447)) + (spring (first 24446)(second 24449)) + (spring (first 24447)(second 24452)) + (spring (first 23800)(second 25229)) + (spring (first 25229)(second 23801)) + (spring (first 25229)(second 23805)) + (spring (first 23794)(second 25230)) + (spring (first 25230)(second 23802)) + (spring (first 23795)(second 25230)) + (spring (first 25229)(second 23863)) + (spring (first 25230)(second 23860)) + (spring (first 24398)(second 25668)) + (spring (first 25668)(second 23877)) + (spring (first 25668)(second 25669)) + (spring (first 25669)(second 23877)) + (spring (first 25669)(second 25670)) + (spring (first 25670)(second 25671)) + (spring (first 25671)(second 25672)) + (spring (first 25672)(second 25673)) + (spring (first 25673)(second 25674)) + (spring (first 25674)(second 25675)) + (spring (first 25675)(second 25673)) + (spring (first 25673)(second 25676)) + (spring (first 25676)(second 25672)) + (spring (first 25672)(second 25677)) + (spring (first 25677)(second 25671)) + (spring (first 25671)(second 25678)) + (spring (first 25678)(second 25670)) + (spring (first 25670)(second 25679)) + (spring (first 25679)(second 25669)) + (spring (first 25679)(second 25668)) + (spring (first 25679)(second 25678)) + (spring (first 25678)(second 25677)) + (spring (first 25677)(second 25676)) + (spring (first 25676)(second 25675)) + (spring (first 23877)(second 25670)) + (spring (first 25669)(second 25671)) + (spring (first 25670)(second 25672)) + (spring (first 25671)(second 25673)) + (spring (first 25672)(second 25674)) + (spring (first 24398)(second 25679)) + (spring (first 25668)(second 25678)) + (spring (first 25679)(second 25677)) + (spring (first 25678)(second 25676)) + (spring (first 25677)(second 25675)) + (spring (first 25668)(second 23874)) + (spring (first 24400)(second 25668)) + (spring (first 23795)(second 23861)) + (spring (first 23795)(second 23803)) + (spring (first 25230)(second 26224)) + (spring (first 26224)(second 23802)) + (spring (first 23802)(second 26224)) + (spring (first 23795)(second 26224)) + (spring (first 23802)(second 26224)) + (spring (first 23860)(second 23796)) + (spring (first 23861)(second 23795)) + (spring (first 25230)(second 23803)) + (spring (first 26224)(second 23797)) + (spring (first 23799)(second 23861)) + (spring (first 23804)(second 23794)) + (spring (first 23804)(second 25230)) + (spring (first 23875)(second 25669)) + (spring (first 23873)(second 23797)) + (spring (first 23869)(second 23794)) + (spring (first 23865)(second 23875)) + (spring (first 23874)(second 23869)) + (spring (first 23876)(second 23872)) + (spring (first 23868)(second 23796)) + (spring (first 23869)(second 23794)) + (spring (first 23865)(second 23795)) + (spring (first 23875)(second 28756)) + (spring (first 28756)(second 23872)) + (spring (first 23872)(second 28757)) + (spring (first 28757)(second 23869)) + (spring (first 23869)(second 28758)) + (spring (first 28758)(second 23865)) + (spring (first 23865)(second 28759)) + (spring (first 28759)(second 23797)) + (spring (first 28759)(second 23860)) + (spring (first 28758)(second 23864)) + (spring (first 28757)(second 23868)) + (spring (first 28756)(second 23874)) + (spring (first 28756)(second 23873)) + (spring (first 23873)(second 28757)) + (spring (first 23868)(second 28758)) + (spring (first 23864)(second 28759)) + (spring (first 28759)(second 23794)) + (spring (first 25230)(second 23864)) + (spring (first 28759)(second 23799)) + (spring (first 25668)(second 25670)) + (spring (first 25679)(second 23877)) + (spring (first 25671)(second 25679)) + (spring (first 25679)(second 23877)) + (spring (first 25668)(second 25670)) + (spring (first 25679)(second 25668)) + ) +) diff --git a/force_emitter.hxx b/force_emitter.hxx new file mode 100644 index 0000000..2a16944 --- /dev/null +++ b/force_emitter.hxx @@ -0,0 +1,32 @@ +// $Id: force_emitter.hxx,v 1.2 2002/11/24 19:49:35 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_FORCE_EMITTER_HXX +#define HEADER_CONSTRUO_FORCE_EMITTER_HXX + +/** */ +class ForceEmitter +{ + +public: +}; + +#endif + +/* EOF */ diff --git a/globals.cxx b/globals.cxx new file mode 100644 index 0000000..8902cdf --- /dev/null +++ b/globals.cxx @@ -0,0 +1,24 @@ +// $Id: globals.cxx,v 1.1 2003/07/24 10:55:54 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "globals.hxx" + +float current_fps = 0.0f; + +/* EOF */ diff --git a/globals.hxx b/globals.hxx new file mode 100644 index 0000000..a0ac956 --- /dev/null +++ b/globals.hxx @@ -0,0 +1,27 @@ +// $Id: globals.hxx,v 1.1 2003/07/24 10:55:54 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GLOBALS_HXX +#define HEADER_CONSTRUO_GLOBALS_HXX + +extern float current_fps; + +#endif + +/* EOF */ diff --git a/glut_display.cxx b/glut_display.cxx new file mode 100644 index 0000000..b79b88c --- /dev/null +++ b/glut_display.cxx @@ -0,0 +1,675 @@ +// $Id: glut_display.cxx,v 1.25 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include + +#ifdef HAVE_FREEGLUT +# include +#else +# include +#endif + +#include +#include +#include +#include "buttons.hxx" +#include "events.hxx" +#include "settings.hxx" +#include "construo_main.hxx" +#include "screen_manager.hxx" +#include "glut_display.hxx" + +GlutDisplay* GlutDisplay::instance_ = 0; + +void reshape_func(int w, int h) +{ + GlutDisplay::instance()->reshape_func(w, h); +} + +void display_func () +{ + GlutDisplay::instance()->display_func(); +} + +void mouse_func (int button, int button_state, int x, int y) +{ + GlutDisplay::instance()->mouse_func(button, button_state, x, y); +} + +void idle_func () +{ + GlutDisplay::instance()->idle_func(); +} + +void keyboard_func (unsigned char key, int x, int y) +{ + GlutDisplay::instance()->keyboard_func(key, x, y); +} + +void special_func (int key, int x, int y) +{ + GlutDisplay::instance()->special_func(key, x, y); +} + +void mouse_motion_func (int x, int y) +{ + GlutDisplay::instance()->mouse_motion_func(x, y); +} + +GlutDisplay::GlutDisplay (int w, int h, int fullscreen) +{ + instance_ = this; + + update_display = 0; + width = w; + height = h; + + int argc = 1; + char* argv[] = { "construo", "\0" }; + + glutInit(&argc, argv); // Only pass empty dummies + glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); + glutInitWindowSize(width, height); + //glutInitWindowPosition(100, 100); don't care + glutSetWindow(glutCreateWindow(construo_main->get_title())); + + glutDisplayFunc(::display_func); + glutReshapeFunc(::reshape_func); + glutMouseFunc(::mouse_func); + + glutMotionFunc (::mouse_motion_func); + glutPassiveMotionFunc (::mouse_motion_func); + + glutIdleFunc (::idle_func); + glutKeyboardFunc(::keyboard_func); + glutSpecialFunc(::special_func); + + glClearColor (0.0, 0.0, 0.0, 0.1); + if (settings.alphablending) + { + glShadeModel (GL_SMOOTH); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + if (settings.antialiasing && settings.alphablending) + { + glEnable(GL_LINE_SMOOTH); + } + + //glEnable(GL_SCISSOR_TEST); + //glScissor(0, 0, settings.screen_width, settings.screen_height); + glutSetCursor(GLUT_CURSOR_FULL_CROSSHAIR); + + window_x_pos = 0; + window_y_pos = 0; + window_width = w; + window_height = h; + + if (fullscreen) + enter_fullscreen(); +} + +void +GlutDisplay::run() +{ + std::cout << "Starting glut mainloop" << std::endl; + glutMainLoop(); + std::cout << "Ending glut mainloop" << std::endl; +} + +GlutDisplay::~GlutDisplay() +{ +} + +void +GlutDisplay::draw_lines (std::vector& lines, Color color, int wide) +{ + if (settings.thick_lines) + glLineWidth (wide); + + glBegin (GL_LINES); + for (std::vector::const_iterator i = lines.begin(); i != lines.end(); ++i) + { + glVertex2f (i->x1, i->y1); + glVertex2f (i->x2, i->y2); + } + glEnd (); +} + +void +GlutDisplay::draw_line(float x1, float y1, float x2, float y2, Color color, int wide) +{ + if (settings.thick_lines) + glLineWidth (wide); + + glColor4f (color.r, color.g, color.b, color.a); + glBegin (GL_LINES); + glVertex2f (x1, y1); + glVertex2f (x2, y2); + glEnd (); +} + +void +GlutDisplay::draw_rect(float x1, float y1, float x2, float y2, Color color) +{ + if (settings.thick_lines) + glLineWidth (2); + + glColor4f (color.r, color.g, color.b, color.a); + glBegin (GL_LINE_STRIP); + glVertex2f (x1, y1); + glVertex2f (x2, y1); + glVertex2f (x2, y2); + glVertex2f (x1, y2); + glVertex2f (x1, y1); + glEnd (); +} + +void +GlutDisplay::draw_fill_rect(float x1, float y1, float x2, float y2, Color color) +{ + if (settings.thick_lines) + glLineWidth (.5f); + + glColor4f (color.r, color.g, color.b, color.a); + glBegin (GL_QUADS); + glVertex2f (x1, y1); + glVertex2f (x2, y1); + glVertex2f (x2, y2); + glVertex2f (x1, y2); + glEnd (); +} + +void +GlutDisplay::draw_circles(std::vector& circles, Color color) +{ + for (std::vector::iterator i = circles.begin(); i != circles.end(); ++i) + { + draw_circle(i->x, i->y, i->r, color); + } +} + +void +GlutDisplay::draw_circle(float x, float y, float r, Color color) +{ + glColor4f (color.r, color.g, color.b, color.a); + + GLUquadricObj* qobj = gluNewQuadric (); + gluQuadricDrawStyle(qobj, GLU_SILHOUETTE); + //gluQuadricNormals (qobj, GLU_FLAT); + glPushMatrix(); + glTranslatef (x, y, 0); + gluDisk (qobj, 0, r, 8, 1); + /*draw_rect (x - r, y - r, x + r, y + r, + color);*/ + glPopMatrix (); + gluDeleteQuadric (qobj); +} + +void +GlutDisplay::draw_fill_circle(float x, float y, float r, Color color) +{ + glColor4f (color.r, color.g, color.b, color.a); + //draw_fill_rect (x - r, y - r, x + r, y + r, + // color); + + GLUquadricObj* qobj = gluNewQuadric (); + gluQuadricDrawStyle(qobj, GLU_FILL); + //gluQuadricNormals (qobj, GLU_FLAT); + glPushMatrix(); + glTranslatef (x, y, 0); + gluDisk (qobj, 0, r, 8, 1); + /*draw_rect (x - r, y - r, x + r, y + r, + color);*/ + glPopMatrix (); + gluDeleteQuadric (qobj); +} + +void +GlutDisplay::draw_string(float x, float y, const std::string& str, Color color) +{ + if (settings.thick_lines) + glLineWidth (1.0f); + + glColor4f (color.r, color.g, color.b, color.a); + glPushMatrix(); + glTranslatef (x , y, 0); + glScalef (.07f, -.07, 0); + + for (std::string::const_iterator i = str.begin (); i != str.end (); ++i) + { +#ifdef HAVE_FREEGLUT + glutBitmapCharacter (GLUT_BITMAP_8_BY_13, *i); +#else + glutStrokeCharacter (GLUT_STROKE_MONO_ROMAN, *i); + //glutStrokeWidth (GLUT_STROKE_MONO_ROMAN, *i); +#endif + } + glPopMatrix(); +} + + +void +GlutDisplay::draw_string_centered(float x, float y, const std::string& str, Color color) +{ + draw_string(x - (7.5 * str.length())/2, + y, str, color); +} + +bool +GlutDisplay::get_key (int key) +{ + return false; +} + +int +GlutDisplay::get_mouse_x () +{ + return mouse_x; +} + +int +GlutDisplay::get_mouse_y () +{ + return mouse_y; +} + +void +GlutDisplay::clear () +{ + glClear(GL_COLOR_BUFFER_BIT); +} + +void +GlutDisplay::flip () +{ + glutSwapBuffers(); +} + +void +GlutDisplay::flip (int x1, int y1, int x2, int y2) +{ + assert (false); +} + + +void +GlutDisplay::reshape_func(int w, int h) +{ + std::cout << "Reshape: " << w << " " << h << std::endl; + glViewport (0,0, w, h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluOrtho2D (0, w, h, 0); + glMatrixMode(GL_MODELVIEW); + width = w; + height = h; +} + +void +GlutDisplay::display_func () +{ + ScreenManager::instance()->run_once(); +} + +void +GlutDisplay::mouse_func (int button, int button_state, int x, int y) +{ + mouse_x = x; + mouse_y = y; + + Event event; + event.type = BUTTON_EVENT; + + //std::cout << "mouse button press: " << button << " " << button_state << " " << x << " " << y << std::endl; + + if (button_state == 0) + event.button.pressed = true; + else + event.button.pressed = false; + + switch (button) + { + case 0: + event.button.id = BUTTON_PRIMARY; + break; + case 1: + event.button.id = BUTTON_TERTIARY; + break; + case 2: + event.button.id = BUTTON_SECONDARY; + break; + case 3: + event.button.id = BUTTON_ZOOM_IN; + break; + case 4: + event.button.id = BUTTON_ZOOM_OUT; + break; + default: + std::cout << "GlutDisplay: Unhandle mouse button press: " << button << " " << button_state << std::endl; + return; + } + events.push (event); +} + +void +GlutDisplay::idle_func () +{ + /* if (Controller::instance()->is_running() || update_display > 0) + { + //system_context->sleep (0); // limit CPU usage via brute force + update_display = 0; + }*/ + if (!ScreenManager::instance ()->is_finished()) + { + ScreenManager::instance ()->run_once(); + } + else + { + construo_main->exit(); + } +} + +void +GlutDisplay::special_func (int key, int x, int y) +{ + switch (key) + { + case GLUT_KEY_F11: + if (is_fullscreen) + leave_fullscreen(); + else + enter_fullscreen(); + break; + } +} + +void +GlutDisplay::keyboard_func (unsigned char key, int x, int y) +{ + //std::cout << "GlutDisplay: keypress: " << key << " (" << int(key) << ") " << x << " " << y << std::endl; + + Event event; + event.type = BUTTON_EVENT; + event.button.pressed = true; + + switch (key) + { + case 127: // Delete + event.button.id = BUTTON_DELETE; + break; + case 32: // Space + event.button.id = BUTTON_RUN; + break; + case 9: // Tab + event.button.id = BUTTON_TOGGLESLOWMO; + break; + case 27: // Escape + case 'q': + event.button.id = BUTTON_ESCAPE; + break; + case 'h': + event.button.id = BUTTON_FLIP; + break; + case 'f': + event.button.id = BUTTON_FIX; + break; + case 'd': + event.button.id = BUTTON_DUPLICATE; + break; + + case 'v': + event.button.id = BUTTON_SETVELOCITY; + break; + + case 'c': + event.button.id = BUTTON_CLEAR; + break; + + case 'j': + event.button.id = BUTTON_JOIN; + break; + + case 's': + event.button.id = BUTTON_SCALE; + break; + + case 'a': + event.button.id = BUTTON_ACTIONCAM; + break; + + case 'o': + event.button.id = BUTTON_HIDEDOTS; + break; + + case '!': + event.button.id = BUTTON_QUICKLOAD1; + break; + + case '@': + event.button.id = BUTTON_QUICKLOAD2; + break; + + case '#': + event.button.id = BUTTON_QUICKLOAD3; + break; + + case '$': + event.button.id = BUTTON_QUICKLOAD4; + break; + + case '%': + event.button.id = BUTTON_QUICKLOAD5; + break; + + case '^': + event.button.id = BUTTON_QUICKLOAD6; + break; + + case '&': + event.button.id = BUTTON_QUICKLOAD7; + break; + + case '*': + event.button.id = BUTTON_QUICKLOAD8; + break; + + case '(': + event.button.id = BUTTON_QUICKLOAD9; + break; + + case ')': + event.button.id = BUTTON_QUICKLOAD0; + break; + + case '0': + event.button.id = BUTTON_QUICKSAVE0; + break; + + case '1': + event.button.id = BUTTON_QUICKSAVE1; + break; + + case '2': + event.button.id = BUTTON_QUICKSAVE2; + break; + + case '3': + event.button.id = BUTTON_QUICKSAVE3; + break; + + case '4': + event.button.id = BUTTON_QUICKSAVE4; + break; + + case '5': + event.button.id = BUTTON_QUICKSAVE5; + break; + + case '6': + event.button.id = BUTTON_QUICKSAVE6; + break; + + case '7': + event.button.id = BUTTON_QUICKSAVE7; + break; + + case '8': + event.button.id = BUTTON_QUICKSAVE8; + break; + + case '9': + event.button.id = BUTTON_QUICKSAVE9; + break; + + case 'g': + event.button.id = BUTTON_GRID; + break; + + case 'u': + event.button.id = BUTTON_UNDO; + break; + case 'r': + event.button.id = BUTTON_REDO; + break; + case '+': + case '=': // so that people don't have to press shift + event.button.id = BUTTON_ZOOM_IN; + break; + case '-': + event.button.id = BUTTON_ZOOM_OUT; + break; + default: +#ifdef DEBUG + std::cout << "GlutDisplay: Unhandled keypress: '" << key << "'[" << int(key) << "] x/y: " + << x << ", " << y << std::endl; +#endif + return; + } + + events.push(event); +} + +void +GlutDisplay::mouse_motion_func (int x, int y) +{ + //std::cout << "Motion: " << x << " " << y << std::endl; + mouse_x = x; + mouse_y = y; +} + +void +GlutDisplay::leave_fullscreen() +{ + std::cout << "GlutDisplay: leaving fullscreen: restoring to: pos: " + << window_x_pos << ", " << window_y_pos << " - WxH: " + << window_width << ", " << window_height << std::endl; + + glutReshapeWindow(window_width, window_height); + glutPositionWindow(window_x_pos, window_y_pos); + + is_fullscreen = false; +} + +void +GlutDisplay::enter_fullscreen() +{ +#if 0 + char mode[64]; + snprintf (mode, 64, "%dx%d:%d@%d", width, height, 16, 80); + std::cout << "GlutDisplay: switching to: " << mode << std::endl; + glutGameModeString(mode); + glutEnterGameMode(); + is_fullscreen = true; +#else + std::cout << "GlutDisplay: Entering fullscreen" << std::endl; + + window_x_pos = glutGet((GLenum)GLUT_WINDOW_X); + window_y_pos = glutGet((GLenum)GLUT_WINDOW_Y); + window_width = glutGet((GLenum)GLUT_WINDOW_WIDTH); + window_height = glutGet((GLenum)GLUT_WINDOW_HEIGHT); + + std::cout << "Saving window: " << window_x_pos << ", " << window_y_pos << " - WxH: " + << window_width << ", " << window_height << std::endl; + + glutFullScreen(); + + is_fullscreen = true; +#endif +} + +void +GlutDisplay::set_clip_rect (int x1, int y1, int x2, int y2) +{ + //std::cout << "Setting cliprect: " << x1<< " " < +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GLUT_DISPLAY_HXX +#define HEADER_CONSTRUO_GLUT_DISPLAY_HXX + +#include "root_graphic_context.hxx" +#include "input_context.hxx" + +/** */ +class GlutDisplay : public RootGraphicContext, + public InputContext +{ +private: + static GlutDisplay* instance_; + + /** X-Position of the glut window, used in fullscreen to allow a + restore */ + int window_x_pos; + + /** Y-Position of the glut window, used in fullscreen to allow a + restore */ + int window_y_pos; + + /** Width of the window, used to restore after fullscreen */ + int window_width; + + /** height of the window, used to restore after fullscreen */ + int window_height; + + /** The actual size of the current screen/window */ + int width; + + /** The actual size of the current screen/window */ + int height; + + int mouse_x; + int mouse_y; + + bool block; + + int update_display; + + bool is_fullscreen; +public: + static GlutDisplay* instance () { return instance_; } + + GlutDisplay (int w, int h, int fullscreen); + virtual ~GlutDisplay(); + + void draw_lines (std::vector& lines, Color color, int wide = 0); + void draw_line(float x1, float y1, float x2, float y2, Color color, int wide = 0); + void draw_rect(float x1, float y1, float x2, float y2, Color color); + void draw_fill_rect(float x1, float y1, float x2, float y2, Color color); + void draw_circle(float x, float y, float r, Color color); + void draw_circles(std::vector& circles, Color color); + void draw_fill_circle(float x, float y, float r, Color color); + void draw_string(float x, float y, const std::string& str, Color color); + void draw_string_centered(float x, float y, const std::string& str, Color color); + + void clear (); + void flip (); + void flip (int x1, int y1, int x2, int y2); + + bool get_fullscreen () { return is_fullscreen; } + + int get_width() { return width; } + int get_height() { return height; } + + bool get_key (int key); + int get_mouse_x (); + int get_mouse_y (); + + void run(); + void set_cursor_real(CursorType); + void reshape_func(int w, int h); + void display_func (); + void mouse_func (int button, int button_state, int x, int y); + void idle_func (); + void keyboard_func (unsigned char key, int x, int y); + void special_func (int key, int x, int y); + void mouse_motion_func (int x, int y); + + void set_clip_rect (int x1, int y1, int x2, int y2); + + void push_quick_draw(); + void pop_quick_draw(); + + void enter_fullscreen(); + void leave_fullscreen(); +private: + GlutDisplay (const GlutDisplay&); + GlutDisplay& operator= (const GlutDisplay&); +}; + +#endif + +/* EOF */ diff --git a/graphic_context.hxx b/graphic_context.hxx new file mode 100644 index 0000000..829dc8d --- /dev/null +++ b/graphic_context.hxx @@ -0,0 +1,112 @@ +// $Id: graphic_context.hxx,v 1.16 2003/07/24 21:33:11 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GRAPHIC_CONTEXT_HXX +#define HEADER_CONSTRUO_GRAPHIC_CONTEXT_HXX + +#include +#include +#include "math.hxx" +#include "vector2d.hxx" +#include "color.hxx" + +/** Graphic abstraction interface */ +class GraphicContext +{ +private: +public: + struct Line + { + float x1, y1; + float x2, y2; + }; + + struct Circle + { + float x, y, r; + }; + + void draw_circle(const Vector2d& pos, float radius, Color color) + { + draw_circle (pos.x, pos.y, radius, color); + } + + void draw_fill_circle(const Vector2d& pos, float radius, Color color) + { + draw_fill_circle (pos.x, pos.y, radius, color); + } + + void draw_string(const Vector2d& pos, const std::string& str, Color color = Color (0xFFFFFFFF)) + { + draw_string (pos.x, pos.y, str, color); + } + + void draw_line (const Vector2d& pos1, const Vector2d& pos2, Color color, int wide = 0) + { + draw_line (pos1.x, pos1.y, pos2.x, pos2.y, color, wide); + } + + void draw_rect (const Vector2d& pos1, const Vector2d& pos2, Color color) + { + draw_rect (Math::min(pos1.x, pos2.x), + Math::min(pos1.y, pos2.y), + Math::max(pos1.x, pos2.x), + Math::max(pos1.y, pos2.y), + color); + } + + void draw_fill_rect (const Vector2d& pos1, const Vector2d& pos2, Color color) + { + draw_fill_rect (pos1.x, pos1.y, pos2.x, pos2.y, color); + } + + virtual void draw_lines (std::vector& lines, Color color, int wide = 0) =0; + virtual void draw_line(float x1, float y1, float x2, float y2, Color color, int wide = 0) =0; + virtual void draw_rect(float x1, float y1, float x2, float y2, Color color) =0; + virtual void draw_circle(float x, float y, float radius, Color color) =0; + virtual void draw_circles(std::vector& circles, Color color) =0; + virtual void draw_fill_circle(float x, float y, float radius, Color color) =0; + virtual void draw_fill_rect(float x1, float y1, float x2, float y2, Color color) =0; + virtual void draw_string(float x, float y, const std::string& str, Color color = Color (0xFFFFFFFF)) =0; + + virtual void draw_string_centered(float x, float y, const std::string& str, Color color = Color (0xFFFFFFFF)) =0; + + virtual void set_clip_rect (int x1_, int y1_, int x2_, int y2_) =0; + + virtual int get_width () =0; + virtual int get_height () =0; + + virtual void clear () =0; + + /** FIXME: flip should be handled outsite of GraphicContext */ + virtual void flip () =0; + virtual void real_flip () {} + virtual void flip (int x1, int y1, int x2, int y2) =0; + + /** Goes into quick draw mode, disabling anti-aliasing and other + time consuming features */ + virtual void push_quick_draw() {} + + /** Goes out of quickdraw mode, restoring previous settings */ + virtual void pop_quick_draw() {} +}; + +#endif + +/* EOF */ diff --git a/gui_buttons.cxx b/gui_buttons.cxx new file mode 100644 index 0000000..1ee1234 --- /dev/null +++ b/gui_buttons.cxx @@ -0,0 +1,233 @@ +// $Id: gui_buttons.cxx,v 1.16 2003/07/26 16:34:57 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include "graphic_context.hxx" +#include "controller.hxx" +#include "colors.hxx" +#include "world_gui_manager.hxx" +#include "gui_buttons.hxx" +#include "screen_manager.hxx" +#include "worldview_component.hxx" + +#define BUTTON_POS(n) (80 + n * 30) +#define BUTTON_WIDTH 75 +#define BUTTON_HEIGHT 25 + +GUIButton::GUIButton (const std::string& title_, + int x_pos_, int y_pos_, int width_, int height_) + : GUIComponent (x_pos_, y_pos_, width_, height_), + title (title_) +{ + mouse_over = false; + pressed = false; +} + +void +GUIButton::on_mouse_enter () +{ + mouse_over = true; +} + +void +GUIButton::on_mouse_leave () +{ + mouse_over = false; +} + +void +GUIButton::on_primary_button_press (int x, int y) +{ + WorldGUIManager::instance()->grab_mouse (this); + pressed = true; +} + +void +GUIButton::on_primary_button_release (int x, int y) +{ + WorldGUIManager::instance()->ungrab_mouse (this); + if (is_at (x, y)) + on_click (); + pressed = false; +} + +void +GUIButton::draw (GraphicContext* gc) +{ + if (pressed && mouse_over) + { + gc->draw_fill_rect (x_pos, y_pos, x_pos + width, y_pos + height, Colors::button_bg_pressed); + } + else if (mouse_over) + { + gc->draw_fill_rect (x_pos, y_pos, x_pos + width, y_pos + height, Colors::button_bg_hover); + } + else + { + gc->draw_fill_rect (x_pos, y_pos, x_pos + width, y_pos + height, Colors::button_bg_passive); + } + + draw_content (gc); + + if (pressed && mouse_over) + { + draw_border_pressed (gc); + } + else if (mouse_over) + { + draw_border_hover (gc); + } + else + { + draw_border_normal (gc); + } +} + +void +GUIButton::draw_content (GraphicContext* gc) +{ + gc->draw_string_centered (x_pos + width/2, y_pos + 16, title); +} + +void +GUIButton::draw_border_hover(GraphicContext* gc) +{ + gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos + height, Colors::button_fg_hover); +} + +void +GUIButton::draw_border_pressed(GraphicContext* gc) +{ + gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos + height, Colors::button_fg_pressed); +} + +void +GUIButton::draw_border_normal(GraphicContext* gc) +{ + gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos + height, Colors::button_fg_passive); +} + +GUIRunButton::GUIRunButton () + : GUIButton ("Run", 10, BUTTON_POS(0), BUTTON_WIDTH, BUTTON_HEIGHT) +{ +} + +void +GUIButton::on_click() +{ + std::cout << "GUIButton: cliked (implement me)" << std::endl; +} + +void +GUIRunButton::draw_content (GraphicContext* gc) +{ + if ((!pressed || !mouse_over) && Controller::instance()->is_running ()) + gc->draw_fill_rect (x_pos, y_pos, + x_pos + width, y_pos + height, Colors::button_bg_active) ; + /* + gc->draw_line (x_pos, y_pos, + x_pos + width, y_pos + height, + Color (0x0000FFFF)); + + gc->draw_line (x_pos + width, y_pos, + x_pos, y_pos + height, + Color (0x0000FFFF)); + */ + GUIButton::draw_content (gc); +} + +void +GUIRunButton::on_click() +{ + std::cout << "Button pressed" << std::endl; + Controller::instance()->start_simulation (); +} + +GUISlowMoButton::GUISlowMoButton () + : GUIButton ("SlowMotion", 10, BUTTON_POS(1), BUTTON_WIDTH, BUTTON_HEIGHT) +{ + +} + +void +GUISlowMoButton::on_click() +{ + Controller::instance()->set_slow_down (!Controller::instance()->slow_down_active ()); +} + +void +GUISlowMoButton::draw_content (GraphicContext* gc) +{ + if (Controller::instance()->slow_down_active()) + gc->draw_fill_rect (x_pos, y_pos, + x_pos + width, y_pos + height, Colors::button_bg_active); + + GUIButton::draw_content (gc); +} + +GUIZoomInButton::GUIZoomInButton () + : GUIButton ("Zoom In", 10, BUTTON_POS(2), BUTTON_WIDTH, BUTTON_HEIGHT) +{ +} + +void +GUIZoomInButton::on_click() +{ + WorldViewComponent::instance()->wheel_up (400,300); +} + + +GUIZoomOutButton::GUIZoomOutButton () + : GUIButton ("Zoom Out", 10, BUTTON_POS(3), BUTTON_WIDTH, BUTTON_HEIGHT) +{ +} + +void +GUIZoomOutButton::on_click() +{ + WorldViewComponent::instance()->wheel_down (400,300); +} + +GUIQuitButton::GUIQuitButton () + : GUIButton ("Quit", 10, BUTTON_POS(12), BUTTON_WIDTH, BUTTON_HEIGHT) +{ +} + +void +GUIQuitButton::on_click() +{ + ScreenManager::instance()->quit(); +} + + +GUILoadButton::GUILoadButton () + : GUIButton ("Load", 10, BUTTON_POS(9), BUTTON_WIDTH, BUTTON_HEIGHT) +{ +} + +void +GUILoadButton::on_click() +{ + ScreenManager::instance()->set_gui(ScreenManager::LOAD_GUI); +} + +/* EOF */ diff --git a/gui_buttons.hxx b/gui_buttons.hxx new file mode 100644 index 0000000..8b89f00 --- /dev/null +++ b/gui_buttons.hxx @@ -0,0 +1,137 @@ +// $Id: gui_buttons.hxx,v 1.7 2003/01/10 20:44:09 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GUI_BUTTONS_HXX +#define HEADER_CONSTRUO_GUI_BUTTONS_HXX + +#include "colors.hxx" +#include "gui_component.hxx" + +/** */ +class GUIButton : public GUIComponent +{ +protected: + std::string title; + + bool mouse_over; + bool pressed; + +public: + GUIButton (const std::string& title, int x_pos_, int y_pos_, int width_, int height_); + + void draw_border_hover(GraphicContext*); + void draw_border_pressed(GraphicContext*); + void draw_border_normal(GraphicContext*); + + void on_mouse_enter (); + void on_mouse_leave (); + + void on_primary_button_press (int x, int y); + void on_primary_button_release (int x, int y); + + void draw (GraphicContext*); + + virtual void draw_content (GraphicContext*); + virtual void on_click (); +}; + +class GUIRunButton : public GUIButton +{ +public: + GUIRunButton (); + void draw_content (GraphicContext*); + void on_click(); +}; + +class GUISlowMoButton : public GUIButton +{ +public: + GUISlowMoButton (); + void draw_content (GraphicContext*); + void on_click(); +}; + +class GUIZoomInButton : public GUIButton +{ +public: + GUIZoomInButton (); + void on_click(); +}; + +class GUIZoomOutButton : public GUIButton +{ +public: + GUIZoomOutButton (); + void on_click(); +}; + + +class GUIQuitButton : public GUIButton +{ +public: + GUIQuitButton (); + void on_click(); +}; + +class GUILoadButton : public GUIButton +{ +public: + GUILoadButton (); + void on_click(); +}; + +inline bool always_false() +{ + return false; +} + +class GUIGenericButton : public GUIButton +{ +private: + typedef void (*Func)(); + typedef bool (*HighlightFunc)(); + Func func; + HighlightFunc hfunc; +public: + GUIGenericButton (const std::string& title, int x, int y, int width, int height, + Func f, HighlightFunc h = always_false) + : GUIButton (title, x, y, width, height), + func (f), + hfunc(h) + { + } + + void on_click () + { + func (); + } + + void draw_content (GraphicContext* gc) + { + if (hfunc()) + gc->draw_fill_rect (x_pos, y_pos, + x_pos + width, y_pos + height, Colors::button_bg_active); + + GUIButton::draw_content (gc); + } +}; + +#endif + +/* EOF */ diff --git a/gui_child_manager.cxx b/gui_child_manager.cxx new file mode 100644 index 0000000..8f9eac6 --- /dev/null +++ b/gui_child_manager.cxx @@ -0,0 +1,291 @@ +// $Id: gui_child_manager.cxx,v 1.5 2003/01/11 19:07:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include "graphic_context.hxx" +#include "colors.hxx" +#include "gui_child_manager.hxx" + +GUIChildManager::GUIChildManager (int x, int y, int width, int height) + : GUIComponent (x, y, width, height) +{ + current_component = 0; +} + +GUIChildManager::~GUIChildManager () +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + delete *i; + } +} + +void +GUIChildManager::add (GUIComponent* comp) +{ + components.push_back(comp); +} + +void +GUIChildManager::remove (GUIComponent* comp) +{ + // FIXME: Memory leak + components.erase(std::remove(components.begin(), components.end(), comp), components.end()); +} + +void +GUIChildManager::replace(GUIComponent* old_comp, GUIComponent* new_comp) +{ + for (ComponentLst::iterator i = components.begin(); i != components.end(); ++i) + { + if (*i == old_comp) + { + *i = new_comp; + return; + } + } +} + +void +GUIChildManager::draw (GraphicContext* parent_gc) +{ + gc.set_parent_gc (parent_gc); + gc.set_offset (x_pos, y_pos); + + parent_gc->draw_fill_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Colors::button_bg_passive); + parent_gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Colors::button_fg_passive); + + parent_gc->draw_fill_rect (x_pos, y_pos, + x_pos + width, y_pos, + Colors::button_bg_hover); + + parent_gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos, + Colors::button_fg_passive); + + for (ComponentLst::reverse_iterator i = components.rbegin (); i != components.rend (); ++i) + { + (*i)->draw (&gc); + } + + draw_overlay(parent_gc); +} + +void +GUIChildManager::on_primary_button_press (int x, int y) +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->on_primary_button_press (x - x_pos, y - y_pos); + return; + } + } +} + +void +GUIChildManager::on_primary_button_release (int x, int y) +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->on_primary_button_release (x - x_pos, y - y_pos); + return; + } + } +} + +void +GUIChildManager::on_secondary_button_press (int x, int y) +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->on_secondary_button_press (x - x_pos, y - y_pos); + return; + } + } +} + +void +GUIChildManager::on_secondary_button_release (int x, int y) +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->on_secondary_button_release (x - x_pos, y - y_pos); + return; + } + } +} + +void +GUIChildManager::on_delete_press (int x, int y) +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->on_delete_press (x - x_pos, y - y_pos); + return; + } + } +} + +void +GUIChildManager::on_fix_press (int x, int y) +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->on_fix_press (x - x_pos, y - y_pos); + return; + } + } +} + +void +GUIChildManager::on_mouse_enter () +{ +} + +void +GUIChildManager::on_mouse_leave () +{ +} + +void +GUIChildManager::wheel_up (int x, int y) +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->wheel_up (x - x_pos, y - y_pos); + return; + } + } +} + +void +GUIChildManager::wheel_down (int x, int y) +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->wheel_down (x - x_pos, y - y_pos); + return; + } + } +} + +void +GUIChildManager::scroll_left () +{ + /* for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->scroll_left (x - x_pos, y - y_pos); + return; + } + }*/ +} + +void +GUIChildManager::scroll_right () +{ + /* + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->scroll_right (x - x_pos, y - y_pos); + return; + } + }*/ +} + +void +GUIChildManager::scroll_up () +{ + /* for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->scroll_down (x - x_pos, y - y_pos); + return; + } + }*/ +} + +void +GUIChildManager::scroll_down () +{ + /* + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + (*i)->scroll_down (x - x_pos, y - y_pos); + return; + } + }*/ +} + +void +GUIChildManager::on_mouse_move (int x, int y, int of_x, int of_y) +{ + GUIComponent* comp = find_component_at (x, y); + //std::cout << " MouseMove: " << x << " " << y << " " << comp << std::endl; + + if (comp != current_component) + { + if (comp) comp->on_mouse_enter(); + if (current_component) current_component->on_mouse_leave(); + current_component = comp; + } + else if (comp) + comp->on_mouse_move(x, y, of_x, of_y); +} + +GUIComponent* +GUIChildManager::find_component_at (int x, int y) +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x - x_pos, y - y_pos)) + { + return *i; + } + } + return 0; +} + +/* EOF */ diff --git a/gui_child_manager.hxx b/gui_child_manager.hxx new file mode 100644 index 0000000..0cec5f9 --- /dev/null +++ b/gui_child_manager.hxx @@ -0,0 +1,75 @@ +// $Id: gui_child_manager.hxx,v 1.4 2003/01/10 20:44:09 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GUI_CHILDMANAGER_HXX +#define HEADER_CONSTRUO_GUI_CHILDMANAGER_HXX + +#include +#include +#include "zoom_graphic_context.hxx" +#include "gui_component.hxx" + +/** */ +class GUIChildManager : public GUIComponent +{ +private: + ZoomGraphicContext gc; + typedef std::vector ComponentLst; + ComponentLst components; + + GUIComponent* current_component; + GUIComponent* find_component_at (int, int); +public: + GUIChildManager (int x, int y, int width, int height); + ~GUIChildManager (); + + void add (GUIComponent*); + void remove (GUIComponent*); + void replace(GUIComponent* old_comp, GUIComponent* new_comp); + + void draw (GraphicContext* gc); + virtual void draw_overlay (GraphicContext* gc) {} + + void on_primary_button_press (int x, int y); + void on_primary_button_release (int x, int y); + + void on_secondary_button_click (int x, int y); + void on_secondary_button_press (int x, int y); + void on_secondary_button_release (int x, int y); + + void on_delete_press (int x, int y); + void on_fix_press (int x, int y); + + virtual void on_mouse_enter (); + virtual void on_mouse_leave (); + + void wheel_up (int x, int y); + void wheel_down (int x, int y); + + void scroll_left (); + void scroll_right (); + void scroll_up (); + void scroll_down (); + + void on_mouse_move (int x, int y, int of_x, int of_y); +}; + +#endif + +/* EOF */ diff --git a/gui_component.cxx b/gui_component.cxx new file mode 100644 index 0000000..8e952fb --- /dev/null +++ b/gui_component.cxx @@ -0,0 +1,31 @@ +// $Id: gui_component.cxx,v 1.2 2003/01/04 20:12:38 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "gui_component.hxx" + +bool +GUIComponent::is_at (int x, int y) +{ + return (x >= x_pos + && y >= y_pos + && x < x_pos + width + && y < y_pos + height); +} + +/* EOF */ diff --git a/gui_component.hxx b/gui_component.hxx new file mode 100644 index 0000000..1195aa9 --- /dev/null +++ b/gui_component.hxx @@ -0,0 +1,91 @@ +// $Id: gui_component.hxx,v 1.14 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GUI_COMPONENT_HXX +#define HEADER_CONSTRUO_GUI_COMPONENT_HXX + +class GraphicContext; +class GUIManager; + +/** A thing that is under the controll of the GUIManager */ +class GUIComponent +{ +protected: + int x_pos; + int y_pos; + int width; + int height; + +public: + GUIComponent (int x_, int y_, int width_, int height_) + : x_pos (x_), y_pos (y_), width (width_), height (height_) + {} + + virtual ~GUIComponent () {} + + virtual void draw (GraphicContext* gc) =0; + + /** @return true if the component is present at the given location */ + virtual bool is_at (int x, int y); + + void set_position (int x, int y) { x_pos = x, y_pos = y; } + void set_width (int w) { width = w; } + void set_height (int h) { height = h; } + int get_x_pos () { return x_pos; } + int get_y_pos () { return y_pos; } + int get_width () { return width; } + int get_height () { return height; } + + virtual void on_primary_button_press (int x, int y) {} + virtual void on_primary_button_release (int x, int y) {} + + virtual void on_secondary_button_press (int x, int y) {} + virtual void on_secondary_button_release (int x, int y) {} + + virtual void on_tertiary_button_press (int x, int y) {} + virtual void on_tertiary_button_release (int x, int y) {} + + // FIXME: Join these under some generic event handling, like: + // void on_button_press(int button_id, int x, int y); + virtual void on_scale_press(int x, int y) {} + virtual void on_grid_press(int x, int y) {} + virtual void on_duplicate_press (int x, int y) {} + virtual void on_delete_press (int x, int y) {} + virtual void on_fix_press (int x, int y) {} + virtual void on_join_press (int x, int y) {} + + virtual void on_mouse_enter () {} + virtual void on_mouse_leave () {} + + virtual void wheel_up (int x, int y) {} + virtual void wheel_down (int x, int y) {} + + virtual void on_button_press (int button_id, int x, int y) {} + + virtual void scroll_left () {} + virtual void scroll_right () {} + virtual void scroll_up () {} + virtual void scroll_down () {} + + virtual void on_mouse_move (int x, int y, int of_x, int of_y) {} +}; + +#endif + +/* EOF */ diff --git a/gui_directory.cxx b/gui_directory.cxx new file mode 100644 index 0000000..5aa6283 --- /dev/null +++ b/gui_directory.cxx @@ -0,0 +1,158 @@ +// $Id: gui_directory.cxx,v 1.10 2003/01/11 19:07:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "construo.hxx" +#include "system_context.hxx" +#include "world_button.hxx" +#include "gui_directory_button.hxx" +#include "gui_file_manager.hxx" +#include "gui_new_file_button.hxx" +#include "gui_directory.hxx" + +GUIDirectory::GUIDirectory (const std::string& arg_pathname, Mode m) + : GUIChildManager (0, 0, 800, 600), + pathname (arg_pathname), + mode (m) +{ + mtime = system_context->get_mtime(pathname); + std::vector dir = system_context->read_directory(pathname); + + if (mode == SAVE_DIRECTORY && pathname != "/") + files.push_back(new GUINewFileButton(pathname)); + + for (std::vector::iterator i = dir.begin(); i != dir.end(); ++i) + { + std::string filename = pathname + *i; + + FileType type = system_context->get_file_type (filename); + + std::cout << "Creating object for: " << filename << std::endl; + + if (type == FT_DIRECTORY) + { + if (*(filename.end()-1) == '/') // FIXME: Hack + files.push_back (new GUIDirectoryButton (filename)); + else + files.push_back (new GUIDirectoryButton (filename + "/")); + } + else if (type == FT_CONSTRUO_FILE) + { + if (mode == SAVE_DIRECTORY) + files.push_back (new WorldButton (filename, WorldButton::SAVE_BUTTON)); + else + files.push_back (new WorldButton (filename, WorldButton::LOAD_BUTTON)); + } + else // (type == FT_UNKNOWN_FILE) + { + // ignore unknown files + std::cout << "GUIFileManager: ignoring '" << filename + << "' since it has unknown filetype" << std::endl; + } + } + + offset = 0; + place_components (); +} + +GUIDirectory::~GUIDirectory () +{ + for(std::vector::iterator i = files.begin(); + i != files.end(); ++i) + { + // FIXME: Very ugly, we remove all components from the manager so that he doesn't delete them twice + remove(*i); + delete *i; + } +} + +void +GUIDirectory::place_components () +{ + // Remove all file components + for(std::vector::iterator i = files.begin(); + i != files.end(); ++i) + { + remove(*i); + } + + int row = 0; + int column = 0; + int count = 0; + + //std::cout << "OFFSET: " << offset << std::endl; + + for(std::vector::size_type i = 0 + offset; + i < files.size() && count < 9; + ++i) + { + files[i]->set_position(column * (200 + 50) + 50, + row * (150 + 37) + 30); + add(files[i]); + + column += 1; + if (column >= 3) // row is full + { + column = 0; + row += 1; + } + if (row >= 3) + return; + + ++count; + } +} + +void +GUIDirectory::draw_overlay (GraphicContext* gc) +{ +} + +void +GUIDirectory::move_up () +{ + if (offset >= 3) + offset -= 3; + + place_components (); +} + +void +GUIDirectory::move_down () +{ + offset += 3; + + if (offset >= int(files.size())) + offset -= 3; + + place_components (); +} + +void +GUIDirectory::wheel_up (int x, int y) +{ + move_up(); +} + +void +GUIDirectory::wheel_down (int x, int y) +{ + move_down(); +} + +/* EOF */ diff --git a/gui_directory.hxx b/gui_directory.hxx new file mode 100644 index 0000000..d64a0f3 --- /dev/null +++ b/gui_directory.hxx @@ -0,0 +1,62 @@ +// $Id: gui_directory.hxx,v 1.7 2003/01/11 19:07:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GUI_DIRECTORY_HXX +#define HEADER_CONSTRUO_GUI_DIRECTORY_HXX + +#include +#include "gui_child_manager.hxx" + +class ZoomGraphicContext; +class GUIFileButton; + +/** Widget which shows a complete directory */ +class GUIDirectory : public GUIChildManager +{ +private: + std::string pathname; + std::vector files; + int offset; + unsigned int mtime; + + void place_components (); +public: + enum Mode { LOAD_DIRECTORY, SAVE_DIRECTORY }; +private: + Mode mode; +public: + GUIDirectory (const std::string& pathname, Mode m); + ~GUIDirectory (); + + void draw_overlay (GraphicContext* gc); + + std::string get_path() { return pathname; } + + /** Move the shown directory content up */ + void move_up (); + /** Move the shown directory content down */ + void move_down (); + + void wheel_up (int x, int y); + void wheel_down (int x, int y); +}; + +#endif + +/* EOF */ diff --git a/gui_directory_button.cxx b/gui_directory_button.cxx new file mode 100644 index 0000000..07cd4d5 --- /dev/null +++ b/gui_directory_button.cxx @@ -0,0 +1,60 @@ +// $Id: gui_directory_button.cxx,v 1.3 2003/01/08 23:14:59 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "gui_file_manager.hxx" +#include "gui_directory_button.hxx" + +GUIDirectoryButton::GUIDirectoryButton (const std::string& arg_filename) + : GUIFileButton (arg_filename) +{ +} + +GUIDirectoryButton::~GUIDirectoryButton () +{ +} + +void +GUIDirectoryButton::draw (GraphicContext* parent_gc) +{ + //std::cout << "GUIDirectoryButton: " << filename << std::endl; + parent_gc->draw_fill_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Color (0xBB0000FF)); + + parent_gc->draw_string (x_pos + 40, y_pos + 20, "..:: Directory ::.."); + parent_gc->draw_string (x_pos + 30, y_pos + 40, filename); + + if (mouse_over) + parent_gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Color (0xFFFFFFFF)); + else + parent_gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Color (0xFF0000FF)); +} + +void +GUIDirectoryButton::on_click() +{ + std::cout << "Click on GUIDirectoryButton detected" << std::endl; + GUIFileManager::instance()->open_directory(filename); +} + +/* EOF */ diff --git a/gui_directory_button.hxx b/gui_directory_button.hxx new file mode 100644 index 0000000..7aa75fa --- /dev/null +++ b/gui_directory_button.hxx @@ -0,0 +1,40 @@ +// $Id: gui_directory_button.hxx,v 1.2 2003/01/08 02:25:30 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_GUI_DIRECTORY_BUTTON_HXX +#define HEADER_GUI_DIRECTORY_BUTTON_HXX + +#include "gui_file_button.hxx" + +/** */ +class GUIDirectoryButton : public GUIFileButton +{ +private: +public: + GUIDirectoryButton (const std::string& pathname); + ~GUIDirectoryButton (); + + void draw (GraphicContext*); + void on_click(); +private: +}; + +#endif + +/* EOF */ diff --git a/gui_file_button.cxx b/gui_file_button.cxx new file mode 100644 index 0000000..a8ca998 --- /dev/null +++ b/gui_file_button.cxx @@ -0,0 +1,49 @@ +// $Id: gui_file_button.cxx,v 1.4 2003/01/08 02:25:30 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "gui_file_button.hxx" + +GUIFileButton::GUIFileButton (const std::string& arg_filename) + : GUIComponent (0, 0, 200, 150), + filename (arg_filename), + mouse_over (false) +{ + //std::cout << "FILENAME: " << filename << std::endl; +} + +GUIFileButton::~GUIFileButton () +{ + +} + + +void +GUIFileButton::on_primary_button_press (int x, int y) +{ + //std::cout << "GUIFileButton::on_primary_button_press (int x, int y)" << std::endl; + on_click (); +} + +void +GUIFileButton::on_primary_button_release (int x, int y) +{ + //std::cout << "GUIFileButton::on_primary_button_release (int x, int y)" << std::endl; +} + +/* EOF */ diff --git a/gui_file_button.hxx b/gui_file_button.hxx new file mode 100644 index 0000000..e5d2344 --- /dev/null +++ b/gui_file_button.hxx @@ -0,0 +1,49 @@ +// $Id: gui_file_button.hxx,v 1.4 2003/01/08 02:25:30 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GUI_FILE_BUTTON_HXX +#define HEADER_CONSTRUO_GUI_FILE_BUTTON_HXX + +#include +#include "zoom_graphic_context.hxx" +#include "gui_component.hxx" + +/** */ +class GUIFileButton : public GUIComponent +{ +protected: + std::string filename; + bool mouse_over; +public: + GUIFileButton (const std::string& arg_filename); + ~GUIFileButton (); + + //virtual void draw (ZoomGraphicContext*) =0; + virtual void on_click() =0; + + void on_mouse_enter () { mouse_over = true; } + void on_mouse_leave () { mouse_over = false; } + + void on_primary_button_press (int x, int y); + void on_primary_button_release (int x, int y); +}; + +#endif + +/* EOF */ diff --git a/gui_file_manager.cxx b/gui_file_manager.cxx new file mode 100644 index 0000000..8ed9f88 --- /dev/null +++ b/gui_file_manager.cxx @@ -0,0 +1,182 @@ +// $Id: gui_file_manager.cxx,v 1.10 2003/07/24 10:10:02 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include "construo.hxx" +#include "zoom_graphic_context.hxx" +#include "gui_file_manager.hxx" +#include "screen_manager.hxx" +#include "gui_buttons.hxx" + +void DirectoryUp () +{ + GUIFileManager::instance()->directory_up(); +} + +void ScrollUp () +{ + GUIFileManager::instance()->scroll_up(); +} + +void ScrollDown () +{ + GUIFileManager::instance()->scroll_down(); +} + +void ReReadCurrentDir () +{ + GUIFileManager::instance()->update_current_directory(); +} + + +void CloseFileManager () +{ + ScreenManager::instance()->set_gui(ScreenManager::WORLD_GUI); +} + +GUIFileManager* GUIFileManager::instance_ = 0; + +GUIFileManager::GUIFileManager (Mode m) + : GUIChildManager (0, 0, 800, 600), + mode (m) +{ + if (mode == SAVE_MANAGER) + current_directory = new GUIDirectory ("/", GUIDirectory::SAVE_DIRECTORY); + else + current_directory = new GUIDirectory ("/", GUIDirectory::LOAD_DIRECTORY); + + directories["/"] = current_directory; + + add (new GUIGenericButton("Up", 0,0, 100, 25, DirectoryUp)); + add (new GUIGenericButton("Close", 700, 0, 100, 25, CloseFileManager)); + + add (new GUIGenericButton("^", 770, 200, 25, 50, ScrollUp)); + add (new GUIGenericButton("V", 770, 300, 25, 50, ScrollDown)); + + add (new GUIGenericButton("Update Directory", 650, 575, 150, 25, ReReadCurrentDir)); + + add(current_directory); + + instance_ = this; +} + +GUIFileManager::~GUIFileManager () +{ + +} + +void +GUIFileManager::open_directory (const std::string& pathname) +{ + std::cout << "GUIFileManager::open_directory: " << pathname << std::endl; + GUIDirectory* old_directory = current_directory; + + if (directories[pathname] == 0) + { + if (mode == SAVE_MANAGER) + { + current_directory = directories[pathname] = new GUIDirectory(pathname, + GUIDirectory::SAVE_DIRECTORY); + } + else + { + current_directory = directories[pathname] = new GUIDirectory(pathname, + GUIDirectory::LOAD_DIRECTORY); + } + } + else + { + current_directory = directories[pathname]; + } + + std::cout << "Replace: " << old_directory << " " << current_directory << std::endl; + replace (old_directory, current_directory); +} + +void +GUIFileManager::directory_up() +{ + std::string pathname = current_directory->get_path (); + + // FIXME: UGLY code + if (pathname == "/") + { + // already at the top most directory + return; + } + else + { + assert(*(pathname.end()-1) == '/'); + + for (std::string::size_type i = pathname.size() - 2; i >= 0; --i) + { + if (pathname[i] == '/') // Found second '/' + { + pathname = pathname.substr(0, i+1); + break; + } + } + + std::cout << "Directory Up: " << current_directory->get_path () << " -> " << pathname << std::endl; + open_directory (pathname); + } +} + +void +GUIFileManager::draw_overlay (GraphicContext* gc) +{ + gc->draw_string(200, 16, current_directory->get_path()); +} + +void +GUIFileManager::scroll_up () +{ + current_directory->move_up(); +} + +void +GUIFileManager::scroll_down () +{ + current_directory->move_down(); +} + +void +GUIFileManager::update_current_directory() +{ + // Force a reread of the whole directory + std::string pathname = current_directory->get_path(); + + GUIDirectory* old_directory = current_directory; + + if (mode == SAVE_MANAGER) + { + current_directory = directories[pathname] = new GUIDirectory(pathname, + GUIDirectory::SAVE_DIRECTORY); + } + else + { + current_directory = directories[pathname] = new GUIDirectory(pathname, + GUIDirectory::LOAD_DIRECTORY); + } + + replace (old_directory, current_directory); + delete old_directory; +} + +/* EOF */ diff --git a/gui_file_manager.hxx b/gui_file_manager.hxx new file mode 100644 index 0000000..5d4c0da --- /dev/null +++ b/gui_file_manager.hxx @@ -0,0 +1,69 @@ +// $Id: gui_file_manager.hxx,v 1.6 2003/01/11 19:07:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GUI_FILE_MANAGER_HXX +#define HEADER_CONSTRUO_GUI_FILE_MANAGER_HXX + +#include +#include +#include "gui_child_manager.hxx" +#include "gui_directory.hxx" + +/** */ +class GUIFileManager : public GUIChildManager +{ +private: + /** Cache for directories */ + std::map directories; + + GUIDirectory* current_directory; + + GUIDirectory* get_directory (const std::string& pathname); + + static GUIFileManager* instance_; +public: + enum Mode { LOAD_MANAGER, SAVE_MANAGER }; +private: + Mode mode; +public: + GUIFileManager (Mode m); + ~GUIFileManager (); + + static GUIFileManager* instance() { return instance_; } + static void set_instance(GUIFileManager* g) { instance_ = g; } + + void draw_overlay (GraphicContext* gc); + + /** Switch the GUIFileManagers view to the directory given by + pathname */ + void open_directory (const std::string& pathname); + + /** move one directory up, aka cut the last directory from a + directory pathname */ + void directory_up(); + + void update_current_directory(); + + void scroll_up (); + void scroll_down (); +}; + +#endif + +/* EOF */ diff --git a/gui_label.cxx b/gui_label.cxx new file mode 100644 index 0000000..41fc97b --- /dev/null +++ b/gui_label.cxx @@ -0,0 +1,36 @@ +// $Id: gui_label.cxx,v 1.3 2003/01/04 20:12:38 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "graphic_context.hxx" +#include "colors.hxx" +#include "gui_label.hxx" + +GUILabel::GUILabel (const std::string& title_, int x_, int y_, int width_, int height_) + : GUIComponent (x_, y_, width_, height_), + title (title_) +{ +} + +void +GUILabel::draw (GraphicContext* gc) +{ + gc->draw_string (x_pos + 10, y_pos + 15, title); +} + +/* EOF */ diff --git a/gui_label.hxx b/gui_label.hxx new file mode 100644 index 0000000..f0bf61c --- /dev/null +++ b/gui_label.hxx @@ -0,0 +1,40 @@ +// $Id: gui_label.hxx,v 1.3 2003/01/04 20:12:38 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GUI_LABEL_HXX +#define HEADER_CONSTRUO_GUI_LABEL_HXX + +#include +#include "gui_component.hxx" + +/** */ +class GUILabel : public GUIComponent +{ +private: + std::string title; +public: + GUILabel (const std::string& title_, int x, int y, int width, int height); + + void draw (GraphicContext*); + bool is_at (int, int) { return false; } +}; + +#endif + +/* EOF */ diff --git a/gui_manager.cxx b/gui_manager.cxx new file mode 100644 index 0000000..67916c2 --- /dev/null +++ b/gui_manager.cxx @@ -0,0 +1,364 @@ +// $Id: gui_manager.cxx,v 1.37 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include "string_utils.hxx" +#include "construo.hxx" +#include "graphic_context.hxx" +#include "input_context.hxx" +#include "system_context.hxx" +#include "controller.hxx" +#include "keep_alive_mgr.hxx" +#include "events.hxx" +#include "gui_component.hxx" +#include "gui_manager.hxx" +#include "worldview_component.hxx" +#include "worldview_insert_tool.hxx" +#include "globals.hxx" +#include "root_graphic_context.hxx" +#include "screen_manager.hxx" + +using namespace StringUtils; + +GUIManager::GUIManager () +{ + frame_count = 0; + start_time = system_context->get_time (); + + last_component = 0; + grabbing_component = 0; + current_component = 0; + +} + +GUIManager::~GUIManager () +{ +} + +void +GUIManager::run_once () +{ + frame_count += 1; + + if (start_time + 3000 < system_context->get_time ()) + { + float passed_time = (system_context->get_time () - start_time) / 1000.0f; + + //std::cout << "FPS: " << frame_count / passed_time << std::endl; + + current_fps = frame_count / passed_time; + + frame_count = 0; + start_time = system_context->get_time (); + } + + process_events (); + + update(); + + graphic_context->clear (); + draw (); + draw_overlay (); + graphic_context->flip (); +} + +void +GUIManager::draw () +{ + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + (*i)->draw (graphic_context); + } +} + +GUIComponent* +GUIManager::find_component_at (int x, int y) +{ + GUIComponent* component = 0; + for (ComponentLst::iterator i = components.begin (); i != components.end (); ++i) + { + if ((*i)->is_at (x, y)) + component = *i; + } + return component; +} + +void +GUIManager::process_button_events (ButtonEvent& button) +{ + int x = input_context->get_mouse_x(); + int y = input_context->get_mouse_y(); + + if (button.pressed) + { + switch (button.id) + { + case BUTTON_FULLSCREEN: + // graphic_centext->toggle_fullscreen(); + break; + + case BUTTON_START: + Controller::instance()->start_simulation (); + break; + + case BUTTON_PRIMARY: + current_component->on_primary_button_press(x, y); + break; + + case BUTTON_SECONDARY: + current_component->on_secondary_button_press(x, y); + break; + + case BUTTON_TERTIARY: + current_component->on_tertiary_button_press(x, y); + break; + + case BUTTON_SCALE: + current_component->on_scale_press (x, y); + break; + + case BUTTON_FIX: + current_component->on_fix_press (x, y); + break; + + case BUTTON_JOIN: + current_component->on_join_press (x, y); + break; + + case BUTTON_GRID: + current_component->on_grid_press(x, y); + break; + + case BUTTON_DELETE: + current_component->on_delete_press (x, y); + break; + case BUTTON_DUPLICATE: + current_component->on_duplicate_press (x, y); + break; + + case BUTTON_SCROLL_LEFT: + current_component->scroll_left (); + break; + + case BUTTON_SCROLL_RIGHT: + current_component->scroll_right (); + break; + + case BUTTON_SCROLL_UP: + current_component->scroll_up (); + break; + + case BUTTON_SCROLL_DOWN: + current_component->scroll_down (); + break; + + case BUTTON_CLEAR: + Controller::instance()->clear_world (); + break; + + case BUTTON_UNDO: + Controller::instance()->undo (); + break; + + case BUTTON_REDO: + Controller::instance()->redo (); + break; + + case BUTTON_ACTIONCAM: + Controller::instance()->set_action_cam (!Controller::instance()->get_action_cam ()); + break; + + case BUTTON_HIDEDOTS: + Controller::instance()->set_hide_dots (!Controller::instance()->get_hide_dots ()); + break; + + case BUTTON_ESCAPE: + ScreenManager::instance()->quit(); + break; + + case BUTTON_MODE_CHANGE: + if (WorldViewComponent::instance()->get_mode () == WorldViewComponent::INSERT_MODE) + { + WorldViewComponent::instance()->set_mode(WorldViewComponent::SELECT_MODE); + } + else + { + WorldViewComponent::instance()->set_mode(WorldViewComponent::INSERT_MODE); + } + break; + + case BUTTON_TOGGLESLOWMO: + Controller::instance()->set_slow_down (!Controller::instance()->slow_down_active ()); + break; + + case BUTTON_RUN: + Controller::instance()->start_simulation (); + break; + + case BUTTON_QUICKSAVE0: + case BUTTON_QUICKSAVE1: + case BUTTON_QUICKSAVE2: + case BUTTON_QUICKSAVE3: + case BUTTON_QUICKSAVE4: + case BUTTON_QUICKSAVE5: + case BUTTON_QUICKSAVE6: + case BUTTON_QUICKSAVE7: + case BUTTON_QUICKSAVE8: + case BUTTON_QUICKSAVE9: + Controller::instance()->save_to_slot (button.id - BUTTON_QUICKSAVE0); + break; + + case BUTTON_QUICKLOAD0: + case BUTTON_QUICKLOAD1: + case BUTTON_QUICKLOAD2: + case BUTTON_QUICKLOAD3: + case BUTTON_QUICKLOAD4: + case BUTTON_QUICKLOAD5: + case BUTTON_QUICKLOAD6: + case BUTTON_QUICKLOAD7: + case BUTTON_QUICKLOAD8: + case BUTTON_QUICKLOAD9: + Controller::instance()->load_from_slot (button.id - BUTTON_QUICKLOAD0); + break; + + case BUTTON_ZOOM_OUT: + current_component->wheel_down (x, y); + break; + + case BUTTON_ZOOM_IN: + current_component->wheel_up (x, y); + break; + + default: + current_component->on_button_press (button.id, x, y); + break; + } + } + else // button released + { + switch (button.id) + { + case BUTTON_PRIMARY: + current_component->on_primary_button_release(x, y); + break; + + case BUTTON_SECONDARY: + current_component->on_secondary_button_release(x, y); + break; + + case BUTTON_TERTIARY: + current_component->on_tertiary_button_release(x, y); + break; + + default: +#ifdef DEBUG + std::cout << "GUIManager:process_button_events: Got unhandled BUTTON_EVENT release: " + << button.id << std::endl; +#endif + break; + } + } +} + +void +GUIManager::process_events () +{ + int x = input_context->get_mouse_x(); + int y = input_context->get_mouse_y(); + + if (grabbing_component && (last_x != x || last_y != y)) + { + grabbing_component->on_mouse_move (x, y, x - last_x, y - last_y); + } + if (current_component != grabbing_component) + { + current_component->on_mouse_move (x, y, x - last_x, y - last_y); + } + + if (!grabbing_component) + { + current_component = find_component_at (x, y); + + if (last_component != current_component) + { + if (current_component) current_component->on_mouse_enter (); + if (last_component) + last_component->on_mouse_leave (); + + last_component = current_component; + } + } + else + { + GUIComponent* comp = find_component_at (x, y); + + if (comp != grabbing_component) + { + grabbing_component->on_mouse_leave(); + last_component = comp; + } + else if (last_component != grabbing_component) + { + grabbing_component->on_mouse_enter(); + } + } + + Event event; + while (input_context->get_event (&event)) + { + if (current_component) + { + switch (event.type) + { + case BUTTON_EVENT: + //std::cout << "BUTTON_EVENT: " << event.button.id << " state: " << event.button.pressed << std::endl; + process_button_events (event.button); + break; + default: + std::cout << "GUIManager: Unhandled event type" << std::endl; + break; + } + } + } + + last_x = x; + last_y = y; +} + +void +GUIManager::grab_mouse (GUIComponent* comp) +{ + grabbing_component = comp; + current_component = comp; +} + +void +GUIManager::ungrab_mouse (GUIComponent* comp) +{ + grabbing_component = 0; +} + +void +GUIManager::add (GUIComponent* c) +{ + assert(c); + components.push_back(c); +} + +/* EOF */ diff --git a/gui_manager.hxx b/gui_manager.hxx new file mode 100644 index 0000000..591ac5f --- /dev/null +++ b/gui_manager.hxx @@ -0,0 +1,77 @@ +// $Id: gui_manager.hxx,v 1.16 2003/07/24 10:10:02 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GUI_MANAGER_HXX +#define HEADER_CONSTRUO_GUI_MANAGER_HXX + +#include + +class GUIComponent; +struct ButtonEvent; + +/** The GUIManager is basically the place where the main loop runs */ +class GUIManager +{ +private: + unsigned int frame_count; + unsigned int start_time; + + /** component where the mouse is currently over */ + GUIComponent* last_component; + GUIComponent* current_component; + + GUIComponent* grabbing_component; + + int last_x; + int last_y; + + /** A collection of GUI components aka widgets */ + typedef std::vector ComponentLst; + ComponentLst components; + + void process_events (); + void process_button_events (ButtonEvent&); + GUIComponent* find_component_at (int, int); +public: + GUIManager (); + virtual ~GUIManager (); + + /** Launches a single run from the games main loop */ + virtual void run_once (); + + /** Draw all the GUI components */ + void draw (); + virtual void update() {} + + virtual void draw_overlay () {} + + /** Stops the GUIManager */ + void quit(); + + /** add a GUIComponent, the component will get deleted after in the + destruction of the guimanager */ + void add (GUIComponent*); + + void grab_mouse (GUIComponent*); + void ungrab_mouse (GUIComponent*); +}; + +#endif + +/* EOF */ diff --git a/gui_new_file_button.cxx b/gui_new_file_button.cxx new file mode 100644 index 0000000..7c0e727 --- /dev/null +++ b/gui_new_file_button.cxx @@ -0,0 +1,73 @@ +// $Id: gui_new_file_button.cxx,v 1.2 2003/07/25 11:07:44 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include "controller.hxx" +#include "screen_manager.hxx" +#include "gui_new_file_button.hxx" + +GUINewFileButton::GUINewFileButton(const std::string& p) + : GUIFileButton (p), pathname (p) +{ + +} + +void +GUINewFileButton::draw(GraphicContext* parent_gc) +{ + parent_gc->draw_fill_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Color (0x999900FF)); + + parent_gc->draw_string (x_pos + 20, y_pos + 75, "..:: Save to new file ::.."); + //parent_gc->draw_string (x_pos + 30, y_pos + 40, filename); + + if (mouse_over) + parent_gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Color (0xFFFFFFFF)); + else + parent_gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Color (0xFF0000FF)); +} + +std::string +GUINewFileButton::generate_filename() +{ + char buffer[32]; + time_t curtime; + struct tm *loctime; + curtime = time (NULL); + loctime = localtime(&curtime); + strftime(buffer, 32, "%Y%m%d-%H%M%S", loctime); + + return pathname + "/" + std::string(buffer) + ".construo"; +} + +void +GUINewFileButton::on_click() +{ + std::string filename = generate_filename(); + std::cout << "Saving to: " << filename << std::endl; + Controller::instance()->save_world (filename); + ScreenManager::instance()->set_gui(ScreenManager::WORLD_GUI); +} + +/* EOF */ diff --git a/gui_new_file_button.hxx b/gui_new_file_button.hxx new file mode 100644 index 0000000..5ac3760 --- /dev/null +++ b/gui_new_file_button.hxx @@ -0,0 +1,41 @@ +// $Id: gui_new_file_button.hxx,v 1.2 2003/07/25 11:07:44 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GUI_NEW_FILE_BUTTON_HXX +#define HEADER_CONSTRUO_GUI_NEW_FILE_BUTTON_HXX + +#include "gui_file_button.hxx" + +/** */ +class GUINewFileButton : public GUIFileButton +{ +private: + std::string pathname; + + std::string generate_filename(); +public: + GUINewFileButton(const std::string& p); + + void draw(GraphicContext* parent_gc); + void on_click(); +}; + +#endif + +/* EOF */ diff --git a/gui_window.cxx b/gui_window.cxx new file mode 100644 index 0000000..506210b --- /dev/null +++ b/gui_window.cxx @@ -0,0 +1,68 @@ +// $Id: gui_window.cxx,v 1.3 2003/01/10 20:44:09 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "graphic_context.hxx" +#include "colors.hxx" +#include "gui_window.hxx" +#include "gui_label.hxx" +#include "gui_buttons.hxx" + +void yes_press() +{ +} + +void no_press() +{ +} + +GUIWindow::GUIWindow (const std::string& t, int x, int y, int width, int height) + : GUIChildManager (x, y, width, height), + title (t) +{ + mouse_over = true; + add (new GUILabel ("Do you really want to quit?", 10, 10, 100, 30)); + add (new GUIGenericButton("Yes", 10, 50, 80, 25, yes_press)); + add (new GUIGenericButton("No", 110, 50, 80, 25, no_press)); +} + +GUIWindow::~GUIWindow () +{ +} + +void +GUIWindow::draw(GraphicContext* gc) +{ + std::cout << "Window draw.." << mouse_over << std::endl; + /*if (mouse_over) + { + std::cout << "MOUSEOVER" << std::endl; + gc->draw_fill_rect(x_pos, y_pos, x_pos + width, y_pos + height, Colors::button_bg_hover); + gc->draw_rect(x_pos, y_pos, x_pos + width, y_pos + height, Colors::button_fg_hover); + } + else + { + std::cout << "MOUSEOVER NOT OVER" << std::endl; + gc->draw_fill_rect(x_pos, y_pos, x_pos + width, y_pos + height, Colors::button_bg_passive); + gc->draw_rect(x_pos, y_pos, x_pos + width, y_pos + height, Colors::button_fg_passive); + }*/ + + GUIChildManager::draw(gc); +} + +/* EOF */ diff --git a/gui_window.hxx b/gui_window.hxx new file mode 100644 index 0000000..a21210f --- /dev/null +++ b/gui_window.hxx @@ -0,0 +1,46 @@ +// $Id: gui_window.hxx,v 1.2 2003/01/10 20:44:09 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_GUI_WINDOW_HXX +#define HEADER_CONSTRUO_GUI_WINDOW_HXX + +#include +#include +#include "zoom_graphic_context.hxx" +#include "gui_child_manager.hxx" + +/** */ +class GUIWindow : public GUIChildManager +{ +private: + std::string title; + bool mouse_over; +public: + GUIWindow (const std::string&, int x, int y, int width, int height); + ~GUIWindow (); + + void draw(GraphicContext*); + void on_mouse_enter () { mouse_over = true; } + void on_mouse_leave () { mouse_over = false; } + +}; + +#endif + +/* EOF */ diff --git a/input_context.cxx b/input_context.cxx new file mode 100644 index 0000000..6e7a717 --- /dev/null +++ b/input_context.cxx @@ -0,0 +1,37 @@ +// $Id: input_context.cxx,v 1.3 2003/01/07 21:01:42 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "input_context.hxx" + +bool +InputContext::get_event(Event* event) +{ + if (!events.empty()) + { + *event = events.front(); + events.pop(); + return true; + } + else + { + return false; + } +} + +/* EOF */ diff --git a/input_context.hxx b/input_context.hxx new file mode 100644 index 0000000..3664179 --- /dev/null +++ b/input_context.hxx @@ -0,0 +1,59 @@ +// $Id: input_context.hxx,v 1.9 2003/01/05 15:29:15 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_INPUT_CONTEXT_HXX +#define HEADER_CONSTRUO_INPUT_CONTEXT_HXX + +#include +#include "vector2d.hxx" +#include "keys.hxx" +#include "buttons.hxx" +#include "events.hxx" + +/** */ +class InputContext +{ +protected: + std::queue events; +public: + InputContext () {} + virtual ~InputContext () {} + + // Polling functions + + /** @return true if the button with the given keycode is currently + pressed, false otherwise */ + virtual bool get_key (int key) =0; + + /** @return mouse x coordinate */ + virtual int get_mouse_x () =0; + + /** @return mouse y coordinate */ + virtual int get_mouse_y () =0; + + Vector2d get_mouse_pos () { return Vector2d(get_mouse_x (), get_mouse_y()); } + + /** If an event is in the queue, copy it to \a event and return + true, else return false and leave \a event untouched */ + bool get_event(Event* event); +}; + +#endif + +/* EOF */ diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..36f96f3 --- /dev/null +++ b/install-sh @@ -0,0 +1,276 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "$0: no input file specified" >&2 + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d "$dst" ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "$0: $src does not exist" >&2 + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "$0: no destination specified" >&2 + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d "$dst" ] + then + dst=$dst/`basename "$src"` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-$defaultIFS}" + +oIFS=$IFS +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS=$oIFS + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp=$pathcomp$1 + shift + + if [ ! -d "$pathcomp" ] ; + then + $mkdirprog "$pathcomp" + else + : + fi + + pathcomp=$pathcomp/ +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd "$dst" && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename "$dst"` + else + : + fi + +# Make a couple of temp file names in the proper directory. + + dsttmp=$dstdir/#inst.$$# + rmtmp=$dstdir/#rm.$$# + +# Trap to clean up temp files at exit. + + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + +# Move or copy the file name to the temp name + + $doit $instcmd "$src" "$dsttmp" && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && + +# Now remove or move aside any old file at destination location. We try this +# two ways since rm can't unlink itself on some systems and the destination +# file might be busy for other reasons. In this case, the final cleanup +# might fail but the new file should still install successfully. + +{ + if [ -f "$dstdir/$dstfile" ] + then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || + $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || + { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi +} && + +# Now rename the file to the real destination. + + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + +fi && + +# The final little trick to "correctly" pass the exit status to the exit trap. + +{ + (exit 0); exit +} diff --git a/keep_alive.hxx b/keep_alive.hxx new file mode 100644 index 0000000..103b8bf --- /dev/null +++ b/keep_alive.hxx @@ -0,0 +1,45 @@ +// $Id: keep_alive.hxx,v 1.2 2002/11/20 18:08:16 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_KEEP_ALIVE_HXX +#define HEADER_CONSTRUO_KEEP_ALIVE_HXX + +#include "keep_alive_mgr.hxx" + +/** Each object that inherit from KeepAlive gets the keep_alive() + function called once per game-loop, it is meant to catch XEvents + and things like that. */ +class KeepAlive +{ +private: +public: + KeepAlive () { + KeepAliveMgr::register_obj(this); + } + + virtual ~KeepAlive () { + KeepAliveMgr::unregister_obj(this); + } + + virtual void keep_alive () =0; +}; + +#endif + +/* EOF */ diff --git a/keep_alive_mgr.cxx b/keep_alive_mgr.cxx new file mode 100644 index 0000000..1755518 --- /dev/null +++ b/keep_alive_mgr.cxx @@ -0,0 +1,47 @@ +// $Id: keep_alive_mgr.cxx,v 1.2 2002/11/20 18:08:16 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "keep_alive.hxx" +#include "keep_alive_mgr.hxx" + +std::vector KeepAliveMgr::lst; + +void +KeepAliveMgr::register_obj (KeepAlive* obj) +{ + lst.push_back (obj); +} + +void +KeepAliveMgr::unregister_obj (KeepAlive*) +{ + // FIXME: +} + +void +KeepAliveMgr::keep_alive () +{ + for (std::vector::iterator i = lst.begin (); + i != lst.end (); ++i) + { + (*i)->keep_alive (); + } +} + +/* EOF */ diff --git a/keep_alive_mgr.hxx b/keep_alive_mgr.hxx new file mode 100644 index 0000000..3fe73b5 --- /dev/null +++ b/keep_alive_mgr.hxx @@ -0,0 +1,39 @@ +// $Id: keep_alive_mgr.hxx,v 1.2 2002/11/20 18:08:16 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_KEEP_ALIVE_MGR_HXX +#define HEADER_CONSTRUO_KEEP_ALIVE_MGR_HXX + +#include + +class KeepAlive; + +class KeepAliveMgr +{ + static std::vector lst; +public: + static void register_obj (KeepAlive*); + static void unregister_obj (KeepAlive*); + + static void keep_alive (); +}; + +#endif + +/* EOF */ diff --git a/keys.hxx b/keys.hxx new file mode 100644 index 0000000..74afba5 --- /dev/null +++ b/keys.hxx @@ -0,0 +1,30 @@ +// $Id: keys.hxx,v 1.2 2002/11/20 18:08:16 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_KEYS_HXX +#define HEADER_CONSTRUO_KEYS_HXX + +enum { + KEY_ESCAPE, + KEY_ENTER +}; + +#endif + +/* EOF */ diff --git a/lisp_reader.cxx b/lisp_reader.cxx new file mode 100644 index 0000000..78ff609 --- /dev/null +++ b/lisp_reader.cxx @@ -0,0 +1,108 @@ +// $Id: lisp_reader.cxx,v 1.5 2002/12/28 00:19:53 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "construo_error.hxx" +#include "lisp_reader.hxx" + +LispReader::LispReader (lisp_object_t* l) + : lst (l) +{ + //std::cout << "LispReader: " << std::flush; + //lisp_dump(lst, stdout); + //std::cout << std::endl; +} + +lisp_object_t* +LispReader::search_for(const char* name) +{ + //std::cout << "LispReader::search_for(" << name << ")" << std::endl; + lisp_object_t* cursor = lst; + + while(!lisp_nil_p(cursor)) + { + lisp_object_t* cur = lisp_car(cursor); + + if (!lisp_cons_p(cur) || !lisp_symbol_p (lisp_car(cur))) + { + lisp_dump(cur, stdout); + throw ConstruoError (std::string("LispReader: Read error in search_for ") + name); + } + else + { + if (strcmp(lisp_symbol(lisp_car(cur)), name) == 0) + { + return lisp_cdr(cur); + } + } + + cursor = lisp_cdr (cursor); + } + return 0; +} + +bool +LispReader::read_vector (const char* name, Vector2d* vec) +{ + lisp_object_t* obj = search_for (name); + if (obj) + { + vec->x = lisp_real(lisp_car(obj)); + vec->y = lisp_real(lisp_car(lisp_cdr(obj))); + return true; + } + return false; +} + +bool +LispReader::read_int (const char* name, int* i) +{ + lisp_object_t* obj = search_for (name); + if (obj) + { + *i = lisp_integer(lisp_car(obj)); + return true; + } + return false; +} + +bool +LispReader::read_float (const char* name, float* f) +{ + lisp_object_t* obj = search_for (name); + if (obj) + { + *f = lisp_real(lisp_car(obj)); + return true; + } + return false; +} + +bool +LispReader::read_bool (const char* name, bool* b) +{ + lisp_object_t* obj = search_for (name); + if (obj) + { + *b = lisp_boolean(lisp_car(obj)); + return true; + } + return false; +} + +/* EOF */ diff --git a/lisp_reader.hxx b/lisp_reader.hxx new file mode 100644 index 0000000..c284586 --- /dev/null +++ b/lisp_reader.hxx @@ -0,0 +1,45 @@ +// $Id: lisp_reader.hxx,v 1.5 2003/01/08 23:14:59 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_LISP_READER_HXX +#define HEADER_LISP_READER_HXX + +#include "lispreader.hxx" +#include "vector2d.hxx" + +/** */ +class LispReader +{ +private: + lisp_object_t* lst; + + lisp_object_t* search_for(const char* name); +public: + /** cur == ((pos 1 2 3) (id 12 3 4)...) */ + LispReader (lisp_object_t* l); + + bool read_vector (const char* name, Vector2d* vec); + bool read_int (const char* name, int* i); + bool read_float (const char* name, float* f); + bool read_bool (const char* name, bool* b); +}; + +#endif + +/* EOF */ diff --git a/lisp_writer.cxx b/lisp_writer.cxx new file mode 100644 index 0000000..4496b27 --- /dev/null +++ b/lisp_writer.cxx @@ -0,0 +1,110 @@ +// $Id: lisp_writer.cxx,v 1.3 2003/07/24 10:10:02 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "lisp_writer.hxx" + +LispWriter::LispWriter (const char* name) +{ + lisp_objs.push_back(lisp_make_symbol (name)); +} + +void +LispWriter::append (lisp_object_t* obj) +{ + lisp_objs.push_back(obj); +} + +lisp_object_t* +LispWriter::make_list3 (lisp_object_t* a, lisp_object_t* b, lisp_object_t* c) +{ + return lisp_make_cons (a, lisp_make_cons(b, lisp_make_cons(c, lisp_nil()))); +} + +lisp_object_t* +LispWriter::make_list2 (lisp_object_t* a, lisp_object_t* b) +{ + return lisp_make_cons (a, lisp_make_cons(b, lisp_nil())); +} + +void +LispWriter::write_vector (const char* name, const Vector2d& pos) +{ + append(lisp_make_cons (lisp_make_symbol (name), + make_list2(lisp_make_real(pos.x), + lisp_make_real(pos.y)))); +} + +void +LispWriter::write_float (const char* name, float f) +{ + append(make_list2 (lisp_make_symbol (name), + lisp_make_real(f))); +} + +void +LispWriter::write_int (const char* name, int i) +{ + append(make_list2 (lisp_make_symbol (name), + lisp_make_integer(i))); +} + +void +LispWriter::write_string (const char* name, const char* str) +{ + append(make_list2 (lisp_make_symbol (name), + lisp_make_string(str))); +} + +void +LispWriter::write_symbol (const char* name, const char* symname) +{ + append(make_list2 (lisp_make_symbol (name), + lisp_make_symbol(symname))); +} + +void +LispWriter::write_lisp_obj(const char* name, lisp_object_t* lst) +{ + append(make_list2 (lisp_make_symbol (name), + lst)); +} + +void +LispWriter::write_boolean (const char* name, bool b) +{ + append(make_list2 (lisp_make_symbol (name), + lisp_make_boolean(b))); +} + +lisp_object_t* +LispWriter::create_lisp () +{ + lisp_object_t* lisp_obj = lisp_nil(); + + for(std::vector::reverse_iterator i = lisp_objs.rbegin (); + i != lisp_objs.rend (); ++i) + { + lisp_obj = lisp_make_cons (*i, lisp_obj); + } + lisp_objs.clear(); + + return lisp_obj; +} + +/* EOF */ diff --git a/lisp_writer.hxx b/lisp_writer.hxx new file mode 100644 index 0000000..3c1b84c --- /dev/null +++ b/lisp_writer.hxx @@ -0,0 +1,53 @@ +// $Id: lisp_writer.hxx,v 1.4 2003/07/24 10:10:02 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_LISP_WRITER_HXX +#define HEADER_CONSTRUO_LISP_WRITER_HXX + +#include + +#include "lispreader.hxx" +#include "vector2d.hxx" + +/** */ +class LispWriter +{ +private: + std::vector lisp_objs; + + void append (lisp_object_t* obj); + lisp_object_t* make_list3 (lisp_object_t*, lisp_object_t*, lisp_object_t*); + lisp_object_t* make_list2 (lisp_object_t*, lisp_object_t*); +public: + LispWriter (const char* name); + void write_vector (const char* name, const Vector2d& pos); + void write_float (const char* name, float f); + void write_int (const char* name, int i); + void write_boolean (const char* name, bool b); + void write_string (const char* name, const char* str); + void write_symbol (const char* name, const char* symname); + void write_lisp_obj(const char* name, lisp_object_t* lst); + + /** caller is responible to free the returned lisp_object_t */ + lisp_object_t* create_lisp (); +}; + +#endif + +/* EOF */ diff --git a/lispreader.cxx b/lispreader.cxx new file mode 100644 index 0000000..d572172 --- /dev/null +++ b/lispreader.cxx @@ -0,0 +1,727 @@ +/* $Id: lispreader.cxx,v 1.2 2003/01/08 23:30:43 grumbel Exp $ */ +/* + * lispreader.c + * + * Copyright (C) 1998-2000 Mark Probst + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include + +#include "construo_error.hxx" +#include + +#define TOKEN_ERROR -1 +#define TOKEN_EOF 0 +#define TOKEN_OPEN_PAREN 1 +#define TOKEN_CLOSE_PAREN 2 +#define TOKEN_SYMBOL 3 +#define TOKEN_STRING 4 +#define TOKEN_INTEGER 5 +#define TOKEN_REAL 6 +#define TOKEN_PATTERN_OPEN_PAREN 7 +#define TOKEN_DOT 8 +#define TOKEN_TRUE 9 +#define TOKEN_FALSE 10 + + +#define MAX_TOKEN_LENGTH 1024 + +static char token_string[MAX_TOKEN_LENGTH + 1] = ""; +static int token_length = 0; + +static lisp_object_t end_marker = { LISP_TYPE_EOF }; +static lisp_object_t error_object = { LISP_TYPE_PARSE_ERROR }; +static lisp_object_t close_paren_marker = { LISP_TYPE_PARSE_ERROR }; +static lisp_object_t dot_marker = { LISP_TYPE_PARSE_ERROR }; + +static void +_token_clear (void) +{ + token_string[0] = '\0'; + token_length = 0; +} + +static void +_token_append (char c) +{ + assert(token_length < MAX_TOKEN_LENGTH); + + token_string[token_length++] = c; + token_string[token_length] = '\0'; +} + +static int +_next_char (lisp_stream_t *stream) +{ + switch (stream->type) + { + case LISP_STREAM_FILE : + return getc(stream->v.file); + + case LISP_STREAM_STRING : + { + char c = stream->v.string.buf[stream->v.string.pos]; + + if (c == 0) + return EOF; + + ++stream->v.string.pos; + + return c; + } + + case LISP_STREAM_ANY: + return stream->v.any.next_char(stream->v.any.data); + } + assert(0); + return EOF; +} + +static void +_unget_char (char c, lisp_stream_t *stream) +{ + switch (stream->type) + { + case LISP_STREAM_FILE : + ungetc(c, stream->v.file); + break; + + case LISP_STREAM_STRING : + --stream->v.string.pos; + break; + + case LISP_STREAM_ANY: + stream->v.any.unget_char(c, stream->v.any.data); + break; + + default : + assert(0); + } +} + +static int +_scan (lisp_stream_t *stream) +{ + static char *delims = "\"();"; + + int c; + + _token_clear(); + + do + { + c = _next_char(stream); + if (c == EOF) + return TOKEN_EOF; + else if (c == ';') /* comment start */ + while (1) + { + c = _next_char(stream); + if (c == EOF) + return TOKEN_EOF; + else if (c == '\n') + break; + } + } while (isspace(c)); + + switch (c) + { + case '(' : + return TOKEN_OPEN_PAREN; + + case ')' : + return TOKEN_CLOSE_PAREN; + + case '"' : + while (1) + { + c = _next_char(stream); + if (c == EOF) + return TOKEN_ERROR; + if (c == '"') + break; + if (c == '\\') + { + c = _next_char(stream); + + switch (c) + { + case EOF : + return TOKEN_ERROR; + + case 'n' : + c = '\n'; + break; + + case 't' : + c = '\t'; + break; + } + } + + _token_append(c); + } + return TOKEN_STRING; + + case '#' : + c = _next_char(stream); + if (c == EOF) + return TOKEN_ERROR; + + switch (c) + { + case 't' : + return TOKEN_TRUE; + + case 'f' : + return TOKEN_FALSE; + + case '?' : + c = _next_char(stream); + if (c == EOF) + return TOKEN_ERROR; + + if (c == '(') + return TOKEN_PATTERN_OPEN_PAREN; + else + return TOKEN_ERROR; + } + return TOKEN_ERROR; + + default : + if (isdigit(c) || c == '-') + { + int have_nondigits = 0; + int have_digits = 0; + int have_floating_point = 0; + + do + { + if (isdigit(c)) + have_digits = 1; + else if (c == '.') + have_floating_point++; + _token_append(c); + + c = _next_char(stream); + + if (c != EOF && !isdigit(c) && !isspace(c) && c != '.' && !strchr(delims, c)) + have_nondigits = 1; + } while (c != EOF && !isspace(c) && !strchr(delims, c)); + + if (c != EOF) + _unget_char(c, stream); + + if (have_nondigits || !have_digits || have_floating_point > 1) + return TOKEN_SYMBOL; + else if (have_floating_point == 1) + return TOKEN_REAL; + else + return TOKEN_INTEGER; + } + else + { + if (c == '.') + { + c = _next_char(stream); + if (c != EOF && !isspace(c) && !strchr(delims, c)) + _token_append('.'); + else + { + _unget_char(c, stream); + return TOKEN_DOT; + } + } + do + { + _token_append(c); + c = _next_char(stream); + } while (c != EOF && !isspace(c) && !strchr(delims, c)); + if (c != EOF) + _unget_char(c, stream); + + return TOKEN_SYMBOL; + } + } + + assert(0); + return TOKEN_ERROR; +} + +static lisp_object_t* +lisp_object_alloc (int type) +{ + lisp_object_t *obj = (lisp_object_t*)malloc(sizeof(lisp_object_t)); + + obj->type = type; + + return obj; +} + +lisp_stream_t* +lisp_stream_init_file (lisp_stream_t *stream, FILE *file) +{ + stream->type = LISP_STREAM_FILE; + stream->v.file = file; + + return stream; +} + +lisp_stream_t* +lisp_stream_init_string (lisp_stream_t *stream, char *buf) +{ + stream->type = LISP_STREAM_STRING; + stream->v.string.buf = buf; + stream->v.string.pos = 0; + + return stream; +} + +lisp_stream_t* +lisp_stream_init_any (lisp_stream_t *stream, void *data, + int (*next_char) (void *data), + void (*unget_char) (char c, void *data)) +{ + assert(next_char != 0 && unget_char != 0); + + stream->type = LISP_STREAM_ANY; + stream->v.any.data = data; + stream->v.any.next_char= next_char; + stream->v.any.unget_char = unget_char; + + return stream; +} + +lisp_object_t* +lisp_make_integer (int value) +{ + lisp_object_t *obj = lisp_object_alloc(LISP_TYPE_INTEGER); + + obj->v.integer = value; + + return obj; +} + +lisp_object_t* +lisp_make_real (float value) +{ + lisp_object_t *obj = lisp_object_alloc(LISP_TYPE_REAL); + + obj->v.real = value; + + return obj; +} + +lisp_object_t* +lisp_make_symbol (const char *value) +{ + lisp_object_t *obj = lisp_object_alloc(LISP_TYPE_SYMBOL); + + obj->v.string = strdup(value); + + return obj; +} + +lisp_object_t* +lisp_make_string (const char *value) +{ + lisp_object_t *obj = lisp_object_alloc(LISP_TYPE_STRING); + + obj->v.string = strdup(value); + + return obj; +} + +lisp_object_t* +lisp_make_cons (lisp_object_t *car, lisp_object_t *cdr) +{ + lisp_object_t *obj = lisp_object_alloc(LISP_TYPE_CONS); + + obj->v.cons.car = car; + obj->v.cons.cdr = cdr; + + return obj; +} + +lisp_object_t* +lisp_make_boolean (int value) +{ + lisp_object_t *obj = lisp_object_alloc(LISP_TYPE_BOOLEAN); + + obj->v.integer = value ? 1 : 0; + + return obj; +} + +static lisp_object_t* +lisp_make_pattern_cons (lisp_object_t *car, lisp_object_t *cdr) +{ + lisp_object_t *obj = lisp_object_alloc(LISP_TYPE_PATTERN_CONS); + + obj->v.cons.car = car; + obj->v.cons.cdr = cdr; + + return obj; +} + +lisp_object_t* +lisp_read (lisp_stream_t *in) +{ + int token = _scan(in); + lisp_object_t *obj = lisp_nil(); + + if (token == TOKEN_EOF) + return &end_marker; + + switch (token) + { + case TOKEN_ERROR : + return &error_object; + + case TOKEN_EOF : + return &end_marker; + + case TOKEN_OPEN_PAREN : + case TOKEN_PATTERN_OPEN_PAREN : + { + lisp_object_t *last = lisp_nil(), *car; + + do + { + car = lisp_read(in); + if (car == &error_object || car == &end_marker) + { + lisp_free(obj); + return &error_object; + } + else if (car == &dot_marker) + { + if (lisp_nil_p(last)) + { + lisp_free(obj); + return &error_object; + } + + car = lisp_read(in); + if (car == &error_object || car == &end_marker) + { + lisp_free(obj); + return car; + } + else + { + last->v.cons.cdr = car; + + if (_scan(in) != TOKEN_CLOSE_PAREN) + { + lisp_free(obj); + return &error_object; + } + + car = &close_paren_marker; + } + } + else if (car != &close_paren_marker) + { + if (lisp_nil_p(last)) + obj = last = (token == TOKEN_OPEN_PAREN ? lisp_make_cons(car, lisp_nil()) : lisp_make_pattern_cons(car, lisp_nil())); + else + last = last->v.cons.cdr = lisp_make_cons(car, lisp_nil()); + } + } while (car != &close_paren_marker); + } + return obj; + + case TOKEN_CLOSE_PAREN : + return &close_paren_marker; + + case TOKEN_SYMBOL : + return lisp_make_symbol(token_string); + + case TOKEN_STRING : + return lisp_make_string(token_string); + + case TOKEN_INTEGER : + return lisp_make_integer(atoi(token_string)); + + case TOKEN_REAL : + return lisp_make_real((float)atof(token_string)); + + case TOKEN_DOT : + return &dot_marker; + + case TOKEN_TRUE : + return lisp_make_boolean(1); + + case TOKEN_FALSE : + return lisp_make_boolean(0); + } + + assert(0); + return &error_object; +} + +void +lisp_free (lisp_object_t *obj) +{ + if (obj == 0) + return; + + switch (obj->type) + { + case LISP_TYPE_INTERNAL : + case LISP_TYPE_PARSE_ERROR : + case LISP_TYPE_EOF : + return; + + case LISP_TYPE_SYMBOL : + case LISP_TYPE_STRING : + free(obj->v.string); + break; + + case LISP_TYPE_CONS : + case LISP_TYPE_PATTERN_CONS : + lisp_free(obj->v.cons.car); + lisp_free(obj->v.cons.cdr); + break; + + case LISP_TYPE_PATTERN_VAR : + lisp_free(obj->v.pattern.sub); + break; + } + + free(obj); +} + +lisp_object_t* +lisp_read_from_string (const char *buf) +{ + lisp_stream_t stream; + + lisp_stream_init_string(&stream, (char*)buf); + return lisp_read(&stream); +} + +int +lisp_type (lisp_object_t *obj) +{ + if (obj == 0) + return LISP_TYPE_NIL; + return obj->type; +} + +int +lisp_integer (lisp_object_t *obj) +{ + assert(obj->type == LISP_TYPE_INTEGER); + + return obj->v.integer; +} + +char* +lisp_symbol (lisp_object_t *obj) +{ + assert(obj->type == LISP_TYPE_SYMBOL); + + return obj->v.string; +} + +char* +lisp_string (lisp_object_t *obj) +{ + if (obj->type != LISP_TYPE_STRING) + ConstruoError::raise("lispreader Error: obj->type != LISP_TYPE_STRING"); + + return obj->v.string; +} + +int +lisp_boolean (lisp_object_t *obj) +{ + assert(obj->type == LISP_TYPE_BOOLEAN); + + return obj->v.integer; +} + +float +lisp_real (lisp_object_t *obj) +{ + assert(obj->type == LISP_TYPE_REAL || obj->type == LISP_TYPE_INTEGER); + + if (obj->type == LISP_TYPE_INTEGER) + return obj->v.integer; + return obj->v.real; +} + +lisp_object_t* +lisp_car (lisp_object_t *obj) +{ + if (!(obj->type == LISP_TYPE_CONS || obj->type == LISP_TYPE_PATTERN_CONS)) + ConstruoError::raise("lispreader Error: !(obj->type == LISP_TYPE_CONS || obj->type == LISP_TYPE_PATTERN_CONS)"); + + return obj->v.cons.car; +} + +lisp_object_t* +lisp_cdr (lisp_object_t *obj) +{ + assert(obj->type == LISP_TYPE_CONS || obj->type == LISP_TYPE_PATTERN_CONS); + + return obj->v.cons.cdr; +} + +lisp_object_t* +lisp_cxr (lisp_object_t *obj, const char *x) +{ + int i; + + for (i = strlen(x) - 1; i >= 0; --i) + if (x[i] == 'a') + obj = lisp_car(obj); + else if (x[i] == 'd') + obj = lisp_cdr(obj); + else + assert(0); + + return obj; +} + +int +lisp_list_length (lisp_object_t *obj) +{ + int length = 0; + + while (obj != 0) + { + assert(obj->type == LISP_TYPE_CONS || obj->type == LISP_TYPE_PATTERN_CONS); + + ++length; + obj = obj->v.cons.cdr; + } + + return length; +} + +lisp_object_t* +lisp_list_nth_cdr (lisp_object_t *obj, int index) +{ + while (index > 0) + { + assert(obj != 0); + assert(obj->type == LISP_TYPE_CONS || obj->type == LISP_TYPE_PATTERN_CONS); + + --index; + obj = obj->v.cons.cdr; + } + + return obj; +} + +lisp_object_t* +lisp_list_nth (lisp_object_t *obj, int index) +{ + obj = lisp_list_nth_cdr(obj, index); + + assert(obj != 0); + + return obj->v.cons.car; +} + +void +lisp_dump (lisp_object_t *obj, FILE *out) +{ + if (obj == 0) + { + fprintf(out, "()"); + return; + } + + switch (lisp_type(obj)) + { + case LISP_TYPE_EOF : + fputs("#", out); + break; + + case LISP_TYPE_PARSE_ERROR : + fputs("#", out); + break; + + case LISP_TYPE_INTEGER : + fprintf(out, "%d", lisp_integer(obj)); + break; + + case LISP_TYPE_REAL : + fprintf(out, "%f", lisp_real(obj)); + break; + + case LISP_TYPE_SYMBOL : + fputs(lisp_symbol(obj), out); + break; + + case LISP_TYPE_STRING : + { + char *p; + + fputc('"', out); + for (p = lisp_string(obj); *p != 0; ++p) + { + if (*p == '"' || *p == '\\') + fputc('\\', out); + fputc(*p, out); + } + fputc('"', out); + } + break; + + case LISP_TYPE_CONS : + case LISP_TYPE_PATTERN_CONS : + fputs(lisp_type(obj) == LISP_TYPE_CONS ? "(" : "#?(", out); + while (obj != 0) + { + lisp_dump(lisp_car(obj), out); + obj = lisp_cdr(obj); + if (obj != 0) + { + if (lisp_type(obj) != LISP_TYPE_CONS + && lisp_type(obj) != LISP_TYPE_PATTERN_CONS) + { + fputs(" . ", out); + lisp_dump(obj, out); + break; + } + else + fputc(' ', out); + } + } + fputc(')', out); + break; + + case LISP_TYPE_BOOLEAN : + if (lisp_boolean(obj)) + fputs("#t", out); + else + fputs("#f", out); + break; + + default : + assert(0); + } +} diff --git a/lispreader.hxx b/lispreader.hxx new file mode 100644 index 0000000..7ca90be --- /dev/null +++ b/lispreader.hxx @@ -0,0 +1,150 @@ +/* $Id: lispreader.hxx,v 1.1 2003/01/08 23:14:59 grumbel Exp $ */ +/* + * lispreader.h + * + * Copyright (C) 1998-2000 Mark Probst + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __LISPREADER_H__ +#define __LISPREADER_H__ + +#include + +#define LISP_STREAM_FILE 1 +#define LISP_STREAM_STRING 2 +#define LISP_STREAM_ANY 3 + +#define LISP_TYPE_INTERNAL -3 +#define LISP_TYPE_PARSE_ERROR -2 +#define LISP_TYPE_EOF -1 +#define LISP_TYPE_NIL 0 +#define LISP_TYPE_SYMBOL 1 +#define LISP_TYPE_INTEGER 2 +#define LISP_TYPE_STRING 3 +#define LISP_TYPE_REAL 4 +#define LISP_TYPE_CONS 5 +#define LISP_TYPE_PATTERN_CONS 6 +#define LISP_TYPE_BOOLEAN 7 +#define LISP_TYPE_PATTERN_VAR 8 + +#define LISP_PATTERN_ANY 1 +#define LISP_PATTERN_SYMBOL 2 +#define LISP_PATTERN_STRING 3 +#define LISP_PATTERN_INTEGER 4 +#define LISP_PATTERN_REAL 5 +#define LISP_PATTERN_BOOLEAN 6 +#define LISP_PATTERN_LIST 7 +#define LISP_PATTERN_OR 8 + +typedef struct +{ + int type; + + union + { + FILE *file; + struct + { + char *buf; + int pos; + } string; + struct + { + void *data; + int (*next_char) (void *data); + void (*unget_char) (char c, void *data); + } any; + } v; +} lisp_stream_t; + +typedef struct _lisp_object_t lisp_object_t; +struct _lisp_object_t +{ + int type; + + union + { + struct + { + struct _lisp_object_t *car; + struct _lisp_object_t *cdr; + } cons; + + char *string; + int integer; + float real; + + struct + { + int type; + int index; + struct _lisp_object_t *sub; + } pattern; + } v; +}; + +lisp_stream_t* lisp_stream_init_file (lisp_stream_t *stream, FILE *file); +lisp_stream_t* lisp_stream_init_string (lisp_stream_t *stream, char *buf); +lisp_stream_t* lisp_stream_init_any (lisp_stream_t *stream, void *data, + int (*next_char) (void *data), + void (*unget_char) (char c, void *data)); + +lisp_object_t* lisp_read (lisp_stream_t *in); +void lisp_free (lisp_object_t *obj); + +lisp_object_t* lisp_read_from_string (const char *buf); + +int lisp_compile_pattern (lisp_object_t **obj, int *num_subs); +int lisp_match_pattern (lisp_object_t *pattern, lisp_object_t *obj, lisp_object_t **vars, int num_subs); +int lisp_match_string (const char *pattern_string, lisp_object_t *obj, lisp_object_t **vars); + +int lisp_type (lisp_object_t *obj); +int lisp_integer (lisp_object_t *obj); +float lisp_real (lisp_object_t *obj); +char* lisp_symbol (lisp_object_t *obj); +char* lisp_string (lisp_object_t *obj); +int lisp_boolean (lisp_object_t *obj); +lisp_object_t* lisp_car (lisp_object_t *obj); +lisp_object_t* lisp_cdr (lisp_object_t *obj); + +lisp_object_t* lisp_cxr (lisp_object_t *obj, const char *x); + +lisp_object_t* lisp_make_integer (int value); +lisp_object_t* lisp_make_real (float value); +lisp_object_t* lisp_make_symbol (const char *value); +lisp_object_t* lisp_make_string (const char *value); +lisp_object_t* lisp_make_cons (lisp_object_t *car, lisp_object_t *cdr); +lisp_object_t* lisp_make_boolean (int value); + +int lisp_list_length (lisp_object_t *obj); +lisp_object_t* lisp_list_nth_cdr (lisp_object_t *obj, int index); +lisp_object_t* lisp_list_nth (lisp_object_t *obj, int index); + +void lisp_dump (lisp_object_t *obj, FILE *out); + +#define lisp_nil() ((lisp_object_t*)0) + +#define lisp_nil_p(obj) (obj == 0) +#define lisp_integer_p(obj) (lisp_type((obj)) == LISP_TYPE_INTEGER) +#define lisp_real_p(obj) (lisp_type((obj)) == LISP_TYPE_REAL) +#define lisp_symbol_p(obj) (lisp_type((obj)) == LISP_TYPE_SYMBOL) +#define lisp_string_p(obj) (lisp_type((obj)) == LISP_TYPE_STRING) +#define lisp_cons_p(obj) (lisp_type((obj)) == LISP_TYPE_CONS) +#define lisp_boolean_p(obj) (lisp_type((obj)) == LISP_TYPE_BOOLEAN) + +#endif diff --git a/load_gui_manager.cxx b/load_gui_manager.cxx new file mode 100644 index 0000000..b3d3c03 --- /dev/null +++ b/load_gui_manager.cxx @@ -0,0 +1,47 @@ +// $Id: load_gui_manager.cxx,v 1.5 2003/07/26 00:39:31 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "gui_file_manager.hxx" +#include "construo.hxx" +#include "system_context.hxx" +#include "root_graphic_context.hxx" +#include "load_gui_manager.hxx" + +LoadGUIManager::LoadGUIManager () +{ + file_manager = new GUIFileManager (GUIFileManager::LOAD_MANAGER); + add (file_manager); +} + +void +LoadGUIManager::draw_overlay () +{ + graphic_context->draw_string(10, graphic_context->get_height() - 10, + "Load Dialog"); +} + +void +LoadGUIManager::run_once () +{ + GUIFileManager::set_instance(file_manager); + GUIManager::run_once(); + system_context->sleep (1000); +} + +/* EOF */ diff --git a/load_gui_manager.hxx b/load_gui_manager.hxx new file mode 100644 index 0000000..a280401 --- /dev/null +++ b/load_gui_manager.hxx @@ -0,0 +1,42 @@ +// $Id: load_gui_manager.hxx,v 1.3 2003/01/10 20:44:09 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_LOAD_GUI_MANAGER_HXX +#define HEADER_CONSTRUO_LOAD_GUI_MANAGER_HXX + +#include "gui_manager.hxx" + +class GUIFileManager; + +/** */ +class LoadGUIManager : public GUIManager +{ +private: + GUIFileManager* file_manager; + +public: + LoadGUIManager (); + + void draw_overlay (); + void run_once (); +}; + +#endif + +/* EOF */ diff --git a/math.hxx b/math.hxx new file mode 100644 index 0000000..8843356 --- /dev/null +++ b/math.hxx @@ -0,0 +1,73 @@ +// $Id: math.hxx,v 1.5 2003/07/24 21:43:35 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2000 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef CONSTRUO_MATH_HXX +#define CONSTRUO_MATH_HXX + +/** A collection of small math helper functions, some of them might be + equal in functionality to standard STL functions, but provided + here for portability and broken STL implementations + + @brief A collection of mathematical helper functions */ +namespace Math { + +const double pi = 3.14159265358979323846; /* pi */ +const double pi_2 = 1.57079632679489661923; /* pi/2 */ + +template +T min (const T& a, const T& b) +{ + if (a < b) + return a; + else + return b; +} + +template +T max (const T& a, const T& b) +{ + if (a > b) + return a; + else + return b; +} + +template +T mid (const T& a, const T& b, const T& c) +{ + return max((a), min((b), (c))); +} + +inline int round(float a) +{ + return int((a > 0) ? (a + .5f) : (a - .5)); +} + +/** Round x to a multilple of n */ +inline int round_to(float x, int n) +{ + if (x > 0) + return static_cast(x + (n/2)) / n * n; + else + return static_cast(x - (n/2)) / n * n; +} + +} // namespace Math + +#endif diff --git a/missing b/missing new file mode 100755 index 0000000..6a37006 --- /dev/null +++ b/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 0000000..d2d5f21 --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,111 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" 1>&2 + exit 0 + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +case $dirmode in + '') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi + ;; + *) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# End: +# mkinstalldirs ends here diff --git a/particle.cxx b/particle.cxx new file mode 100644 index 0000000..ce86837 --- /dev/null +++ b/particle.cxx @@ -0,0 +1,175 @@ +// $Id: particle.cxx,v 1.20 2003/07/24 10:10:02 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "colors.hxx" +#include "math.hxx" +#include "lisp_reader.hxx" +#include "string_utils.hxx" +#include "particle.hxx" + +using namespace StringUtils; + +Particle::Particle (int i, const Vector2d& arg_pos, const Vector2d& arg_velocity, float m, bool f) + : id (i), + pos (arg_pos), + velocity (arg_velocity), + mass (m), + fixed (f), + totale_force (0,0), + spring_links (0) +{ +} + +Particle::Particle (const Particle& p) + : id (p.id), + pos (p.pos), + velocity (p.velocity), + mass (p.mass), + fixed (p.fixed), + totale_force (0,0), + spring_links (0) +{ +} + +lisp_object_t* +Particle::serialize() +{ + LispWriter obj ("particle"); + obj.write_int ("id", id); + obj.write_vector ("pos", pos); + obj.write_vector ("velocity", velocity); + obj.write_boolean ("fixed", fixed); + obj.write_float ("mass", mass); + return obj.create_lisp (); +} + +void +Particle::draw_highlight (ZoomGraphicContext* gc) +{ + gc->get_parent_gc()->draw_fill_circle (gc->world_to_screen(pos), + Math::round(Math::max(6.0f, get_mass() + 3)), + Colors::highlight); +} + +void +Particle::draw_infos (ZoomGraphicContext* gc) +{ + Vector2d p = gc->world_to_screen(pos); + draw_velocity_vector (gc); + gc->get_parent_gc()->draw_string (p + Vector2d(20.0f, 5.0f), + "Particle: " + to_string (pos)); + gc->get_parent_gc()->draw_string (p + Vector2d(20.0f, 25.0f), + "Fixed: " + to_string (fixed)); + gc->get_parent_gc()->draw_string (p + Vector2d(20.0f, 45.0f), + "Mass : " + to_string (get_mass())); + gc->get_parent_gc()->draw_string (p + Vector2d(20.0f, 70.0f), + "Links : " + to_string (spring_links)); +} + +void +Particle::draw (ZoomGraphicContext* gc) +{ + if (pos.y < 598.5f) + { + if (fixed) + { + gc->get_parent_gc()->draw_fill_circle (gc->world_to_screen(pos), + 4, + Color(0.6f, 0.6f, 0.6f)); + } + else + { + gc->get_parent_gc()->draw_fill_circle (gc->world_to_screen(pos), + Math::round(Math::max(3.0f, get_mass())), + Color(1.0f, 0.0f, 0.0f)); + } + } +} + +void +Particle::draw_velocity_vector (ZoomGraphicContext* gc) +{ + gc->draw_line (int (pos.x), int (pos.y), + int (pos.x + velocity.x), int (pos.y + velocity.y), + Color (0.0f, 0.0f, 1.0f)); +} + +void +Particle::update (float delta) +{ + const float max_velocity = 1000.0f; + + if (fixed) return; + + velocity += totale_force * delta * (1.0f/mass); + + // damping + if (0) + velocity -= (velocity * (1.0f/mass) * delta) * 0.001f; + + //velocity *= .999999f ; + + pos += velocity * delta; + + float collision_damp = 0.2; + +#if 0 // FIXME: Replace this with a generic shape collision handling thing + // Calc collision with screen x border + if (pos.x < 0) { + velocity.x = fabs(velocity.x); + pos.x = 0; + velocity *= collision_damp; + } else if (pos.x > 799) { + velocity.x = -fabs(velocity.x); + pos.x = 799; + velocity *= collision_damp; + } + + // Calc collision with screen y border + if (pos.y < 0) { + velocity.y = fabs(velocity.y); + pos.y = 0; + velocity *= collision_damp; + } else +#endif + + if (pos.y > 599) { + velocity.y = -fabs(velocity.y); + pos.y = 599; + velocity *= collision_damp; + } + + /* + Vector2d dist = pos - Vector2d (400, 300); + if (dist.norm () < 50.0f) + { + velocity = -velocity; + }*/ + clear_force (); + + // Avoid to fast things + if (velocity.norm () > max_velocity) + { + velocity.normalize(); + velocity *= max_velocity; + } +} + + +/* EOF */ diff --git a/particle.hxx b/particle.hxx new file mode 100644 index 0000000..216af2d --- /dev/null +++ b/particle.hxx @@ -0,0 +1,108 @@ +// $Id: particle.hxx,v 1.16 2003/07/27 18:46:11 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_PARTICLE_HXX +#define HEADER_CONSTRUO_PARTICLE_HXX + +#include +#include "lisp_writer.hxx" +#include "construo.hxx" +#include "zoom_graphic_context.hxx" +#include "vector2d.hxx" + +class Particle +{ +private: + /** Id of the particle */ + int id; + +public: + /** position of the particle */ + Vector2d pos; + + /** velocity of the particle */ + Vector2d velocity; + +private: + /** the mass of the particle as 1/mass (FIXME: is this still the + case?!) */ + float mass; +public: + /** If true the particle will have a fixed position which cannot be + changed, if false the particle reacts to forces as normal. */ + bool fixed; + + /** totale force acting on particle (used as temp-var in update() to + collect the forces)*/ + Vector2d totale_force; + + /** Number of connection this particle has to other springs */ + int spring_links; + + /** The id of the particle, used for de/serialisation and copying of + the World. The id is uniq only for a single world. */ + inline int get_id () const { + return id; + } + + void add_force (const Vector2d& force) + { + if (fixed) return; + totale_force += force; + } + + void clear_force () + { + totale_force = Vector2d (); + } + + void set_fixed (bool f) { + fixed = f; + } + + bool get_fixed () { + return fixed; + } + + inline float get_mass () const { return mass; } + + void update (float delta); + void draw (ZoomGraphicContext* gc); + + /** draws the particle in highlight mode (aka if mouse is over it) */ + void draw_highlight (ZoomGraphicContext* gc); + + /** draws additional infos to this stop */ + void draw_infos (ZoomGraphicContext* gc); + + void draw_velocity_vector (ZoomGraphicContext* gc); + + lisp_object_t* serialize(); + + friend class ParticleFactory; + +private: + // Nobody beside the ParticleFactory can create particles + Particle (int id_, const Vector2d& arg_pos, const Vector2d& arg_velocity, float mass_, bool fixed_); + Particle (const Particle&); +}; + +#endif + +/* EOF */ diff --git a/particle_factory.cxx b/particle_factory.cxx new file mode 100644 index 0000000..a98dbf0 --- /dev/null +++ b/particle_factory.cxx @@ -0,0 +1,195 @@ +// $Id: particle_factory.cxx,v 1.13 2003/07/28 09:23:46 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include +#include "lisp_reader.hxx" +#include "zoom_graphic_context.hxx" +#include "particle.hxx" +#include "construo_error.hxx" +#include "world.hxx" +#include "particle_factory.hxx" + +ParticleFactory::ParticleFactory (World* w) + : world (w), particle_id_count(0) +{ +} + +ParticleFactory::ParticleFactory (World* w, lisp_object_t* cursor) + : world (w),particle_id_count (0) +{ + while(!lisp_nil_p(cursor)) + { + lisp_object_t* obj = lisp_car(cursor); + Vector2d pos; + Vector2d velocity; + float mass = 1.0f/10.0f; + bool fixed = false; + int id = -1; + + obj = lisp_cdr(obj); // skip particle 'marker' + + LispReader reader(obj); + reader.read_vector ("pos", &pos); + reader.read_vector ("velocity", &velocity); + reader.read_float ("mass", &mass); + reader.read_bool ("fixed", &fixed); + reader.read_int ("id", &id); + + switch (world->file_version) + { + case 0: + case 1: + case 2: + mass = 1.0f/10.0f; + break; + } + + if (id >= particle_id_count) + particle_id_count = id + 1; + + particles.push_back(new Particle (id, pos, velocity, mass, fixed)); + + cursor = lisp_cdr (cursor); + } +} + +ParticleFactory::ParticleFactory (World* w, const ParticleFactory& pmgr) + : world (w) +{ + particle_id_count = pmgr.particle_id_count; + for (CParticleIter i = pmgr.particles.begin (); i != pmgr.particles.end (); ++i) + particles.push_back(new Particle(**i)); +} + +ParticleFactory& +ParticleFactory::operator= (const ParticleFactory& pmgr) +{ + ConstruoAssert (0, "Don't use this"); + for (CParticleIter i = pmgr.particles.begin (); + i != pmgr.particles.end (); + ++i) + { + particles.push_back (new Particle (*(*i))); + } + return *this; +} + +Particle* +ParticleFactory::add_particle (const Vector2d& arg_pos, const Vector2d& arg_velocity, float m, bool f) +{ + Particle* p = new Particle(particle_id_count++, + arg_pos, + arg_velocity, m, f); + particles.push_back(p); + return p; +} + +Particle* +ParticleFactory::add_particle (const Particle& particle) +{ + Particle* p = new Particle (particle); + p->id = particle_id_count++, + particles.push_back(p); + return p; +} + +void +ParticleFactory::remove_particle (Particle* p) +{ + // Remove the particle itself + for (ParticleIter i = particles.begin (); i != particles.end (); ++i) + { + if (*i == p) + { + delete *i; + particles.erase(i); + return; + } + } +} + +struct particle_obsolete +{ + inline bool operator()(Particle* p) + { + return (p->spring_links == 0 + && p->velocity.x == 0 + && fabsf(p->velocity.y) < 0.1f); + } +}; + +void +ParticleFactory::update (float delta) +{ + for (CParticleIter i = particles.begin (); i != particles.end (); ++i) + (*i)->update(delta); + + // FIXME: There is no need to do this on any update, doing it only + //once a second should be enough + particles.erase(std::remove_if(particles.begin(), particles.end(), + particle_obsolete()), + particles.end()); +} + +void +ParticleFactory::draw (ZoomGraphicContext* gc) +{ + for (CParticleIter i = particles.begin (); i != particles.end (); ++i) + (*i)->draw(gc); +} + +Particle* +ParticleFactory::lookup_particle (int id) +{ + // FIXME: Could need optimization + for (ParticleIter i = particles.begin (); + i != particles.end (); + ++i) + { + if ((*i)->get_id () == id) + return *i; + } + return 0; +} + +void +ParticleFactory::clear () +{ + for (CParticleIter i = particles.begin (); i != particles.end (); ++i) + delete *i; + particles.clear (); +} + +void +ParticleFactory::write_lisp(FILE* out) +{ + fputs(" (particles\n", out); + for (CParticleIter i = particles.begin (); i != particles.end (); ++i) + { + lisp_object_t* obj = (*i)->serialize (); + fputs(" ", out); + lisp_dump (obj, out); + lisp_free(obj); + fputc('\n', out); + } + fputs(" )\n", out); +} + +/* EOF */ diff --git a/particle_factory.hxx b/particle_factory.hxx new file mode 100644 index 0000000..5e8ba01 --- /dev/null +++ b/particle_factory.hxx @@ -0,0 +1,89 @@ +// $Id: particle_factory.hxx,v 1.8 2003/01/08 23:14:59 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_PARTICLE_FACTORY_HXX +#define HEADER_CONSTRUO_PARTICLE_FACTORY_HXX + +#include +#include "vector2d.hxx" +#include "lispreader.hxx" + +class ZoomGraphicContext; +class Particle; +class World; + +/** id of a particle, uniq only for a single ParticleFactory */ +typedef int ParticleId; + +/** Its really more a particle manager, but lets see */ +class ParticleFactory +{ +private: + /** Pointer to the world holding this ParticleManager */ + World* world; + + std::vector particles; + + /** the id of next particle that will get created */ + int particle_id_count; +public: + /** Create an empty particle manager */ + ParticleFactory (World*); + + /** Create a particle manager from the data in a .construo file */ + ParticleFactory (World*, lisp_object_t* cursor); + + /** Copy a particle manager, the id's will be keep */ + ParticleFactory (World*, const ParticleFactory&); + + Particle* add_particle (const Vector2d& arg_pos, const Vector2d& arg_velocity, + float m, bool f = false); + + /** Duplicate a particle */ + Particle* add_particle (const Particle& particle); + + /** Remove a particle by pointer */ + void remove_particle (Particle*); + + /** Remove a particle by id */ + void remove_particle (int id); + + int size () { return particles.size(); } + Particle* lookup_particle (int id); + + void update (float delta); + void draw (ZoomGraphicContext* gc); + + typedef std::vector::const_iterator CParticleIter; + typedef std::vector::iterator ParticleIter; + + ParticleIter begin () { return particles.begin(); } + ParticleIter end () { return particles.end(); } + + void clear (); + void write_lisp(FILE* out); + +private: + ParticleFactory (const ParticleFactory&); + ParticleFactory& operator= (const ParticleFactory&); +}; + +#endif + +/* EOF */ diff --git a/path_manager.cxx b/path_manager.cxx new file mode 100644 index 0000000..ac48b14 --- /dev/null +++ b/path_manager.cxx @@ -0,0 +1,105 @@ +// $Id: path_manager.cxx,v 1.1 2003/07/25 11:07:44 grumbel Exp $ +// +// Pingus - A free Lemmings clone +// Copyright (C) 2000 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include +#include "globals.hxx" +#include "path_manager.hxx" + +PathManager path_manager; + +PathManager::PathManager () + : path_found (false) +{ +} + +PathManager::~PathManager () +{ +} + +void +PathManager::add_path (const std::string& path) +{ + path_list.push_back (path); +} + +std::string +PathManager::complete (const std::string& relative_path) +{ + std::string comp_path = base_path + "/" + relative_path; + + return comp_path; +} + +bool +PathManager::find_path (const std::list& file_list) +{ + for (PathIter i = path_list.begin (); !path_found && i != path_list.end (); ++i) + { + bool found_file = true; + for (PathIter f = file_list.begin (); found_file && f != file_list.end (); ++f) + { + if (!(access((*i + "/" + *f).c_str(), R_OK) == 0)) + found_file = false; + } + if (found_file) + { + path_found = true; + base_path = *i; + + std::cout << "PathManager: Using base_path: " << base_path << std::endl; + + return true; + } + } + + std::cout << "PathManager: No base path found" << std::endl; + + return false; +} + +/** Search for a path which contains the file 'file' */ +bool +PathManager::find_path (const std::string& file) +{ + for (PathIter i = path_list.begin (); !path_found && i != path_list.end (); ++i) + { + if ((access((*i + "/" + file).c_str(), R_OK) == 0)) + { + path_found = true; + base_path = *i; + + std::cout << "PathManager: Using base_path: " << base_path << std::endl; + + return true; + } + } + + std::cout << "PathManager: No base path found" << std::endl; + + return false; +} + +void +PathManager::set_path (const std::string& path) +{ + base_path = path; +} + +/* EOF */ diff --git a/path_manager.hxx b/path_manager.hxx new file mode 100644 index 0000000..5f30f10 --- /dev/null +++ b/path_manager.hxx @@ -0,0 +1,67 @@ +// $Id: path_manager.hxx,v 1.1 2003/07/25 11:07:44 grumbel Exp $ +// +// Pingus - A free Lemmings clone +// Copyright (C) 2000 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_PINGUS_PATH_MANAGER_HXX +#define HEADER_PINGUS_PATH_MANAGER_HXX + +#include +#include + +class PathManager +{ +private: + std::list path_list; + typedef std::list::const_iterator PathIter; + + bool path_found; + std::string base_path; +public: + PathManager (); + ~PathManager (); + + /** Search for a path which contains all the files given in + file_list */ + bool find_path (const std::list& file_list); + + /** Search for a path which contains the file 'file' */ + bool find_path (const std::string& file); + + /** Set the path directly without using find_path/add_path + Must include trailing slash */ + void set_path (const std::string& path); + + /** Add a path to the search list */ + void add_path (const std::string& path); + + std::string get_base_path () { return base_path; } + + /** Complete a releative path to the absolute path, the returned + path contains a trailing slash */ + std::string complete (const std::string& relative_path); + +private: + PathManager (const PathManager&); + PathManager& operator= (const PathManager&); +}; + +extern PathManager path_manager; + +#endif + +/* EOF */ diff --git a/rect.hxx b/rect.hxx new file mode 100644 index 0000000..7e7c3d2 --- /dev/null +++ b/rect.hxx @@ -0,0 +1,70 @@ +// $Id: rect.hxx,v 1.3 2003/01/04 20:12:38 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_RECT_HXX +#define HEADER_RECT_HXX + +#include "math.hxx" +#include "vector2d.hxx" + +/** */ +template +class Rect +{ +private: +public: + T x1; + T y1; + T x2; + T y2; + + Rect () + { + } + + Rect (const T& x1_, + const T& y1_, + const T& x2_, + const T& y2_) + : x1 (Math::min(x1_, x2_)), + y1 (Math::min(y1_, y2_)), + x2 (Math::max(x1_, x2_)), + y2 (Math::max(y1_, y2_)) + {} + + T get_width () + { + return x2 - x1; + } + + T get_height () + { + return x2 - x1; + } + + Vector2d get_center () const + { + return Vector2d ((x1 + x2)/2.0f, + (y1 + y2)/2.0f); + } +}; + +#endif + +/* EOF */ diff --git a/rect_collider.cxx b/rect_collider.cxx new file mode 100644 index 0000000..75d7d79 --- /dev/null +++ b/rect_collider.cxx @@ -0,0 +1,163 @@ +// $Id: rect_collider.cxx,v 1.10 2003/07/26 11:18:47 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include "colors.hxx" +#include "particle_factory.hxx" +#include "controller.hxx" +#include "rect_collider.hxx" +#include "construo_error.hxx" + +Collider* +RectCollider::duplicate() const +{ + return new RectCollider(x1, y1, x2, y2); +} + +RectCollider::RectCollider (lisp_object_t* cursor) +{ + Vector2d pos1, pos2; + + LispReader reader(cursor); + if (reader.read_vector("pos1", &pos1) == false + || reader.read_vector("pos2", &pos2) == false) + { + throw ConstruoError("RectCollider entry incomplete"); + } + + x1 = pos1.x; + y1 = pos1.y; + x2 = pos2.x; + y2 = pos2.y; +} + +RectCollider::RectCollider (float x1_, float y1_, float x2_, float y2_) + : x1 (Math::min(x1_, x2_)), + y1 (Math::min(y1_, y2_)), + x2 (Math::max(x1_, x2_)), + y2 (Math::max(y1_, y2_)) +{ +} + +bool +RectCollider::is_at (const Vector2d& pos) +{ + return (x1 <= pos.x && x2 > pos.x + && y1 <= pos.y && y2 > pos.y); +} + +Vector2d +RectCollider::get_pos() +{ + return Vector2d ((x1 + x2)/2.0f, + (y1 + y2)/2.0f); +} + +void +RectCollider::set_pos(const Vector2d& pos) +{ + Vector2d center = get_pos(); + x1 = x1 - center.x + pos.x; + x2 = x2 - center.x + pos.x; + y1 = y1 - center.y + pos.y; + y2 = y2 - center.y + pos.y; +} + +void +RectCollider::bounce () +{ + ParticleFactory* particle_mgr = Controller::instance()->get_world()->get_particle_mgr(); + + float damp = 0.8; + for (ParticleFactory::ParticleIter i = particle_mgr->begin(); i != particle_mgr->end (); ++i) + { + Vector2d& pos = (*i)->pos; + Vector2d& velocity = (*i)->velocity; + + if (pos.x > x1 && pos.x < x2 + && pos.y > y1 && pos.y < y2) + { + float left_dist = pos.x - x1; + float right_dist = x2 - pos.x; + + float top_dist = pos.y - y1; + float bottom_dist = y2 - pos.y; + + if (left_dist < right_dist + && left_dist < top_dist + && left_dist < bottom_dist) + { + velocity.x = -fabs(velocity.x); + pos.x = x1; + } + else if (right_dist < left_dist + && right_dist < top_dist + && right_dist < bottom_dist) + { + velocity.x = fabs(velocity.x); + pos.x = x2; + } + else if (top_dist < left_dist + && top_dist < right_dist + && top_dist < bottom_dist) + { + velocity.y = -fabs(velocity.y); + pos.y = y1; + } + else + { + velocity.y = fabs(velocity.y); + pos.y = y2; + } + velocity *= damp; + } + } +} + +void +RectCollider::draw (GraphicContext* gc) +{ + //std::cout << "Drawing collider" << std::endl; + gc->draw_fill_rect (x1, y1, x2, y2, Colors::rect_collider_bg); + gc->draw_rect (x1, y1, x2, y2, Colors::rect_collider_fg); +} + +void +RectCollider::draw_highlight (GraphicContext* gc) +{ + //gc->draw_fill_rect (x1, y1, x2, y2, Colors::rect_collider_bg); + gc->draw_rect (x1, y1, x2, y2, Colors::selection_rect); +} + +BoundingBox +RectCollider::get_bounding_box() const +{ + return BoundingBox(x1, y1, x2, y2); +} + +lisp_object_t* +RectCollider::serialize() +{ + LispWriter obj ("rect"); + obj.write_vector ("pos1", Vector2d(x1, y1)); + obj.write_vector ("pos2", Vector2d(x2, y2)); + return obj.create_lisp (); +} + +/* EOF */ diff --git a/rect_collider.hxx b/rect_collider.hxx new file mode 100644 index 0000000..e0135a9 --- /dev/null +++ b/rect_collider.hxx @@ -0,0 +1,56 @@ +// $Id: rect_collider.hxx,v 1.8 2003/07/26 11:18:47 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_RECT_COLLIDER_HXX +#define HEADER_CONSTRUO_RECT_COLLIDER_HXX + +#include "collider.hxx" + +/** */ +class RectCollider : public Collider +{ +private: + // FIXME: Use the Rect class here + float x1; /**< left border */ + float y1; /**< top border */ + float x2; /**< right border */ + float y2; /**< bottom border */ + +public: + RectCollider (lisp_object_t* cursor); + RectCollider (float x1_, float y1_, float x2_, float y2_); + + Collider* duplicate() const; + + Vector2d get_pos(); + void set_pos(const Vector2d&); + + bool is_at (const Vector2d& pos); + void bounce (); + void draw (GraphicContext* gc); + void draw_highlight (GraphicContext* gc); + + BoundingBox get_bounding_box() const; + + lisp_object_t* serialize(); +}; + +#endif + +/* EOF */ diff --git a/root_graphic_context.cxx b/root_graphic_context.cxx new file mode 100644 index 0000000..4aff11c --- /dev/null +++ b/root_graphic_context.cxx @@ -0,0 +1,49 @@ +// $Id: root_graphic_context.cxx,v 1.1 2003/07/26 00:39:31 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "root_graphic_context.hxx" + +void +RootGraphicContext::set_cursor(CursorType cursor) +{ + current_cursor = cursor; + set_cursor_real(cursor); +} + +void +RootGraphicContext::push_cursor() +{ + cursor_stack.push(current_cursor); +} + +void +RootGraphicContext::pop_cursor() +{ + if (!cursor_stack.empty()) + { + set_cursor(cursor_stack.top()); + cursor_stack.pop(); + } + else + { + std::cout << "RootGraphicContext::pop_cursor(): Stack empty!" << std::endl; + } +} + +/* EOF */ diff --git a/root_graphic_context.hxx b/root_graphic_context.hxx new file mode 100644 index 0000000..ceeb5c0 --- /dev/null +++ b/root_graphic_context.hxx @@ -0,0 +1,61 @@ +// $Id: root_graphic_context.hxx,v 1.3 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_ROOT_GRAPHIC_CONTEXT_HXX +#define HEADER_ROOT_GRAPHIC_CONTEXT_HXX + +#include +#include "graphic_context.hxx" +#include "cursors.hxx" + +/** RootGraphicContext represetens the window in which Construo runs, + * it provides ways to set the title the cursor, etc. in addition to + * the stuff that a normal GraphicContext provides. + */ +class RootGraphicContext : public GraphicContext +{ +private: + std::stack cursor_stack; + CursorType current_cursor; +public: + RootGraphicContext() {} + virtual ~RootGraphicContext() {} + + void set_cursor(CursorType); + void push_cursor(); + void pop_cursor(); + +protected: + virtual void set_cursor_real(CursorType) =0; + +public: + /** Enter fullscreen mode */ + virtual void enter_fullscreen() =0; + + /** Leave fullscreen and return to windowed mode */ + virtual void leave_fullscreen() =0; + +private: + RootGraphicContext (const RootGraphicContext&); + RootGraphicContext& operator= (const RootGraphicContext&); +}; + +#endif + +/* EOF */ diff --git a/save_gui_manager.cxx b/save_gui_manager.cxx new file mode 100644 index 0000000..3c05cd7 --- /dev/null +++ b/save_gui_manager.cxx @@ -0,0 +1,47 @@ +// $Id: save_gui_manager.cxx,v 1.3 2003/07/26 00:39:31 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "gui_file_manager.hxx" +#include "construo.hxx" +#include "system_context.hxx" +#include "root_graphic_context.hxx" +#include "save_gui_manager.hxx" + +SaveGUIManager::SaveGUIManager () +{ + file_manager = new GUIFileManager (GUIFileManager::SAVE_MANAGER); + add (file_manager); +} + +void +SaveGUIManager::draw_overlay () +{ + graphic_context->draw_string(10, graphic_context->get_height() - 10, + "Save Dialog"); +} + +void +SaveGUIManager::run_once () +{ + GUIFileManager::set_instance(file_manager); + GUIManager::run_once(); + system_context->sleep (1000); +} + +/* EOF */ diff --git a/save_gui_manager.hxx b/save_gui_manager.hxx new file mode 100644 index 0000000..ce7ee7c --- /dev/null +++ b/save_gui_manager.hxx @@ -0,0 +1,40 @@ +// $Id: save_gui_manager.hxx,v 1.2 2003/07/25 11:07:44 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_SAVE_GUI_MANAGER_HXX +#define HEADER_CONSTRUO_SAVE_GUI_MANAGER_HXX + +#include "gui_manager.hxx" + +/** */ +class SaveGUIManager : public GUIManager +{ +private: + GUIFileManager* file_manager; +public: + + SaveGUIManager (); + + void draw_overlay (); + void run_once (); +}; + +#endif + +/* EOF */ diff --git a/screen_manager.cxx b/screen_manager.cxx new file mode 100644 index 0000000..7ecbec4 --- /dev/null +++ b/screen_manager.cxx @@ -0,0 +1,81 @@ +// $Id: screen_manager.cxx,v 1.3 2003/01/11 19:07:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "load_gui_manager.hxx" +#include "save_gui_manager.hxx" +#include "world_gui_manager.hxx" +#include "screen_manager.hxx" + +ScreenManager* ScreenManager::instance_ = 0; + +ScreenManager::ScreenManager () + : do_quit(false) +{ + load_gui_manager = new LoadGUIManager(); + save_gui_manager = new SaveGUIManager(); + world_gui_manager = new WorldGUIManager(); + + current_gui_manager = world_gui_manager; +} + +void +ScreenManager::run_once () +{ + current_gui_manager->run_once (); +} + +bool +ScreenManager::is_finished () +{ + return do_quit; +} + +void +ScreenManager::quit() +{ + do_quit = true; +} + +void +ScreenManager::set_gui (int gui_id) +{ + switch (gui_id) + { + case WORLD_GUI: + current_gui_manager = world_gui_manager; + break; + case LOAD_GUI: + current_gui_manager = load_gui_manager; + break; + case SAVE_GUI: + current_gui_manager = save_gui_manager; + break; + } +} + +ScreenManager* +ScreenManager::instance () +{ + if (instance_ == 0) + return (instance_ = new ScreenManager ()); + else + return instance_; +} + +/* EOF */ diff --git a/screen_manager.hxx b/screen_manager.hxx new file mode 100644 index 0000000..31f0636 --- /dev/null +++ b/screen_manager.hxx @@ -0,0 +1,55 @@ +// $Id: screen_manager.hxx,v 1.3 2003/01/11 19:07:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_SCREEN_MANAGER_HXX +#define HEADER_CONSTRUO_SCREEN_MANAGER_HXX + +class GUIManager; + +/** */ +class ScreenManager +{ +private: + bool do_quit; + + GUIManager* current_gui_manager; + + GUIManager* load_gui_manager; + GUIManager* save_gui_manager; + GUIManager* world_gui_manager; + + static ScreenManager* instance_; + ScreenManager (); + +public: + enum { LOAD_GUI, SAVE_GUI, WORLD_GUI }; + static ScreenManager* instance (); + + void set_gui (int gui_id); + + void quit(); + + bool is_finished (); + + void run_once (); +}; + +#endif + +/* EOF */ diff --git a/selection.cxx b/selection.cxx new file mode 100644 index 0000000..de564e6 --- /dev/null +++ b/selection.cxx @@ -0,0 +1,246 @@ +// $Id: selection.cxx,v 1.11 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include +#include +#include +#include "rect.hxx" +#include "selection.hxx" +#include "particle.hxx" +#include "particle_factory.hxx" +#include "controller.hxx" + +Selection::Selection () +{ + world = 0; +} + +Vector2d +Selection::get_center () +{ + validate(); + + Rect rot_box ((*selection.begin ())->pos.x, + (*selection.begin ())->pos.y, + (*selection.begin ())->pos.x, + (*selection.begin ())->pos.y); + + for (Selection::iterator i = selection.begin (); i != selection.end (); ++i) + { + rot_box.x1 = Math::min(rot_box.x1, (*i)->pos.x); + rot_box.y1 = Math::min(rot_box.y1, (*i)->pos.y); + + rot_box.x2 = Math::max(rot_box.x2, (*i)->pos.x); + rot_box.y2 = Math::max(rot_box.y2, (*i)->pos.y); + } + + return rot_box.get_center (); +} + +void +Selection::scale (float factor, Vector2d center) +{ + validate(); + + if (!selection.empty()) + { + for (SelectionLst::iterator i = selection.begin (); i != selection.end (); ++i) + { + (*i)->pos = center + (((*i)->pos - center) * factor); + + std::vector& springs = world->get_spring_mgr (); + for (std::vector::iterator s = springs.begin(); s != springs.end(); ++s) + { + if ((*s)->particles.first == (*i) || ((*s)->particles.second == (*i))) + { + (*s)->recalc_length(); + } + } + } + } +} + +void +Selection::set_velocity (const Vector2d vel) +{ + for (SelectionLst::iterator i = selection.begin (); i != selection.end (); ++i) + (*i)->velocity = vel; +} + +void +Selection::flip () +{ + validate(); + + if (!selection.empty()) + { + float midpoint = 0.0f; + for (SelectionLst::iterator i = selection.begin (); i != selection.end (); ++i) + { + midpoint += (*i)->pos.x; + } + midpoint /= selection.size (); + + for (SelectionLst::iterator i = selection.begin (); i != selection.end (); ++i) + { + (*i)->pos.x = midpoint - ((*i)->pos.x - midpoint); + } + } +} + +void +Selection::select_particles (Vector2d p1, Vector2d p2) +{ + world = Controller::instance()->get_world (); + + std::vector particles = world->get_particles (p1.x, p1.y, + p2.x, p2.y); + + selection = SelectionLst(particles.begin(), + particles.end()); +} + +void +Selection::duplicate () +{ + validate(); + + Controller::instance()->push_undo(); + + // particle translation table + std::map p_trans_table; + + SelectionLst new_selection; + + std::cout << "Trying to duplicate the selection" << std::endl; + for (SelectionLst::iterator i = selection.begin (); i != selection.end (); ++i) + { + Particle* p = world->get_particle_mgr()->add_particle(**i); + p->pos += Vector2d (50,50); + new_selection.push_back(p); + p_trans_table[*i] = p; + + //std::cout << "P: " << (*i)->get_id () << " New: " << p->get_id () << std::endl; + } + + // FIXME: Warning, make sure that iterators stays intact while modifing the container + std::vector springs = world->get_spring_mgr (); + for (std::vector::iterator i = springs.begin (); i != springs.end (); ++i) + { + // both particles of the spring are in the current selection + if (std::find (selection.begin (), selection.end (), (*i)->particles.first) != selection.end () + && + std::find (selection.begin (), selection.end (), (*i)->particles.second) != selection.end ()) + { + world->add_spring (p_trans_table[(*i)->particles.first], + p_trans_table[(*i)->particles.second]); + } + } + + selection = new_selection; +} + +bool +Selection::empty() const +{ + return selection.empty(); +} + +void +Selection::clear() +{ + selection.clear(); + world = 0; +} + +void +Selection::rotate (float rot_angle, Vector2d rotate_center) +{ + validate(); + + for (SelectionLst::iterator i = selection.begin (); i != selection.end (); ++i) + { + Vector2d& pos = (*i)->pos; + + pos.x -= rotate_center.x; + pos.y -= rotate_center.y; + + float angle = atan2(pos.y, pos.x) + rot_angle; + float length = pos.norm (); + + pos.x = (cos (angle)*length) + rotate_center.x; + pos.y = (sin (angle)*length) + rotate_center.y; + } +} + +void +Selection::validate() +{ + if (world != Controller::instance()->get_world ()) + { + //std::cout << "World changed; " << world << " " << Controller::instance()->get_world () << std::endl; + clear(); + } +} + +void +Selection::join_doubles(float toleranz) +{ + // FIXME: Undo add undo, if stuff is going to change + Controller::instance()->push_undo(); + World& world = *Controller::instance()->get_world (); + + for (SelectionLst::iterator i = selection.begin (); i != selection.end (); ++i) + { + SelectionLst::iterator j = i; + ++j; + for (; j != selection.end (); ++j) + { + if (Vector2d::distance((*j)->pos, (*i)->pos) < toleranz) + { + // Join two particles + std::cout << "joining particles: " << (*j)->pos << " " << (*i)->pos << std::endl; + (*j)->pos = ((*j)->pos + (*i)->pos) * 0.5f; + (*j)->velocity = ((*j)->velocity + (*i)->velocity) * 0.5f; + + //selection.remove(*i); + + { // Everything that is connected to the particle 'i' + // which should get removed, needs to get connected to + // 'j' + std::vector& springs = world.get_spring_mgr (); + for (std::vector::iterator s = springs.begin(); s != springs.end(); ++s) + { + if ((*s)->particles.first == (*i)) + (*s)->particles.first = (*j); + + if ((*s)->particles.second == (*i)) + (*s)->particles.second = (*j); + } + } + + world.remove_particle(*i); + } + } + } + clear(); +} + +/* EOF */ diff --git a/selection.hxx b/selection.hxx new file mode 100644 index 0000000..7a3a32c --- /dev/null +++ b/selection.hxx @@ -0,0 +1,96 @@ +// $Id: selection.hxx,v 1.6 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_SELECTION_HXX +#define HEADER_CONSTRUO_SELECTION_HXX + +#include +#include "vector2d.hxx" + +class Particle; +class World; + +/** A class to keep track of a group of selected particles */ +class Selection +{ +private: + typedef std::list SelectionLst; + /** Collection of particles */ + SelectionLst selection; + + /** Pointer to the world that contains the particle this selection + is pointing to. Used to check if the world has changed, so that + the selection needs to get cleared. */ + World* world; + +public: + Selection (); + + /** @return Center point of the selection, aka the center of its + bounding box, result is undefined if called on a empty + selection */ + Vector2d get_center (); + + /** Select the particles between p1 (upper/left) and p2 + (bottom/right) */ + void select_particles (Vector2d p1, Vector2d p2); + + /** scales the selection by the given factor */ + void scale (float factor, Vector2d center); + + void flip(); + + /** sets the velocity of all particles to the given one */ + void set_velocity (const Vector2d vel); + + /** duplicates all selected objects */ + void duplicate (); + + /** clears the selection */ + void clear (); + + /** @return true if no particle is in the selection */ + bool empty() const; + + /** Check if the world has changed, if so clear selection FIXME: add + a bit more docu here */ + void validate(); + + void rotate(float rot_angle, Vector2d rotate_center); + + /** Join particles that are on nearly the same position + * + * @param toleranz minimum distance of to particles below which they + * get joined (in world coordinates) + */ + void join_doubles(float toleranz); + + SelectionLst::size_type size() { return selection.size(); } + SelectionLst::iterator begin() { return selection.begin(); }; + SelectionLst::iterator end() { return selection.end(); }; + + typedef SelectionLst::iterator iterator; +private: + Selection (const Selection&); + Selection& operator= (const Selection&); +}; + +#endif + +/* EOF */ diff --git a/settings.cxx b/settings.cxx new file mode 100644 index 0000000..3f39dfb --- /dev/null +++ b/settings.cxx @@ -0,0 +1,35 @@ +// $Id: settings.cxx,v 1.5 2003/07/26 14:43:56 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "settings.hxx" + +Settings settings; + +Settings::Settings () +{ + fullscreen = false; + doublebuffer = true; + screen_width = 800; + screen_height = 600; + alphablending = true; + antialiasing = true; + thick_lines = true; +} + +/* EOF */ diff --git a/settings.hxx b/settings.hxx new file mode 100644 index 0000000..a62d7be --- /dev/null +++ b/settings.hxx @@ -0,0 +1,64 @@ +// $Id: settings.hxx,v 1.7 2003/07/26 14:43:56 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_SETTINGS_HXX +#define HEADER_CONSTRUO_SETTINGS_HXX + +#include + +/** */ +class Settings +{ +public: + /** Start the application in fullscreen mode */ + bool fullscreen; + + /** Use doublebuffering */ + bool doublebuffer; + + /** Enable alpha blending */ + bool alphablending; + + /** Enable anti aliasing*/ + bool antialiasing; + + /** Enable thick lines (more than 1 pixel width */ + bool thick_lines; + + /** Screen width in pixel */ + int screen_width; + + /** Screen height in pixel */ + int screen_height; + + /** Initial file to be loaded on startup (aka. the one that is given + on the command line */ + std::string startup_file; + + /** directory with data files */ + std::string datadir; + + Settings (); +}; + +extern Settings settings; + +#endif + +/* EOF */ diff --git a/spring.cxx b/spring.cxx new file mode 100644 index 0000000..781e64a --- /dev/null +++ b/spring.cxx @@ -0,0 +1,181 @@ +// $Id: spring.cxx,v 1.15 2003/07/27 18:46:11 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "colors.hxx" +#include "construo_error.hxx" +#include "particle_factory.hxx" +#include "spring.hxx" + +Spring::Spring (Particle* f, Particle* s, float l) +{ + particles.first = f; + particles.second = s; + destroyed = false; + length = l; + + stiffness = 50.0f; + damping = .1f; + max_stretch = 0.15f; + + f->spring_links += 1; + s->spring_links += 1; +} + +Spring::Spring (Particle* f, Particle* s) +{ + particles.first = f; + particles.second = s; + destroyed = false; + length = fabs((f->pos - s->pos).norm ()); + + stiffness = 50.0f; + damping = .1f; + max_stretch = 0.15f; + + f->spring_links += 1; + s->spring_links += 1; + + assert (length != 0); +} + +Spring::Spring (World* world, lisp_object_t* cursor) + : destroyed (false) +{ + cursor = lisp_cdr(cursor); // Skip the identifer + + int first_id = -1; + int second_id = -1; + length = -1; + + stiffness = 50.0f; + damping = .1f; + max_stretch = 0.15f; + + LispReader reader(cursor); + reader.read_int ("first", &first_id); + reader.read_int ("second", &second_id); + reader.read_float ("length", &length); + reader.read_float ("stiffness", &stiffness); + reader.read_float ("damping", &damping); + reader.read_float ("maxstretch", &max_stretch); + + particles.first = world->get_particle_mgr()->lookup_particle (first_id); + particles.second = world->get_particle_mgr()->lookup_particle (second_id); + + if (particles.first == 0 || particles.second == 0) + { + throw ConstruoError ("Spring: Pair lookup failed"); + } + + particles.first->spring_links += 1; + particles.second->spring_links += 1; + + if (length == -1) + { + //std::cout << "Spring: length missing in data file, recalculating" << std::endl; + length = fabs((particles.first->pos - particles.second->pos).norm ()); + } +} + +Spring::~Spring () +{ + particles.first->spring_links -= 1; + particles.second->spring_links -= 1; +} + +void +Spring::update (float delta) +{ + Vector2d dist = particles.first->pos - particles.second->pos; + + // Calculate the stretchness of the spring, 0.0 if unstretch, else + // <> 0 + float stretch = (dist.norm () - length); + + //std::cout << "Stretch: " << stretch << std::endl; + if (fabs(stretch/length) > max_stretch && + length > 10.0f) // atomar spring + { // If the spring is streched above limits, let it get destroyed + destroyed = true; + } + else + { + stretch *= stiffness; + float dterm = (dist.dot(particles.first->velocity - particles.second->velocity) * damping)/dist.norm (); + + dist.normalize (); + Vector2d force = dist * (stretch + dterm); + + /*std::cout << "DTerm: " << dterm << " HTerm: " << stretch + << " Force: " << force + << std::endl;*/ + + particles.first->add_force (-force); + particles.second->add_force (force); + } +} + +void +Spring::draw (ZoomGraphicContext* gc) +{ + Vector2d dist = particles.first->pos - particles.second->pos; + float stretch = fabs(dist.norm ()/length - 1.0f) * 10.0f; + + float color = fabs((stretch/max_stretch)); + + if (particles.first->pos.y < 598.5f + || + particles.second->pos.y < 598.5f) + { + gc->GraphicContext::draw_line(particles.first->pos, + particles.second->pos, + Color(color, 1.0f - color, 0.0f), + 2); + } +} + +void +Spring::draw_highlight (ZoomGraphicContext* gc) +{ + gc->GraphicContext::draw_line (particles.first->pos, particles.second->pos, + Colors::highlight, 4); +} + + +lisp_object_t* +Spring::serialize() +{ + LispWriter obj ("spring"); + obj.write_int ("first", particles.first->get_id()); + obj.write_int ("second", particles.second->get_id()); + obj.write_float ("length", length); + obj.write_float ("stiffness", stiffness); + obj.write_float ("damping", damping); + obj.write_float ("maxstretch", max_stretch); + + return obj.create_lisp (); +} + +void +Spring::recalc_length () +{ + length = fabs((particles.first->pos - particles.second->pos).norm ()); +} + +/* EOF */ diff --git a/spring.hxx b/spring.hxx new file mode 100644 index 0000000..3b56d9e --- /dev/null +++ b/spring.hxx @@ -0,0 +1,68 @@ +// $Id: spring.hxx,v 1.7 2003/07/24 15:53:21 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_SPRING_HXX +#define HEADER_CONSTRUO_SPRING_HXX + +#include +#include +#include "particle.hxx" +#include "world.hxx" +#include "lisp_reader.hxx" + +class World; + +class Spring +{ +public: + /** Pointers to the two particles to which the Spring is + connected */ + std::pair particles; + + /** The orignial length of the Spring, the actually length on the + screen is different, since the spring can be streched */ + float length; + + /** */ + bool destroyed; + + float stiffness; + float damping; + float max_stretch; + + Spring (Particle* f, Particle* s, float l); + Spring (Particle* f, Particle* s); + + Spring (World* world, lisp_object_t* cursor); + + ~Spring (); + + void update (float delta); + void draw (ZoomGraphicContext* gc); + void draw_highlight (ZoomGraphicContext* gc); + + /** Forces the recalculation of the springs length */ + void recalc_length (); + + lisp_object_t* serialize(); +}; + +#endif + +/* EOF */ diff --git a/spring_type.hxx b/spring_type.hxx new file mode 100644 index 0000000..1e8c593 --- /dev/null +++ b/spring_type.hxx @@ -0,0 +1,39 @@ +// $Id: spring_type.hxx,v 1.1 2003/07/24 22:23:19 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_SPRING_TYPE_HXX +#define HEADER_SPRING_TYPE_HXX + +/** */ +class SpringType +{ +public: + /** */ + float stiffness; + + /** */ + float damping; + + /** */ + float max_stretch; +}; + +#endif + +/* EOF */ diff --git a/string_utils.cxx b/string_utils.cxx new file mode 100644 index 0000000..5a3c2ff --- /dev/null +++ b/string_utils.cxx @@ -0,0 +1,59 @@ +// $Id: string_utils.cxx,v 1.3 2003/07/24 10:10:02 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "string_utils.hxx" + +namespace StringUtils +{ + bool has_prefix (const std::string& str, const std::string& prefix) + { + if (prefix.length() > str.length()) + { + return false; + } + else + { + for (std::string::size_type i = 0; i < prefix.length(); ++i) + { + if (prefix[i] != str[i]) + return false; + } + return true; + } + } + + bool has_suffix (const std::string& str, const std::string& suffix) + { + if (suffix.length() > str.length()) + { + return false; + } + else + { + for (std::string::size_type i = 0; i < suffix.length(); ++i) + { + if (suffix[i] != str[str.length() - suffix.length() + i]) + return false; + } + return true; + } + } +} + +/* EOF */ diff --git a/string_utils.hxx b/string_utils.hxx new file mode 100644 index 0000000..dfb0e88 --- /dev/null +++ b/string_utils.hxx @@ -0,0 +1,64 @@ +// $Id: string_utils.hxx,v 1.2 2003/07/24 10:10:02 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_STRING_UTILS_HXX +#define HEADER_CONSTRUO_STRING_UTILS_HXX + +#include +#include + +namespace StringUtils +{ + template + std::string to_string (const T& any) + { + std::ostringstream oss; + oss << any; + return oss.str(); + } + + /** Convert the contents in string \a rep to type \a T, if conversion + fails false is returned and the value of \a x is unchanged, if + true is returned the conversation was successfull. */ + template + bool from_string(const std::string& rep, T& x) + { + // this is necessary so that if "x" is not modified if the conversion fails + T temp; + std::istringstream iss(rep); + iss >> temp; + + if (iss.fail()) + { + return false; + } + else + { + x = temp; + return true; + } + } + + bool has_prefix (const std::string& str, const std::string& prefix); + bool has_suffix (const std::string& str, const std::string& suffix); +} + +#endif + +/* EOF */ diff --git a/system_context.hxx b/system_context.hxx new file mode 100644 index 0000000..ea5f196 --- /dev/null +++ b/system_context.hxx @@ -0,0 +1,71 @@ +// $Id: system_context.hxx,v 1.9 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_SYSTEM_CONTEXT_HXX +#define HEADER_SYSTEM_CONTEXT_HXX + +#include +#include +#include + +/** Simple enum for the different file types that Constro supports, + * since it doesn't really support much, it only contains directory, + * construo file and unknown file */ +enum FileType { + FT_DIRECTORY, + FT_CONSTRUO_FILE, + FT_UNKNOWN_FILE +}; + +/** System stuff like file-IO and time */ +class SystemContext +{ +private: +public: + virtual unsigned int get_time () =0; + + /** sleep for the given number of milisec */ + virtual void sleep (unsigned long) =0; + + /** @return '$HOME/.construo/' */ + virtual std::string get_construo_rc_path () =0; + + /** @return the realname of the current user */ + virtual std::string get_user_realname() =0; + + /** @return the email of the current user or an empty string if not available */ + virtual std::string get_user_email() =0; + + /** @return the type of the given file */ + virtual FileType get_file_type(const std::string& filename) =0; + + virtual FILE* open_input_file(const std::string& filename) =0; + virtual FILE* open_output_file(const std::string& filename) =0; + + virtual unsigned int get_mtime (const std::string& filename) =0; + + /** @return a list of files available in the given directory */ + virtual std::vector read_directory(const std::string& pathname) =0; + + virtual std::string translate_filename (const std::string&) =0; +}; + +#endif + +/* EOF */ diff --git a/unix_system.cxx b/unix_system.cxx new file mode 100644 index 0000000..9a189ab --- /dev/null +++ b/unix_system.cxx @@ -0,0 +1,305 @@ +// $Id: unix_system.cxx,v 1.15 2003/07/25 13:16:04 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "construo_error.hxx" +#include "string_utils.hxx" +#include "construo.hxx" +#include "path_manager.hxx" +#include "unix_system.hxx" + +using namespace StringUtils; + +UnixSystem::UnixSystem () +{ // riped out of ClanLib-0.7 + timeval tv; + gettimeofday(&tv, NULL); + start_time = (long) tv.tv_sec*(long) 1000+(long) tv.tv_usec/(long) 1000; + + char* home = getenv("HOME"); + if (home) + { + construo_rc_path = std::string(home) + std::string("/.construo/"); + } + else + { + std::cout << "UnixSystem: FATAL ERROR: couldn't find env variable $HOME" << std::endl; + throw ConstruoError ("UnixSystem: Couldn't find $HOME!"); + } + + // create $HOME directory if not already there + struct stat buf; + + if (stat(construo_rc_path.c_str(), &buf) != 0) // Couldn't find directory, create it + { + if (mkdir(construo_rc_path.c_str(), S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP) != 0) + { + throw ConstruoError(std::string("UnixSystem: ") + construo_rc_path + ": " + + strerror(errno)); + } + } + else + { + if (S_ISDIR(buf.st_rdev)) // Is not a directory + { + throw ConstruoError("Error: " + construo_rc_path + " is not a directory!"); + } + + if (access(construo_rc_path.c_str (), R_OK | W_OK | X_OK) != 0) // not readable/writeable + { + throw ConstruoError("Error: " + construo_rc_path + " is not read or writeable!"); + } + } +} + +UnixSystem::~UnixSystem () +{ +} + +unsigned int +UnixSystem::get_time () +{ // riped out of ClanLib-0.7 + timeval tv; + gettimeofday(&tv, NULL); + + long tid = (long) tv.tv_sec*(long) 1000 + (long) tv.tv_usec/(long) 1000 - start_time; + + return tid; +} + +void +UnixSystem::sleep (unsigned long t) +{ + usleep (t); +} + +std::string +UnixSystem::get_construo_rc_path() +{ + std::cout << "Returning: \n" << construo_rc_path << std::endl; + return construo_rc_path; +} + +std::string +UnixSystem::get_user_realname() +{ + struct passwd* pw; + + pw = getpwuid(getuid()); + if (pw) + { + return pw->pw_gecos; + } + else + { + return ""; + } +} + +std::string +UnixSystem::get_user_email() +{ + const char* s_email = getenv("EMAIL"); + if (s_email) + { + return s_email; + } + else + return ""; +} + +unsigned int +UnixSystem::get_mtime (const std::string& filename) +{ + std::string sys_name = translate_filename(filename); + + struct stat buf; + if (stat(sys_name.c_str(), &buf) != 0) + { + return 0; + } + else + { + return buf.st_mtime; + } +} + +FileType +UnixSystem::get_file_type(const std::string& filename) +{ + if (filename == "/examples/" + || filename == "/user/") + return FT_DIRECTORY; + + std::string sys_name = translate_filename(filename); + + struct stat buf; + if (stat(sys_name.c_str(), &buf) != 0) + { + std::cout << "UnixSystem: ERROR: Couldn't stat: '" << sys_name << "'" << std::endl; + return FT_UNKNOWN_FILE; + } + else + { + if (S_ISDIR(buf.st_mode)) + { + return FT_DIRECTORY; + } + else if (S_ISREG(buf.st_mode)) + { + if (has_suffix(filename, ".construo") || has_suffix(filename, ".construo.gz")) + return FT_CONSTRUO_FILE; + else + { + return FT_UNKNOWN_FILE; + } + } + else + { + return FT_UNKNOWN_FILE; + } + } +} + +std::string +UnixSystem::translate_filename (const std::string& filename) +{ + if (filename == "/") + { + assert("root directory is not translatable"); + return ""; + } + else if (has_prefix(filename, "/user/")) + { + return construo_rc_path + filename.substr(6); + } + else if (has_prefix(filename, "/examples/")) + { + return path_manager.complete("examples/") + filename.substr(10); + } + else + return filename; +} + +FILE* +UnixSystem::open_input_file(const std::string& filename) +{ + std::cout << "UnixSystem: open_input_file: " << translate_filename (filename) << std::endl; + return fopen(translate_filename (filename).c_str(), "r"); +} + +FILE* +UnixSystem::open_output_file(const std::string& filename) +{ + std::cout << "UnixSystem: open_output_file: " << translate_filename (filename) << std::endl; + return fopen(translate_filename (filename).c_str(), "w"); +} + + +/** Sort directories before files and sort them all + alphabetically */ +struct DirectorySorter +{ + std::string pathname; + + DirectorySorter(const std::string& p) + : pathname(p) + { + } + + bool operator()(const std::string& lhs, const std::string& rhs) + { + FileType lhs_type = system_context->get_file_type(pathname + "/" + lhs); + FileType rhs_type = system_context->get_file_type(pathname + "/" + rhs); + + if (lhs_type == rhs_type) + return (lhs < rhs); + else if (lhs_type == FT_DIRECTORY) + { + return true; + } + else if (rhs_type == FT_DIRECTORY) + { + return false; + } + else + { + return (lhs < rhs); + } + } +}; + +std::vector +UnixSystem::read_directory(const std::string& arg_pathname) +{ + if (arg_pathname == "/") + { + std::vector ret; + ret.push_back("examples/"); + ret.push_back("user/"); + return ret; + } + else + { + std::vector dir_lst; + std::string pathname = translate_filename (arg_pathname); + + DIR* dir = ::opendir (pathname.c_str()); + + if (!dir) + { + std::cout << "UnixSystem: Error couldn't open: '" << pathname << "', ignoring\n" + << " error and continuing with an empty directory" << std::endl; + } + else + { + struct dirent* entry; + + while ((entry = readdir(dir)) != 0) + { + if (strcmp(entry->d_name, ".") != 0 + && strcmp(entry->d_name, "..") != 0 + && strcmp(entry->d_name, "CVS") != 0) + { // We ignore unusefull directories + dir_lst.push_back(entry->d_name); + } + } + + closedir (dir); + } + + std::sort(dir_lst.begin(), dir_lst.end(), DirectorySorter(pathname)); + + return dir_lst; + } +} + +/* EOF */ diff --git a/unix_system.hxx b/unix_system.hxx new file mode 100644 index 0000000..7e54bd9 --- /dev/null +++ b/unix_system.hxx @@ -0,0 +1,59 @@ +// $Id: unix_system.hxx,v 1.8 2003/07/24 12:22:49 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_UNIX_SYSTEM_HXX +#define HEADER_CONSTRUO_UNIX_SYSTEM_HXX + +#include +#include "system_context.hxx" + +/** This class wraps a bunch of unix functions to provide file-io and + the current time */ +class UnixSystem : public SystemContext +{ +private: + unsigned int start_time; + + /** The location of the users construo directory, aka ~/.construo/, + the name contains a trailing slash */ + std::string construo_rc_path; + +public: + UnixSystem (); + virtual ~UnixSystem (); + unsigned int get_time (); + void sleep (unsigned long); + std::string get_construo_rc_path(); + std::string get_user_realname(); + std::string get_user_email(); + + FILE* open_input_file(const std::string& filename); + FILE* open_output_file(const std::string& filename); + + unsigned int get_mtime (const std::string& filename); + + FileType get_file_type(const std::string& filename); + std::vector read_directory(const std::string& pathname); + + std::string translate_filename (const std::string&); +}; + +#endif + +/* EOF */ diff --git a/vector.cxx b/vector.cxx new file mode 100644 index 0000000..eee35f5 --- /dev/null +++ b/vector.cxx @@ -0,0 +1,208 @@ +/* + $Id: vector.cxx,v 1.1 2002/11/20 00:33:56 grumbel Exp $ + + ------------------------------------------------------------------------ + ClanLib, the platform independent game SDK. + + This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE + version 2. See COPYING for details. + + For a total list of contributers see CREDITS. + + ------------------------------------------------------------------------ + + 1999/06/19 Daniel Vogel + + totally replaced old CL_Vector with this code +*/ + +#include +#include +#include "vector.hxx" + +CL_Vector::CL_Vector(float x, float y, float z, float w) +{ + this->x = x; + this->y = y; + this->z = z; + this->w = w; +} + +CL_Vector::CL_Vector(const CL_Vector &other) +{ + x = other.x; + y = other.y; + z = other.z; + w = other.w; +} + +float CL_Vector::norm() const +{ + #ifdef WIN32 + return (float)sqrt(x*x+y*y+z*z); + #else + return sqrt(x*x+y*y+z*z); + #endif +} + +void CL_Vector::normalize() +{ + float f = norm(); + if (f!=0) + { + x /= f; + y /= f; + z /= f; + } +} + +float CL_Vector::dot(const CL_Vector& v) const +{ + return x*v.x + y*v.y + z*v.z; +} + +float CL_Vector::angle(const CL_Vector& v) const +{ + #ifdef WIN32 + return (float)acos(dot(v)/(norm()*v.norm())); + #else + return std::acos(dot(v)/(norm()*v.norm())); + #endif +} + +CL_Vector CL_Vector::cross(const CL_Vector& v) const +{ + CL_Vector tmp = CL_Vector(y * v.z - z * v.y, + z * v.x - x * v.z, + x * v.y - y * v.x); + return tmp; +} + +// quick hack, same as glRotatef(angle, a); +CL_Vector CL_Vector::rotate(float angle, const CL_Vector& a) const +{ + CL_Vector tmp = CL_Vector(); + + #ifdef WIN32 + float s = (float)sin(angle); + float c = (float)cos(angle); + #else + float s = std::sin(angle); + float c = std::cos(angle); + #endif + + tmp.x = x*(a.x*a.x*(1-c)+c) + y*(a.x*a.y*(1-c)-a.z*s) + z*(a.x*a.z*(1-c)+a.y*s); + tmp.y = x*(a.y*a.x*(1-c)+a.z*s) + y*(a.y*a.y*(1-c)+c) + z*(a.y*a.z*(1-c)-a.x*s); + tmp.z = x*(a.x*a.z*(1-c)-a.y*s) + y*(a.y*a.z*(1-c)+a.x*s) + z*(a.z*a.z*(1-c)+c); + return tmp; +} + +void CL_Vector::round() +{ + x = int(x+0.5f); + y = int(y+0.5f); + z = int(z+0.5f); + w = int(w+0.5f); +} + +CL_Vector CL_Vector::operator * (float s) const +{ + return CL_Vector(s * x, + s * y, + s * z, + s * w); +} + +CL_Vector operator * (float s, const CL_Vector& v) +{ + return CL_Vector(s * v.x, + s * v.y, + s * v.z, + s * v.w); +} + +void CL_Vector::operator += (const CL_Vector& v) +{ + x += v.x; + y += v.y; + z += v.z; + w += v.z; +} + +void CL_Vector::operator -= (const CL_Vector& v) +{ + x -= v.x; + y -= v.y; + z -= v.z; + w -= v.w; +} + +void CL_Vector::operator *= (float s) +{ + x *= s; + y *= s; + z *= s; + w *= s; +} + +CL_Vector CL_Vector::operator + (const CL_Vector& v) const +{ + return CL_Vector(x + v.x, + y + v.y, + z + v.z, + w + v.w); +} + +CL_Vector CL_Vector::operator - (const CL_Vector& v) const +{ + return CL_Vector(x - v.x, + y - v.y, + z - v.z, + w - v.z); +} + +CL_Vector CL_Vector::operator - () const +{ + return CL_Vector(-x, + -y, + -z, + -w); +} + +CL_Vector& CL_Vector::operator = (const CL_Vector& v) +{ + x = v.x; + y = v.y; + z = v.z; + w = v.w; + return *this; +} + +int CL_Vector::operator == (const CL_Vector& v) const +{ + return ((x == v.x) && (y == v.y) && (z == v.z) && (w == v.w)); +} + +int CL_Vector::operator != (const CL_Vector& v) const +{ + return !(operator == (v)); +} + +float & CL_Vector::operator [] (int n) +{ + switch (n) + { + case 0: return x; + case 1: return y; + case 2: return z; + case 3: return w; + } + assert(false); + return x; // dummy +} + +std::ostream& operator << (std::ostream& os, const CL_Vector& v) +{ + os << v.x << " " << v.y << " " << v.z; + return os; +} diff --git a/vector.hxx b/vector.hxx new file mode 100644 index 0000000..3869bb7 --- /dev/null +++ b/vector.hxx @@ -0,0 +1,140 @@ +/* + $Id: vector.hxx,v 1.1 2002/11/20 00:46:11 grumbel Exp $ + + ------------------------------------------------------------------------ + ClanLib, the platform independent game SDK. + + This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE + version 2. See COPYING for details. + + For a total list of contributers see CREDITS. + + See http://www.clanlib.org + ------------------------------------------------------------------------ + + 1999/06/19 Daniel Vogel + + totally replaced old CL_Vector with this code +*/ + +//! clanCore="Math" +//! header=core.h + +#ifndef header_cl_vector +#define header_cl_vector +#include + +//: Vector class. +//-

This class provides basic functions and operators for working with vectors.

+class CL_Vector +{ +public: +//! Variables: + //: x coordinate + float x; + //: y coordinate + float y; + //: z coordinate + float z; + //: w coordinate + float w; + +public: + +//! Construction: + //: Constructor that initializes a vector + //param x: Initial x coordinate of vector. + //param y: Initial y coordinate of vector. + //param z: Initial z coordinate of vector. + //param w: Initial w coordinate of vector. + //param other: vector to copy construct from. + CL_Vector(float x = 0.0, float y = 0.0, float z = 0.0, float w = 1.0); + + CL_Vector(const CL_Vector &other); + +//! Attributes: + //: Returns the (euclid) norm of the vector. + //-

This function does not use the w coordinate of the vector. It only uses + //- the x,y,z coordinates.

+ //return: the euclid norm of the vector (in R^3) + float norm() const; + + //: Normalizes the vector (not taking into account the w ordinate!) + void normalize(); + + //: Dot products this vector with an other vector. + //param vector: Second vector used for the dot product. + //return: The resulting dot product of the two vectors. + float dot(const CL_Vector& vector) const; + + //: Calculate the angle between this vector and an other vector. + //param vector: Second vector used to calculate angle. + //return: The angle between the two vectors. + float angle(const CL_Vector& vector) const; + + //: Calculate the cross product between this vector and an other vector. + //param vector: Second vector used to perform the calculation. + //return: The cross product of the two vectors. + CL_Vector cross(const CL_Vector& vector) const; + + //: Rotate vector around an axis. + //param angle: Angle to rotate. + //param axis: Rotation axis. + //return: The resulting rotated vector. + CL_Vector rotate(float angle, const CL_Vector& axis) const; + + //: Rounds all components. + void round(); + +//! Operators: + //: Scalar product (vector * scalar) + //return: The scalar product + CL_Vector operator * (float scalar) const; + + //: Scalar product (scalar * vector) + //return: The scalar product. + friend CL_Vector operator * (float scalar, const CL_Vector& vector); + + //: += operator. + void operator += (const CL_Vector& v); + + //: -= operator. + void operator -= (const CL_Vector& v); + + //: *= operator (scalar multiplication). + void operator *= (float s); + + //: + operator. + CL_Vector operator + (const CL_Vector& v) const; + + //: - operator. + CL_Vector operator - (const CL_Vector& v) const; + + //: unary - operator. + CL_Vector operator - () const; + + //: assignment operator. + CL_Vector& operator = (const CL_Vector& v); + + //: Returns true if current vector equals v. + //param v: other vector. + //return: true if v equals the current vector, false otherwise. + int operator == (const CL_Vector& v) const; + + //: Returns false if current vector equals v. + //param v: other vector. + //return: false if v equals the current vector, true otherwise. + int operator != (const CL_Vector& v) const; + + //: Returns reference to n-th ordinate (0. == x, 1. == y, ...). + //param n: number of ordinate (starting with 0). + //return: reference to the n-th ordinate. + float& operator [] (int n); + + //: cout's the x,y,z ordinates (meant for debugging). + friend std::ostream& operator << (std::ostream&, const CL_Vector& v); +}; + +std::ostream& operator << (std::ostream& os, const CL_Vector& v); + +#endif diff --git a/vector2d.hxx b/vector2d.hxx new file mode 100644 index 0000000..cddf5c9 --- /dev/null +++ b/vector2d.hxx @@ -0,0 +1,115 @@ +// $Id: vector2d.hxx,v 1.8 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_VECTOR2D_HXX +#define HEADER_VECTOR2D_HXX + +#include +#include + +/** */ +class Vector2d +{ +public: + float x; + float y; + + Vector2d () + : x(0), y(0) + {} + + Vector2d (float x_, float y_) + : x (x_), y (y_) + {} + + inline + void operator+= (const Vector2d& vec) { + x += vec.x; + y += vec.y; + } + + inline + void operator-= (const Vector2d& vec) { + x -= vec.x; + y -= vec.y; + } + + inline + void operator*= (float f) { + x *= f; + y *= f; + } + + inline + Vector2d operator+ (const Vector2d& vec) const { + return Vector2d(x + vec.x, y + vec.y); + } + + inline + float dot(const Vector2d& vec) const { + return (x * vec.x) + (y * vec.y); + } + + inline + Vector2d operator- () const { + return Vector2d(-x, -y); + } + + inline + Vector2d operator- (const Vector2d& vec) const { + return Vector2d(x - vec.x, y - vec.y); + } + + inline + Vector2d operator* (float f) const { + return Vector2d(x * f, y * f); + } + + /** @return the length of the vector, also known as norm */ + inline + float norm() const { + return sqrt (x*x + y*y); + } + + + inline + void normalize() { + float f = norm(); + if (f!=0) + { + x /= f; + y /= f; + } + } + + static + float distance(const Vector2d& a, const Vector2d& b) { + return (a - b).norm(); + } +}; + +inline +std::ostream& operator << (std::ostream& os, const Vector2d& v) +{ + return os << "[" << v.x << ", " << v.y << "]"; +} + +#endif + +/* EOF */ diff --git a/world.cxx b/world.cxx new file mode 100644 index 0000000..1be5204 --- /dev/null +++ b/world.cxx @@ -0,0 +1,678 @@ +// $Id: world.cxx,v 1.35 2003/07/28 20:57:41 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include +#include "config.h" + +#ifdef HAVE_LIBZ +# include +#endif + +#include "math.hxx" +#include "construo_error.hxx" +#include "world.hxx" +#include "particle_factory.hxx" +#include "system_context.hxx" +#include "controller.hxx" +#include "rect.hxx" +#include "rect_collider.hxx" +#include "string_utils.hxx" + +World* World::current_world = 0; + +World::World () + : particle_mgr (new ParticleFactory(this)) +{ + file_version = 0; + has_been_run = false; +} + +World::World (const std::string& filename) + : particle_mgr (0) +{ + std::cout << "World: Trying to load: " << filename << std::endl; + file_version = 0; + + has_been_run = false; + lisp_object_t* root_obj = 0; + + // Try to read a file and store the content in root_obj + if (StringUtils::has_suffix(filename, ".construo.gz")) + { +#ifdef HAVE_LIBZ + lisp_stream_t stream; + int chunk_size = 128 * 1024; // allocate 256kb, should be enough for most levels + char* buf; + int buf_pos = 0; + int try_number = 1; + bool done = false; + + buf = static_cast(malloc(chunk_size)); + if (!buf) + { + throw ConstruoError ("World: Out of memory while opening " + filename); + } + + gzFile in = gzopen(system_context->translate_filename(filename).c_str (), "rb"); + + while (!done) + { + int ret = gzread(in, buf + buf_pos, chunk_size); + if (ret == -1) + { + free (buf); + throw ConstruoError ("World: Out of memory while opening " + filename); + } + else if (ret == chunk_size) // buffer got full, eof not yet there + { + std::cout << "World: Read buffer to small, allocating more space" << std::endl; + + buf_pos = chunk_size * try_number; + try_number += 1; + buf = static_cast(realloc(buf, chunk_size * try_number)); + + if (!buf) + { + throw ConstruoError ("World: Out of memory while opening " + filename); + } + } + else // (ret < chunk_size) + { + // everything fine, encountered EOF + done = true; + } + } + + lisp_stream_init_string (&stream, buf); + root_obj = lisp_read (&stream); + + free(buf); + gzclose(in); +#else + throw ConstruoError ("World: Reading of compressed files not supported, recompile with zlib support or extract the levelfile manually, " + filename); +#endif + } + else + { + lisp_stream_t stream; + FILE* in = system_context->open_input_file(filename); + if (!in) + { + throw ConstruoError ("World: Couldn't open " + filename); + return; + } + lisp_stream_init_file (&stream, in); + root_obj = lisp_read (&stream); + } + + if (root_obj->type == LISP_TYPE_EOF || root_obj->type == LISP_TYPE_PARSE_ERROR) + { + std::cout << "World: Parse Error in file " << filename << std::endl; + } + + lisp_object_t* cur = lisp_car(root_obj); + + if (!lisp_symbol_p (cur)) + { + throw ConstruoError ("World: Read error in " + filename); + } + + if (strcmp(lisp_symbol(cur), "construo-scene") == 0) + { + parse_scene (lisp_cdr(root_obj)); + } + else + { + throw ConstruoError ("World: Read error in " + filename + ". Couldn't find 'construo-scene'"); + } + + lisp_free (root_obj); + + ConstruoAssert(particle_mgr, "No Particles given in file, load failed"); + + //std::cout << "particles: " << particle_mgr->size () << std::endl; + //std::cout << "springs: " << springs.size () << std::endl; +} + +void +World::parse_scene (lisp_object_t* cursor) +{ + while(!lisp_nil_p(cursor)) + { + lisp_object_t* cur = lisp_car(cursor); + + if (!lisp_cons_p(cur) || !lisp_symbol_p (lisp_car(cur))) + { + throw ConstruoError ("World: Read error in parse_scene"); + } + else + { + if (strcmp(lisp_symbol(lisp_car(cur)), "particles") == 0) + { + parse_particles(lisp_cdr(cur)); + } + else if (strcmp(lisp_symbol(lisp_car(cur)), "springs") == 0) + { + parse_springs(lisp_cdr(cur)); + } + else if (strcmp(lisp_symbol(lisp_car(cur)), "colliders") == 0) + { + parse_colliders(lisp_cdr(cur)); + } + else if (strcmp(lisp_symbol(lisp_car(cur)), "version") == 0) + { + file_version = lisp_integer(lisp_car(lisp_cdr(cur))); + } + else + { + std::cout << "World: Read error in parse_scene. Unhandled tag '" + << lisp_symbol(lisp_car(cur)) << "' skipping and continuing" << std::endl; + } + } + cursor = lisp_cdr (cursor); + } +} + +void +World::parse_springs (lisp_object_t* cursor) +{ + while(!lisp_nil_p(cursor)) + { + lisp_object_t* cur = lisp_car(cursor); + springs.push_back(new Spring (this, cur)); + cursor = lisp_cdr (cursor); + } +} + +void +World::parse_colliders (lisp_object_t* cursor) +{ + while(!lisp_nil_p(cursor)) + { + lisp_object_t* cur = lisp_car(cursor); + if (strcmp(lisp_symbol(lisp_car(cur)), "rect") == 0) + { + colliders.push_back(new RectCollider(lisp_cdr(cur))); + } + else + { + std::cout << "WARNING: Unknown collider type '" << lisp_symbol(lisp_car(cur)) + << "' skipping" << std::endl; + } + cursor = lisp_cdr (cursor); + } +} + +void +World::parse_particles (lisp_object_t* cursor) +{ + particle_mgr = new ParticleFactory(this, cursor); +} + +// Copy Constructor +World::World (const World& old_world) +{ + file_version = 0; + + for (Colliders::const_iterator i = old_world.colliders.begin(); + i != old_world.colliders.end(); + ++i) + { + colliders.push_back((*i)->duplicate()); + } + + // FIXME: Could need optimizations + particle_mgr = new ParticleFactory (this, *old_world.particle_mgr); + + for (CSpringIter i = old_world.springs.begin (); i != old_world.springs.end (); ++i) + { + Particle* first = particle_mgr->lookup_particle((*i)->particles.first->get_id()); + Particle* second = particle_mgr->lookup_particle((*i)->particles.second->get_id()); + + if (first && second) + { + // FIXME: Use copy c'tor here maxstiffnes and Co. aren't copied correctly + springs.push_back (new Spring (first, second, (*i)->length)); + } + else + { + std::cout << "World: Error couldn't resolve particles" << std::endl; + } + } +} + +World::~World () +{ + clear (); +} + +void +World::draw (ZoomGraphicContext* gc) +{ + // FIXME: This is *not* used in the WorldViewComponent! + + current_world = this; + + draw_colliders(gc); + draw_springs(gc); + draw_particles(gc); +} + +void +World::draw_springs(ZoomGraphicContext* gc) +{ +#ifdef NEW_SPRING_CODE + std::vector lines (springs.size()); + + Vector2d dist = springs[0]->particles.first->pos - springs[0]->particles.second->pos; + float stretch = fabs(dist.norm ()/springs[0]->length - 1.0f) * 10.0f; + float color = fabs((stretch/springs[0]->max_stretch)); + + for (unsigned int i = 0; i < springs.size(); ++i) + { + //(*i)->draw (gc); + lines[i].x1 = springs[i]->particles.first->pos.x; + lines[i].y1 = springs[i]->particles.first->pos.y; + lines[i].x2 = springs[i]->particles.second->pos.x; + lines[i].y2 = springs[i]->particles.second->pos.y; + } + gc->draw_lines (lines, Color(color, 1.0f - color, 0.0f), 2); +#else + for (SpringIter i = springs.begin(); i != springs.end(); ++i) + { + (*i)->draw (gc); + } +#endif +} + +void +World::draw_particles(ZoomGraphicContext* gc) +{ + particle_mgr->draw(gc); +} + +void +World::draw_colliders(ZoomGraphicContext* gc) +{ + for (Colliders::iterator i = colliders.begin (); i != colliders.end (); ++i) + { + (*i)->draw(gc); + } +} + +void +World::update (float delta) +{ + current_world = this; + + has_been_run = true; + + // Main Movement and Forces + // FIXME: Hardcoded Force Emitters + for (ParticleFactory::ParticleIter i = particle_mgr->begin (); i != particle_mgr->end (); ++i) + { + // Gravity + (*i)->add_force (Vector2d (0.0, 15.0f) * (*i)->get_mass ()); + + // Central Gravity force: + /*Vector2d direction = ((*i)->pos - Vector2d (400, 300)); + if (direction.norm () != 0.0f) + (*i)->add_force (direction * (-100.0f/(direction.norm () * direction.norm ()))); + */ + + /* + for (ParticleIter j = particles.begin (); j != particles.end (); ++j) + { + Vector2d diff = (*j)->pos - (*i)->pos; + if (diff.norm () != 0.0f) + (*i)->add_force (diff * ((10.0f - (*j)->mass)/(diff.norm () * diff.norm ()))); + } */ + } + + for (SpringIter i = springs.begin (); i != springs.end (); ++i) + (*i)->update (delta); + + particle_mgr->update(delta); + + //std::cout << "Colliders: " << colliders.size () << std::endl; + for (Colliders::iterator i = colliders.begin (); i != colliders.end (); ++i) + (*i)->bounce (); + + // Spring splitting + std::vector new_springs; + for (SpringIter i = springs.begin (); i != springs.end (); ++i) + { + if ((*i)->destroyed) + { + if ((*i)->length > 20.0f) + { + // Calc midpoint + Vector2d pos = ((*i)->particles.first->pos + + (*i)->particles.second->pos) * 0.5f; + + // FIXME: particle mass needs to be recalculated + Particle* p1 = particle_mgr->add_particle (pos, (*i)->particles.first->velocity * 0.5f, .1f); + Particle* p2 = particle_mgr->add_particle (pos, (*i)->particles.second->velocity * 0.5f, .1f); + + // FIXME: Insert a more sofistikated string splitter here + new_springs.push_back (new Spring ((*i)->particles.first, p1, (*i)->length/2)); + new_springs.push_back (new Spring ((*i)->particles.second, p2, (*i)->length/2)); + } + } + } + springs.insert(springs.end(), new_springs.begin(), new_springs.end ()); + + // Remove any springs that are marked as destroyed + // FIXME: Could be faster + SpringIter i = springs.begin (); + while ( i != springs.end ()) + { + if ((*i)->destroyed) + { + delete *i; + i = springs.erase(i); + } + else + { + ++i; + } + } +} + +Spring* +World::get_spring (float x, float y) +{ + Spring* spring = 0; + float min_distance = 0.0f; + + float capture_threshold = 15; + + for (SpringIter i = springs.begin (); i != springs.end (); ++i) + { + float x0 = x; + float y0 = y; + float& x1 = (*i)->particles.first->pos.x; + float& y1 = (*i)->particles.first->pos.y; + float& x2 = (*i)->particles.second->pos.x; + float& y2 = (*i)->particles.second->pos.y; + + // FIXME: optimize me + float u = (((x0 - x1)*(x2-x1) + (y0 - y1)*(y2 - y1)) + / ((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))); + + float distance = (fabs((x2 - x1)*(y1-y0) - (x1-x0)*(y2-y1)) + / sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))); + + if (u >= 0 && u <= 1.0f + && ((spring && min_distance > distance) + || (!spring && distance <= capture_threshold))) // FIXME: threashold is dependend on view + { + spring = *i; + min_distance = distance; + } + } + + return spring; +} + +Particle* +World::get_particle (float x, float y) +{ + Particle* particle = 0; + float min_dist = 15; + Vector2d mouse_pos (x, y); + + for (ParticleFactory::ParticleIter i = particle_mgr->begin (); i != particle_mgr->end (); ++i) + { + Vector2d diff = mouse_pos - (*i)->pos; + if (diff.norm () < min_dist) + { + min_dist = diff.norm (); + particle = *i; + } + } + + return particle; +} + +std::vector +World::get_particles (float x1_, float y1_, float x2_, float y2_) +{ + float x1 = Math::min(x1_, x2_); + float x2 = Math::max(x1_, x2_); + float y1 = Math::min(y1_, y2_); + float y2 = Math::max(y1_, y2_); + + std::vector caputred_particles; + for (ParticleFactory::ParticleIter i = particle_mgr->begin (); i != particle_mgr->end (); ++i) + { + if ((*i)->pos.x >= x1 && (*i)->pos.x < x2 + && (*i)->pos.y >= y1 && (*i)->pos.y < y2) + caputred_particles.push_back(*i); + } + return caputred_particles; +} + +void +World::zero_out_velocity () +{ + std::cout << "Setting velocity to zero" << std::endl; + for (ParticleFactory::ParticleIter i = get_particle_mgr()->begin(); + i != get_particle_mgr()->end (); ++i) + { + (*i)->velocity = Vector2d (); + } +} + +void +World::add_spring (Particle* last_particle, Particle* particle) +{ + assert (last_particle && particle); + springs.push_back (new Spring (last_particle, particle)); +} + +void +World::remove_particle (Particle* p) +{ + // Remove everyting that references the particle + for (SpringIter i = springs.begin (); i != springs.end ();) + { + if ((*i)->particles.first == p || (*i)->particles.second == p) + { + delete *i; + // FIXME: this is potentially slow, since we don't care + // about order, we could speed this up + i = springs.erase(i); + } + else + { + ++i; + } + } + + particle_mgr->remove_particle(p); +} + +void +World::remove_spring (Spring* s) +{ + //std::cout << "particles: " << particle_mgr->size () << std::endl; + //std::cout << "springs: " << springs.size () << std::endl; + + delete s; + springs.erase(std::remove(springs.begin (), springs.end (), s), + springs.end ()); +} + +void +World::remove_collider (Collider* c) +{ + delete c; + colliders.erase(std::remove(colliders.begin (), colliders.end (), c), + colliders.end ()); +} + +void +World::clear () +{ + particle_mgr->clear(); + + for (SpringIter i = springs.begin (); i != springs.end (); ++i) + delete *i; + + springs.clear (); +} + +void +World::write_lisp (const std::string& filename) +{ + FILE* out; + + out = system_context->open_output_file(filename); + + if (!out) + { + std::cout << "World: Couldn't open '" << filename << "' for writing" << std::endl; + return; + } + + std::cout << "Writing to: " << filename << std::endl; + + fputs(";; Written by " PACKAGE_STRING "\n", out); + fputs("(construo-scene\n", out); + fputs(" (version 3)\n", out); + + // FIXME: insert creation date here + // FIXME: Filter '()"' here + fprintf(out, " (author \"%s\" \"%s\")\n", + system_context->get_user_realname().c_str(), + system_context->get_user_email().c_str()); + + particle_mgr->write_lisp(out); + + + fputs(" (springs\n", out); + for (CSpringIter i = springs.begin (); i != springs.end (); ++i) + { + lisp_object_t* obj = (*i)->serialize (); + fputs(" ", out); + lisp_dump (obj, out); + fputc('\n', out); + lisp_free(obj); + } + fputs(" )\n", out); + + fputs (" (colliders\n", out); + for (Colliders::iterator i = colliders.begin(); i != colliders.end(); ++i) + { + lisp_object_t* obj = (*i)->serialize (); + fputs(" ", out); + lisp_dump (obj, out); + fputc('\n', out); + lisp_free(obj); + } + fputs(" )", out); + + + fputs(")\n\n;; EOF ;;\n", out); + + fclose(out); + + if (StringUtils::has_suffix(filename, ".gz")) + { // Rewrite file compressed + std::cout << "World: Filename ends with .gz, rewriting " << filename << " compressed" << std::endl; + + int len = 512*1024; + int read_len; + char* buf; + buf = static_cast(malloc(len)); + if (!buf) + { + throw ConstruoError("Out of memory"); + } + FILE* in = system_context->open_input_file(filename); + read_len = fread (buf, sizeof (char), len, in); + if (len >= read_len) + { + throw ConstruoError("World: Internal error, read buffer to small"); + } + fclose (in); + + // Write the buffer in compressed format + gzFile out = gzopen(system_context->translate_filename(filename).c_str(), "wb"); + gzwrite (out, buf, len); + gzclose (out); + free (buf); + } +} + +BoundingBox +World::calc_bounding_box() +{ + BoundingBox bbox; + + if (particle_mgr->size() > 0) + { + bbox.x1 = bbox.x2 = (*particle_mgr->begin ())->pos.x; + bbox.y1 = bbox.y2 = (*particle_mgr->begin ())->pos.y; + } + else + { + bbox.x1 = 0; + bbox.y1 = 0; + + bbox.x2 = 800; + bbox.y2 = 600; + } + + for (ParticleFactory::ParticleIter i = particle_mgr->begin (); i != particle_mgr->end (); ++i) + { + bbox.join((*i)->pos); + } + + for (Colliders::iterator i = colliders.begin(); i != colliders.end(); ++i) + { + bbox.join((*i)->get_bounding_box()); + } + + return bbox; +} + +int +World::get_num_particles() +{ + return particle_mgr->size (); +} + +int +World::get_num_springs() +{ + return springs.size (); +} + +void +World::add_rect_collider(const Vector2d& pos1, const Vector2d& pos2) +{ + Rect rect (pos1.x, pos1.y, pos2.x, pos2.y); + + colliders.push_back(new RectCollider(rect.x1, rect.y1, rect.x2, rect.y2)); +} + +/* EOF */ diff --git a/world.hxx b/world.hxx new file mode 100644 index 0000000..2fa2458 --- /dev/null +++ b/world.hxx @@ -0,0 +1,133 @@ +// $Id: world.hxx,v 1.23 2003/07/27 18:46:11 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_WORLD_HXX +#define HEADER_CONSTRUO_WORLD_HXX + +#include +#include "spring.hxx" +#include "particle.hxx" +#include "collider.hxx" +#include "bounding_box.hxx" + +class Particle; +class ParticleFactory; +class Spring; + +/** This class holds all particles and springs */ +class World +{ +public: + typedef std::vector Colliders; + typedef std::vector::iterator SpringIter; + typedef std::vector::const_iterator CSpringIter; +private: + /** Version number of the file, used to ensure backward compability */ + unsigned int file_version; + + friend class ParticleFactory; + bool has_been_run; + ParticleFactory* particle_mgr; + + std::vector springs; + + Colliders colliders; + + void parse_scene (lisp_object_t* lst); + void parse_springs (lisp_object_t* lst); + void parse_particles (lisp_object_t* lst); + void parse_colliders (lisp_object_t* lst); + +public: + /** Create an empty world */ + World (); + + /** Copy an existing world */ + World (const World& w); + + /** load a world from file */ + World (const std::string& filename); + ~World (); + + void draw (ZoomGraphicContext* gc); + void draw_springs (ZoomGraphicContext* gc); + void draw_colliders (ZoomGraphicContext* gc); + void draw_particles (ZoomGraphicContext* gc); + + void update (float delta); + + World* duplicate () { return new World (*this); } + + /** @return the particles closed to the given coordinates */ + Particle* get_particle (float x, float y); + /** All particles inside the given rectangle */ + std::vector get_particles (float x1, float y1, float x2, float y2); + Spring* get_spring (float x, float y); + + void add_rect_collider(const Vector2d&, const Vector2d&); + void add_spring (Particle*, Particle*); + + /** removes the given particle and all objects/springs which + reference to it */ + void remove_particle (Particle*); + + /** remove the given spring */ + void remove_spring (Spring*); + + /** Remove the gives collider from the world */ + void remove_collider (Collider*); + + ParticleFactory* get_particle_mgr() { return particle_mgr; } + std::vector& get_spring_mgr () { return springs; } + Colliders& get_colliders() { return colliders; } + + /** removes everything from the world */ + void clear (); + + bool get_has_been_run () { return has_been_run; } + + /** Sets the velocity of all particles to zero, usefull if the + particles are getting out of order (aka. explode). Also usefull + to fix broken model files */ + void zero_out_velocity (); + + /** Write the current world down to a file */ + void write_lisp (const std::string& filename); + + /** @return the number of particles in the world */ + int get_num_particles(); + + /** @return the number of springs in the world */ + int get_num_springs(); + + /** Callculate the bounding box of the world from the particle and + * collider it contains. */ + BoundingBox calc_bounding_box(); +private: + static World* current_world; +public: + /** @return pointer to the current world */ + static World* current() { return current_world; } +private: + World& operator= (const World&); +}; + +#endif + +/* EOF */ diff --git a/world_button.cxx b/world_button.cxx new file mode 100644 index 0000000..a482094 --- /dev/null +++ b/world_button.cxx @@ -0,0 +1,119 @@ +// $Id: world_button.cxx,v 1.8 2003/07/26 11:18:47 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "world.hxx" +#include "controller.hxx" +#include "screen_manager.hxx" +#include "world_button.hxx" +#include "construo_error.hxx" + +WorldButton::WorldButton (const std::string& arg_filename, Mode m) + : GUIFileButton (arg_filename), + world(0), + file_broken(false), + mode (m) +{ +} + +WorldButton::~WorldButton () +{ + delete world; +} + +void +WorldButton::load_world () +{ + if ((world == 0 + && !file_broken) + || mtime != system_context->get_mtime(filename)) + { + try { + delete world; + world = new World(filename); + mtime = system_context->get_mtime(filename); + } catch (ConstruoError& err) { + std::cout << "ERROR: " << err.msg << std::endl; + std::cout << "ERROR: WorldButton: Somthing went wrong loading " << filename << std::endl; + world = 0; + file_broken = true; + } + } +} + +void +WorldButton::draw (GraphicContext* parent_gc) +{ + load_world(); + + parent_gc->draw_fill_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Color (0xBB0000FF)); + + ZoomGraphicContext gc (x_pos, y_pos, x_pos + width, y_pos + height); + gc.set_parent_gc(parent_gc); + + gc.lock(); + + if (world) + { + // FIXME: bounding box should be calculated in construtor + const BoundingBox& box = world->calc_bounding_box(); + gc.zoom_to((int) box.x1, (int)box.y1, + (int)box.x2, (int)box.y2); + world->draw_colliders (&gc); + world->draw_springs (&gc); + } + else + { + // Draw an 'X' for broken levels + gc.draw_line (0,0, gc.get_width (), gc.get_height (), Color (0xFF00FFFF)); + gc.draw_line (0,gc.get_height (), gc.get_width (), 0, Color (0xFF00FFFF)); + } + + gc.unlock(); + + if (mouse_over) + parent_gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Color (0xFFFFFFFF)); + else + parent_gc->draw_rect (x_pos, y_pos, + x_pos + width, y_pos + height, + Color (0xFF0000FF)); + + parent_gc->draw_string (x_pos + 20, y_pos + 160, filename); +} + +void +WorldButton::on_click () +{ + std::cout << "WorldButton: detected click on: " << filename << std::endl; + if (mode == SAVE_BUTTON) + { + Controller::instance()->save_world(filename); + ScreenManager::instance()->set_gui(ScreenManager::WORLD_GUI); + } + else // LOAD BUTTON + { + Controller::instance()->load_world(filename); + ScreenManager::instance()->set_gui(ScreenManager::WORLD_GUI); + } +} + +/* EOF */ diff --git a/world_button.hxx b/world_button.hxx new file mode 100644 index 0000000..9420d95 --- /dev/null +++ b/world_button.hxx @@ -0,0 +1,56 @@ +// $Id: world_button.hxx,v 1.3 2003/01/11 19:07:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_WORLD_BUTTON_HXX +#define HEADER_CONSTRUO_WORLD_BUTTON_HXX + +#include "gui_file_button.hxx" + +class World; + +/** button in the load/save dialog */ +class WorldButton : public GUIFileButton +{ +private: + World* world; + bool file_broken; + unsigned int mtime; + +public: + enum Mode { LOAD_BUTTON, SAVE_BUTTON}; +private: + Mode mode; +public: + WorldButton (const std::string& arg_filename, Mode m); + ~WorldButton (); + + void draw (GraphicContext* gc); + void on_click (); + + /** Load the given world, if not called it will be loaded on demand */ + void load_world (); + +private: + WorldButton (const WorldButton&); + WorldButton& operator= (const WorldButton&); +}; + +#endif + +/* EOF */ diff --git a/world_gui_manager.cxx b/world_gui_manager.cxx new file mode 100644 index 0000000..15128b0 --- /dev/null +++ b/world_gui_manager.cxx @@ -0,0 +1,284 @@ +// $Id: world_gui_manager.cxx,v 1.13 2003/07/29 15:10:07 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include "controller.hxx" +#include "construo.hxx" +#include "graphic_context.hxx" +#include "worldview_component.hxx" +#include "string_utils.hxx" +#include "worldview_insert_tool.hxx" +#include "gui_buttons.hxx" +#include "gui_window.hxx" +#include "gui_label.hxx" +#include "globals.hxx" +#include "screen_manager.hxx" +#include "root_graphic_context.hxx" +#include "world_gui_manager.hxx" + +using namespace StringUtils; + +WorldGUIManager* WorldGUIManager::instance_ = 0; + + +void increase_particle_mass() { + WorldViewInsertTool& wc = *WorldViewComponent::instance()->get_insert_tool(); + wc.set_particle_mass(wc.get_particle_mass() + 1.0f); +} + +void decrease_particle_mass() { + WorldViewInsertTool& wc = *WorldViewComponent::instance()->get_insert_tool(); + wc.set_particle_mass(wc.get_particle_mass() - 1.0f); +} + +void switch_to_insert_mode() { + WorldViewComponent::instance()->set_mode (WorldViewComponent::INSERT_MODE); +} + +bool insert_mode_hfunc() { + return WorldViewComponent::instance()->get_mode() == WorldViewComponent::INSERT_MODE; +} + +bool zoom_mode_hfunc() { + return WorldViewComponent::instance()->get_mode() == WorldViewComponent::ZOOM_MODE; +} + +bool select_mode_hfunc() { + return WorldViewComponent::instance()->get_mode() == WorldViewComponent::SELECT_MODE; +} + +bool collider_mode_hfunc() { + return WorldViewComponent::instance()->get_mode() == WorldViewComponent::COLLIDER_MODE; +} + +void switch_to_zoom_mode() { + WorldViewComponent::instance()->set_mode (WorldViewComponent::ZOOM_MODE); +} + +void switch_to_collider_mode() { + WorldViewComponent::instance()->set_mode (WorldViewComponent::COLLIDER_MODE); +} + +void switch_to_select_mode() { + WorldViewComponent::instance()->set_mode (WorldViewComponent::SELECT_MODE); +} + +void save_button_callback() { + ScreenManager::instance()->set_gui(ScreenManager::SAVE_GUI); +} + +void action_cam_callback() { + Controller::instance()->set_action_cam(!Controller::instance()->get_action_cam()); +} + +void zoom_in_callback() { + WorldViewComponent::instance()->wheel_up (graphic_context->get_width()/2, + graphic_context->get_height()/2); +} + +void zoom_out_callback() { + WorldViewComponent::instance()->wheel_down (graphic_context->get_width()/2, + graphic_context->get_height()/2); + +} + +void hide_dots_callback() { + Controller& c = *Controller::instance(); + c.set_hide_dots(!c.get_hide_dots()); +} + +bool hide_dots_hfunc () +{ + return Controller::instance()->get_hide_dots(); +} + +bool action_cam_hfunc () +{ + return Controller::instance()->get_action_cam(); +} + +bool show_grid_hfunc() +{ + return WorldViewComponent::instance()->uses_grid(); +} + +void show_grid_callback() +{ + WorldViewComponent::instance()->on_grid_press(0, 0); +} + +void redo_callback () +{ + return Controller::instance()->redo(); +} + +void undo_callback () +{ + return Controller::instance()->undo(); +} + +#define BUTTON_POS(n) (80 + n * 30) +#define BUTTON_RPOS(n) (50 + n * 30) +#define BUTTON_WIDTH 75 +#define BUTTON_HEIGHT 25 +#define BUTTON_LX_POS (graphic_context->get_width() - BUTTON_WIDTH - 10) + +WorldGUIManager::WorldGUIManager () +{ + instance_ = this; + + add(new WorldViewComponent ()); + //add(new GUILabel ("Sim:", 10, 50, 10, 10)); + add(new GUIRunButton ()); + add(new GUISlowMoButton ()); + //add(new GUIZoomInButton ()); + //add(new GUIZoomOutButton ()); + add(new GUILoadButton ()); + add(new GUIGenericButton ("Save", 10, BUTTON_POS(10), BUTTON_WIDTH, BUTTON_HEIGHT, save_button_callback)); + + add(new GUIGenericButton ("Undo", 10, BUTTON_POS(6), BUTTON_WIDTH, BUTTON_HEIGHT, undo_callback)); + add(new GUIGenericButton ("Redo", 10, BUTTON_POS(7), BUTTON_WIDTH, BUTTON_HEIGHT, redo_callback)); + + add(new GUIGenericButton ("ActionCam", 10, BUTTON_POS(2), BUTTON_WIDTH, BUTTON_HEIGHT, action_cam_callback, action_cam_hfunc)); + add(new GUIGenericButton ("Hide Dots", 10, BUTTON_POS(3), BUTTON_WIDTH, BUTTON_HEIGHT, hide_dots_callback, hide_dots_hfunc)); + add(new GUIGenericButton ("Use Grid", 10, BUTTON_POS(4), BUTTON_WIDTH, BUTTON_HEIGHT, show_grid_callback, show_grid_hfunc)); + add(new GUIQuitButton ()); + + //add(new GUILabel ("Tools", BUTTON_LX_POS, BUTTON_POS(3)+5, BUTTON_WIDTH, BUTTON_HEIGHT)); + + add(new GUIGenericButton ("Insert", BUTTON_LX_POS, BUTTON_RPOS(4), BUTTON_WIDTH, BUTTON_HEIGHT, switch_to_insert_mode, insert_mode_hfunc)); + add(new GUIGenericButton ("Select", BUTTON_LX_POS, BUTTON_RPOS(5), BUTTON_WIDTH, BUTTON_HEIGHT, switch_to_select_mode, select_mode_hfunc)); + add(new GUIGenericButton ("Collider", BUTTON_LX_POS, BUTTON_RPOS(6), BUTTON_WIDTH, BUTTON_HEIGHT, switch_to_collider_mode, collider_mode_hfunc)); + add(new GUIGenericButton ("Zoom", BUTTON_LX_POS, BUTTON_RPOS(7), BUTTON_WIDTH, BUTTON_HEIGHT, switch_to_zoom_mode, zoom_mode_hfunc)); + + add(new GUIGenericButton ("-", BUTTON_LX_POS + 38, BUTTON_RPOS(8), 25, 25, zoom_out_callback)); + add(new GUIGenericButton ("+", BUTTON_LX_POS + 6, BUTTON_RPOS(8), 25, 25, zoom_in_callback)); + + // FIXME: Stuff for particle mass and Co. must be implemented in another way + if(0) + { + add(new GUIGenericButton ("Increase ParticleMass", 650, 220, 140, 25, increase_particle_mass)); + add(new GUIGenericButton ("Decrease ParticleMass", 650, 250, 140, 25, decrease_particle_mass)); + + add(new GUILabel ("Stiffness", 550, 280, 75, 25)); + + add(new GUIGenericButton ("+", BUTTON_LX_POS, 280, 25, 25, increase_particle_mass)); + add(new GUIGenericButton ("-", 680, 280, 25, 25, decrease_particle_mass)); + + add(new GUIGenericButton ("+", 650, 280, 25, 25, increase_particle_mass)); + add(new GUIGenericButton ("-", 680, 280, 25, 25, decrease_particle_mass)); + } + //add(new GUIWindow ("Test Window", 200, 100, 200, 90)); + + /* + GUIWindow* window = new GUIWindow ("Window Title", 300, 100, 300, 400); + window->add (new GUIButton ("Testbutton", 10, 10, 100, 25)); + add (window); + */ +} + +WorldGUIManager::~WorldGUIManager () +{ +} + +void +WorldGUIManager::update() +{ + Controller::instance()->update (); +} + +void +WorldGUIManager::draw_overlay () +{ + graphic_context->draw_string (10, 20, " [1-9] - quick save"); + graphic_context->draw_string (10, 32, "[shift 1-9] - quick load"); + graphic_context->draw_string (10, 44, " [space] - run simulation"); + graphic_context->draw_string (10, 56, " [tab] - toggle slow motion"); + graphic_context->draw_string (10, 68, " [F11] - toggle fullscreen"); + + graphic_context->draw_string (200, 20, " [c] - clear scene"); + graphic_context->draw_string (200, 32, " [u] - undo to last state"); + graphic_context->draw_string (200, 44, " [r] - redo (undo an undo)"); + graphic_context->draw_string (200, 56, " [+/-] - zoom in/out"); + graphic_context->draw_string (200, 68, " [g] - toggle grid"); + + graphic_context->draw_string (600, 32, "[middle] - scroll"); + + switch (WorldViewComponent::instance()->get_mode()) + { + case WorldViewComponent::INSERT_MODE: + graphic_context->draw_string (600, 20, " [left] - insert/connect spots"); + graphic_context->draw_string (600, 44, " [right] - remove spot"); + graphic_context->draw_string (400, 20, " [f] - fix current dot"); + break; + + case WorldViewComponent::SELECT_MODE: + graphic_context->draw_string (600, 20, " [left] - create/move selection"); + graphic_context->draw_string (600, 44, " [right] - rotate selection"); + + graphic_context->draw_string (400, 20, " [v] - set velocity"); + graphic_context->draw_string (400, 32, " [d] - duplicate selection"); + graphic_context->draw_string (400, 44, " [h] - flip selection"); + graphic_context->draw_string (400, 56, " [f] - fix selection"); + graphic_context->draw_string (400, 68, " [j] - join dots"); + graphic_context->draw_string (400, 80, " [s] - scale selection"); + break; + + case WorldViewComponent::ZOOM_MODE: + graphic_context->draw_string (600, 20, " [left] - zoom into region"); + graphic_context->draw_string (600, 44, " [right] - zoom out"); + break; + + case WorldViewComponent::COLLIDER_MODE: + graphic_context->draw_string (600, 20, " [left] - create/move collider"); + graphic_context->draw_string (600, 44, " [right] - remove collider"); + break; + + default: + break; + } + + World& world = *Controller::instance()->get_world (); + + /*graphic_context->draw_string (600, 430, "Particles Mass: "); + graphic_context->draw_string (BUTTON_LX_POS, 430, + to_string(WorldViewComponent::instance()->get_insert_tool()->get_particle_mass ())); + */ + int bottom_line = graphic_context->get_height() - 10; + graphic_context->draw_string (10, bottom_line-20, "FPS: "); + graphic_context->draw_string (80, bottom_line-20, to_string(current_fps)); + + graphic_context->draw_string (10, bottom_line, "Pos: "); + graphic_context->draw_string (80, bottom_line, + to_string(WorldViewComponent::instance()->get_gc()->screen_to_world(input_context->get_mouse_pos()))); + + graphic_context->draw_string (210, bottom_line-20, "Particles: "); + graphic_context->draw_string (280, bottom_line-20, to_string(world.get_num_particles())); + + graphic_context->draw_string (210, bottom_line, "Springs: "); + graphic_context->draw_string (280, bottom_line, to_string(world.get_num_springs())); + + graphic_context->draw_string (410, bottom_line, "Zoom: "); + graphic_context->draw_string (480, bottom_line, to_string(WorldViewComponent::instance()->get_zoom())); + + graphic_context->draw_string (610, bottom_line, "..:: Construo V"VERSION" ::.."); + //graphic_context->draw_string (680, bottom_line, to_string(WorldViewComponent::instance()->get_zoom())); +} + +/* EOF */ diff --git a/world_gui_manager.hxx b/world_gui_manager.hxx new file mode 100644 index 0000000..6e0a393 --- /dev/null +++ b/world_gui_manager.hxx @@ -0,0 +1,42 @@ +// $Id: world_gui_manager.hxx,v 1.3 2003/01/11 01:35:11 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_WORLD_GUI_MANAGER_HXX +#define HEADER_WORLD_GUI_MANAGER_HXX + +#include "gui_manager.hxx" + +/** */ +class WorldGUIManager : public GUIManager +{ +private: + static WorldGUIManager* instance_; +public: + static WorldGUIManager* instance() { return instance_; } + + WorldGUIManager (); + virtual ~WorldGUIManager (); + + void update(); + void draw_overlay (); +}; + +#endif + +/* EOF */ diff --git a/worldview_collider_tool.cxx b/worldview_collider_tool.cxx new file mode 100644 index 0000000..cb4d751 --- /dev/null +++ b/worldview_collider_tool.cxx @@ -0,0 +1,152 @@ +// $Id: worldview_collider_tool.cxx,v 1.4 2003/01/11 16:11:36 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "construo.hxx" +#include "input_context.hxx" +#include "controller.hxx" +#include "colors.hxx" +#include "world.hxx" +#include "world_gui_manager.hxx" +#include "worldview_component.hxx" +#include "worldview_collider_tool.hxx" + +WorldViewColliderTool::WorldViewColliderTool () +{ + creating_rect = false; + to_delete_collider = 0; + move_collider = 0; +} + +WorldViewColliderTool::~WorldViewColliderTool () +{ +} + +void +WorldViewColliderTool::draw_background (ZoomGraphicContext* gc) +{ + Vector2d mouse_pos = WorldViewComponent::instance()->get_gc()->screen_to_world(input_context->get_mouse_pos ()); + if (creating_rect) + { + gc->GraphicContext::draw_rect(click_pos, mouse_pos, Colors::selection_rect); + } +} + +Collider* +WorldViewColliderTool::get_collider (const Vector2d& pos) +{ + World& world = *Controller::instance()->get_world(); + World::Colliders& colliders = world.get_colliders(); + for (World::Colliders::reverse_iterator i = colliders.rbegin (); + i != colliders.rend(); ++i) + { + if ((*i)->is_at(pos)) + return *i; + } + return 0; +} + +void +WorldViewColliderTool::draw_foreground (ZoomGraphicContext* gc) +{ + Vector2d mouse_pos + = WorldViewComponent::instance()->get_gc()->screen_to_world(input_context->get_mouse_pos ()); + Collider* collider = get_collider (mouse_pos); + + if (collider) + collider->draw_highlight(gc); +} + +void +WorldViewColliderTool::on_primary_button_press (int x, int y) +{ + WorldGUIManager::instance()->grab_mouse (WorldViewComponent::instance()); + + click_pos = WorldViewComponent::instance()->get_gc()->screen_to_world(input_context->get_mouse_pos ()); + + if ((move_collider = get_collider (click_pos)) != 0) + { + // click_pos Offset, not position + click_pos = click_pos - move_collider->get_pos(); + creating_rect = false; + Controller::instance()->push_undo(); + } + else + { + Controller::instance()->push_undo(); + creating_rect = true; + } +} + +void +WorldViewColliderTool::on_primary_button_release (int x, int y) +{ + WorldGUIManager::instance()->ungrab_mouse (WorldViewComponent::instance()); + + if (creating_rect) + { + Vector2d pos2 = WorldViewComponent::instance()->get_gc()->screen_to_world(input_context->get_mouse_pos ()); + World& world = *Controller::instance()->get_world(); + + if (fabs(pos2.x - click_pos.x) < 15 + || fabs(pos2.y - click_pos.y) < 15) + { + std::cout << "Rect collider to small, not inserting" << std::endl; + } + else + { + world.add_rect_collider (click_pos, pos2); + } + } + + creating_rect = false; + move_collider = 0; +} + +void +WorldViewColliderTool::on_mouse_move (int x, int y, int of_x, int of_y) +{ + Vector2d current_pos = WorldViewComponent::instance()->get_gc()->screen_to_world(Vector2d(x,y)); + + if (move_collider) + { + move_collider->set_pos(current_pos - click_pos); + } +} + +void +WorldViewColliderTool::on_secondary_button_press (int x, int y) +{ + to_delete_collider = get_collider(WorldViewComponent::instance()->get_gc()->screen_to_world(Vector2d(x, y))); +} + +void +WorldViewColliderTool::on_secondary_button_release (int x, int y) +{ + World& world = *Controller::instance()->get_world(); + + if (to_delete_collider + == get_collider(WorldViewComponent::instance()->get_gc()->screen_to_world(Vector2d(x, y)))) + { + Controller::instance()->push_undo(); + world.remove_collider(to_delete_collider); + } + to_delete_collider = 0; +} + +/* EOF */ diff --git a/worldview_collider_tool.hxx b/worldview_collider_tool.hxx new file mode 100644 index 0000000..f596d29 --- /dev/null +++ b/worldview_collider_tool.hxx @@ -0,0 +1,58 @@ +// $Id: worldview_collider_tool.hxx,v 1.3 2003/01/11 16:11:36 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_WORLDVIEW_COLLIDER_TOOL_HXX +#define HEADER_CONSTRUO_WORLDVIEW_COLLIDER_TOOL_HXX + +#include "vector2d.hxx" +#include "worldview_tool.hxx" + +class Collider; + +/** */ +class WorldViewColliderTool : public WorldViewTool +{ +private: + bool creating_rect; + Vector2d click_pos; + + Collider* to_delete_collider; + Collider* move_collider; + + /** Get the collider on the given world cooridnates */ + Collider* get_collider (const Vector2d&); +public: + WorldViewColliderTool (); + ~WorldViewColliderTool (); + + void draw_background (ZoomGraphicContext* gc); + void draw_foreground (ZoomGraphicContext* gc); + + void on_primary_button_press (int x, int y); + void on_primary_button_release (int x, int y); + + void on_secondary_button_press (int x, int y); + void on_secondary_button_release (int x, int y); + + void on_mouse_move (int x, int y, int of_x, int of_y); +}; + +#endif + +/* EOF */ diff --git a/worldview_component.cxx b/worldview_component.cxx new file mode 100644 index 0000000..fe53b63 --- /dev/null +++ b/worldview_component.cxx @@ -0,0 +1,397 @@ +// $Id: worldview_component.cxx,v 1.35 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "colors.hxx" +#include "controller.hxx" +#include "root_graphic_context.hxx" +#include "world_gui_manager.hxx" +#include "worldview_tool.hxx" +#include "worldview_insert_tool.hxx" +#include "worldview_select_tool.hxx" +#include "worldview_zoom_tool.hxx" +#include "worldview_collider_tool.hxx" +#include "worldview_component.hxx" + +WorldViewComponent* WorldViewComponent::instance_; + +WorldViewComponent::WorldViewComponent () + : GUIComponent(0, 0, graphic_context->get_width (), graphic_context->get_height ()) +{ + instance_ = this; + + scrolling = false; + use_grid = false; + + select_tool = new WorldViewSelectTool (); + insert_tool = new WorldViewInsertTool (); + zoom_tool = new WorldViewZoomTool (); + collider_tool = new WorldViewColliderTool (); + + current_tool = insert_tool; + mode = INSERT_MODE; + + on_world_change(); +} + +void +WorldViewComponent::set_mode (Mode m) +{ + current_tool->deactivate (); + + if (m == INSERT_MODE) + { + current_tool = insert_tool; + mode = INSERT_MODE; + graphic_context->set_cursor(CURSOR_INSERT); + } + else if (m == SELECT_MODE) + { + current_tool = select_tool; + mode = SELECT_MODE; + graphic_context->set_cursor(CURSOR_SELECT); + } + else if (m == ZOOM_MODE) + { + current_tool = zoom_tool; + mode = ZOOM_MODE; + graphic_context->set_cursor(CURSOR_ZOOM); + } + else if (m == COLLIDER_MODE) + { + current_tool = collider_tool; + mode = COLLIDER_MODE; + graphic_context->set_cursor(CURSOR_COLLIDER); + } + else + { + std::cout << "Unknown Mode" << std::endl; + assert (false); + } + + current_tool->activate (); +} + +WorldViewComponent::~WorldViewComponent () +{ + instance_ = 0; +} + +void +WorldViewComponent::draw_grid() +{ + if (gc.get_zoom() > 0.4f) + { + Color color = Colors::grid_color; + int start_x = Math::round_to(gc.screen_to_world_x(0), 10) - 10; + int end_x = Math::round_to(gc.screen_to_world_x(gc.get_width()), 10) + 10; + + int start_y = Math::round_to(gc.screen_to_world_y(0), 10) - 10; + int end_y = Math::round_to(gc.screen_to_world_y(gc.get_height()), 10) + 10; + + gc.push_quick_draw(); + for(int y = start_y; y < end_y; y += 10) + gc.draw_line(start_x, y, + end_x, y, + color, 1); + + for(int x = start_x; x < end_x; x += 10) + gc.draw_line(x, start_y, + x, end_y, + color, 1); + gc.pop_quick_draw(); + } +} + +void +WorldViewComponent::draw_ground() +{ + GraphicContext* parent_gc = gc.get_parent_gc(); + + if (gc.screen_to_world_y(parent_gc->get_height()) >= 599) + { + gc.draw_fill_rect(gc.screen_to_world_x(0), + 599, + gc.screen_to_world_x(parent_gc->get_width()), + gc.screen_to_world_y(parent_gc->get_height()), + Colors::ground_color); + + Color color = Colors::ground_grid_color; + + int step_size = 100; + + int start_x = Math::round_to(gc.screen_to_world_x(0), step_size) - step_size; + int end_x = Math::round_to(gc.screen_to_world_x(gc.get_width()), step_size) + step_size; + + int start_y = 599; + int end_y = Math::round_to(gc.screen_to_world_y(gc.get_height()), step_size) + step_size; + + gc.push_quick_draw(); + for(int y = start_y; y < end_y; y += step_size) + gc.draw_line(start_x, y, + end_x, y, + color, 1); + + for(int x = start_x; x < end_x; x += step_size) + gc.draw_line(x, start_y, + x, end_y, + color, 1); + gc.pop_quick_draw(); + + gc.draw_rect(gc.screen_to_world_x(0), + 599, + gc.screen_to_world_x(parent_gc->get_width()), + gc.screen_to_world_y(parent_gc->get_height()), + Colors::rect_collider_bg); + } +} + +void +WorldViewComponent::draw (GraphicContext* parent_gc) +{ + //int x = gc.screen_to_world_x (input_context->get_mouse_x ()); + //int y = gc.screen_to_world_y (input_context->get_mouse_y ()); + + gc.set_parent_gc (parent_gc); + + if (use_grid) + draw_grid(); + + draw_ground(); + + World& world = *Controller::instance()->get_world(); + + if (Controller::instance()->get_action_cam() + && Controller::instance()->is_running()) + { + // Live Action Cam + const BoundingBox& box = world.calc_bounding_box(); + // Zoom to the bounding box + gc.zoom_to((int) box.x1, (int)box.y1, + (int)box.x2, (int)box.y2); + // Zoom out two times so that the area isn't covered up by the + // GUI + gc.zoom_out (get_width()/2, get_height()/2); + gc.zoom_out (get_width()/2, get_height()/2); + } + + current_tool->draw_background (&gc); + + if (0) // draw bounding box + { + const BoundingBox& box = world.calc_bounding_box(); + gc.draw_rect(box.x1, box.y1, box.x2, box.y2, + Color(1.0f, 1.0f, 1.0f)); + } + + world.draw_colliders (&gc); + world.draw_springs (&gc); + if (!Controller::instance()->get_hide_dots()) + world.draw_particles (&gc); + + current_tool->draw_foreground (&gc); + + if (0) + { + switch (mode) + { + case ZOOM_MODE: + parent_gc->draw_string (10, parent_gc->get_height () - 15, "[ Zoom Mode ]"); + break; + case INSERT_MODE: + parent_gc->draw_string (10, parent_gc->get_height () - 15, "[ Insert Mode ]"); + break; + case SELECT_MODE: + parent_gc->draw_string (10, parent_gc->get_height () - 15, "[ Select Mode ]"); + break; + case COLLIDER_MODE: + parent_gc->draw_string (10, parent_gc->get_height () - 15, "[Collider Mode]"); + break; + } + } + + //const WorldBoundingBox& box = world.calc_bounding_box(); + //gc.flip (int(box.x1), int(box.y1), int(box.x2), int(box.y2)); +} + +void +WorldViewComponent::wheel_up (int x, int y) +{ + gc.zoom_in (x, y); +} + +void +WorldViewComponent::wheel_down (int x, int y) +{ + gc.zoom_out (x, y); +} + +void +WorldViewComponent::on_button_press (int button_id, int x, int y) +{ + current_tool->on_button_press (button_id, x, y); +} + +void +WorldViewComponent::on_primary_button_press (int screen_x, int screen_y) +{ + current_tool->on_primary_button_press (screen_x, screen_y); +} + +void +WorldViewComponent::on_primary_button_release (int screen_x, int screen_y) +{ + current_tool->on_primary_button_release (screen_x, screen_y); +} + +void +WorldViewComponent::on_secondary_button_press (int screen_x, int screen_y) +{ + current_tool->on_secondary_button_press (screen_x, screen_y); +} + +void +WorldViewComponent::on_secondary_button_release (int screen_x, int screen_y) +{ + current_tool->on_secondary_button_release (screen_x, screen_y); +} + +void +WorldViewComponent::on_delete_press (int screen_x, int screen_y) +{ + current_tool->on_delete_press (screen_x, screen_y); +} + +void +WorldViewComponent::on_duplicate_press (int screen_x, int screen_y) +{ + current_tool->on_duplicate_press (screen_x, screen_y); +} + +void +WorldViewComponent::on_join_press (int x, int y) +{ + current_tool->on_join_press (x, y); +} + +void +WorldViewComponent::on_fix_press (int screen_x, int screen_y) +{ + current_tool->on_fix_press (screen_x, screen_y); +} + +void +WorldViewComponent::scroll_left () +{ + gc.translate_offset (-20, 0); +} + +void +WorldViewComponent::scroll_right () +{ + gc.translate_offset (20, 0); +} + +void +WorldViewComponent::scroll_up () +{ + gc.translate_offset (0, -20); +} + +void +WorldViewComponent::scroll_down () +{ + gc.translate_offset (0, 20); +} + +void +WorldViewComponent::on_tertiary_button_press (int x, int y) +{ + scrolling = true; + graphic_context->push_cursor(); + graphic_context->set_cursor(CURSOR_SCROLL); + + x_offset = gc.get_x_offset (); + y_offset = gc.get_y_offset (); + WorldGUIManager::instance()->grab_mouse (this); + + scroll_pos_x = gc.screen_to_world_x(x); + scroll_pos_y = gc.screen_to_world_y(y); +} + +void +WorldViewComponent::on_tertiary_button_release (int x, int y) +{ + graphic_context->pop_cursor(); + scrolling = false; + WorldGUIManager::instance()->ungrab_mouse (this); +} + +void +WorldViewComponent::on_mouse_move (int x, int y, int of_x, int of_y) +{ + if (scrolling) + { + int new_scroll_pos_x = int(x/gc.get_zoom() - x_offset); + int new_scroll_pos_y = int(y/gc.get_zoom() - y_offset); + + gc.set_offset (x_offset + (new_scroll_pos_x - scroll_pos_x), + y_offset + (new_scroll_pos_y - scroll_pos_y)); + + } + else + { + current_tool->on_mouse_move (x, y, of_x, of_y); + } +} + +void +WorldViewComponent::on_scale_press(int x, int y) +{ + current_tool->on_scale_press(x,y); +} + +void +WorldViewComponent::on_grid_press(int x, int y) +{ + use_grid = !use_grid; +} + +float +WorldViewComponent::get_zoom () +{ + return gc.get_zoom (); +} + +void +WorldViewComponent::on_world_change() +{ + std::cout << "Fitting world into view" << std::endl; + World& world = *Controller::instance()->get_world(); + + const BoundingBox& box = world.calc_bounding_box(); + // Zoom to the bounding box + gc.zoom_to((int) box.x1, (int)box.y1, + (int)box.x2, (int)box.y2); + // Zoom out two times so that the area isn't covered up by the + // GUI + gc.zoom_out (get_width()/2, get_height()/2); + gc.zoom_out (get_width()/2, get_height()/2); +} + +/* EOF */ diff --git a/worldview_component.hxx b/worldview_component.hxx new file mode 100644 index 0000000..aaa325e --- /dev/null +++ b/worldview_component.hxx @@ -0,0 +1,129 @@ +// $Id: worldview_component.hxx,v 1.21 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_WORLDVIEW_COMPONENT_HXX +#define HEADER_WORLDVIEW_COMPONENT_HXX + +#include "input_context.hxx" +#include "zoom_graphic_context.hxx" +#include "gui_component.hxx" + +class Particle; +class WorldViewTool; +class WorldViewInsertTool; +class WorldViewSelectTool; +class WorldViewZoomTool; +class WorldViewColliderTool; + +/** GUI Component that manages the view and the editing of the + world, this is the main component of Construo */ +class WorldViewComponent : public GUIComponent +{ +public: + enum Mode { INSERT_MODE, SELECT_MODE, ZOOM_MODE, COLLIDER_MODE }; + +private: + Mode mode; + + ZoomGraphicContext gc; + + /** If set to true, display a grid and align dots to it */ + bool use_grid; + + /** True if the third button is currently pressed and we are in + scroll mode */ + bool scrolling; + + float scroll_pos_x; + float scroll_pos_y; + + float x_offset; + float y_offset; + + /** If the user clicks in this component, the tool decides what to + do */ + WorldViewTool* current_tool; + WorldViewSelectTool* select_tool; + WorldViewInsertTool* insert_tool; + WorldViewZoomTool* zoom_tool; + WorldViewColliderTool* collider_tool; + + static WorldViewComponent* instance_; + + /** Draw the background grid to which new dots align */ + void draw_grid(); + + /** Draw ground, aka the all overspanning collider at the bottem */ + void draw_ground(); +public: + void set_mode (Mode m); + Mode get_mode () { return mode; } + + WorldViewComponent (); + ~WorldViewComponent (); + + static inline WorldViewComponent* instance() { return instance_; } + + WorldViewInsertTool* get_insert_tool() { return insert_tool; } + + ZoomGraphicContext* get_gc () { return &gc; } + void draw (GraphicContext* parent_gc); + + bool uses_grid() const { return use_grid; } + + void on_primary_button_press (int x, int y); + void on_primary_button_release (int x, int y); + + void on_secondary_button_press (int x, int y); + void on_secondary_button_release (int x, int y); + + void on_tertiary_button_press (int x, int y); + void on_tertiary_button_release (int x, int y); + + void on_mouse_move (int x, int y, int of_x, int of_y); + + void on_scale_press(int x, int y); + void on_grid_press(int x, int y); + void on_duplicate_press (int x, int y); + void on_delete_press (int x, int y); + void on_fix_press (int x, int y); + void on_join_press (int x, int y); + + void on_button_press (int button_id, int x, int y); + + void wheel_up (int x, int y); + void wheel_down (int x, int y); + + void scroll_left (); + void scroll_right (); + void scroll_up (); + void scroll_down (); + + float get_zoom (); + + /** Called once the world has changed, aka a new world got loaded */ + void on_world_change(); + + /** */ + bool is_at (int x, int y) { return true; } +}; + +#endif + +/* EOF */ diff --git a/worldview_insert_tool.cxx b/worldview_insert_tool.cxx new file mode 100644 index 0000000..cf6c9cb --- /dev/null +++ b/worldview_insert_tool.cxx @@ -0,0 +1,235 @@ +// $Id: worldview_insert_tool.cxx,v 1.13 2003/07/28 09:23:46 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include "colors.hxx" +#include "particle_factory.hxx" +#include "input_context.hxx" +#include "graphic_context.hxx" +#include "world.hxx" +#include "controller.hxx" +#include "worldview_component.hxx" +#include "worldview_insert_tool.hxx" +#include "world_gui_manager.hxx" + +WorldViewInsertTool::WorldViewInsertTool () +{ + current_particle = 0; + particle_mass = 0.1f; +} + +WorldViewInsertTool::~WorldViewInsertTool () +{ +} + +void +WorldViewInsertTool::draw_background (ZoomGraphicContext* gc) +{ + float x = WorldViewComponent::instance()->get_gc()->screen_to_world_x (input_context->get_mouse_x ()); + float y = WorldViewComponent::instance()->get_gc()->screen_to_world_y (input_context->get_mouse_y ()); + + World& world = *Controller::instance()->get_world(); + + Particle* selected_particle = world.get_particle (x, y); + if (selected_particle) + { + selected_particle->draw_highlight(gc); + } +} + +void +WorldViewInsertTool::draw_foreground (ZoomGraphicContext* gc) +{ + World& world = *Controller::instance()->get_world(); + + Vector2d click_pos = WorldViewComponent::instance()->get_gc()->screen_to_world (input_context->get_mouse_pos ()); + + Vector2d new_particle_pos; + + if (WorldViewComponent::instance()->uses_grid()) + new_particle_pos = Vector2d(Math::round_to(click_pos.x, 10), + Math::round_to(click_pos.y, 10)); + else + new_particle_pos = Vector2d(click_pos.x, click_pos.y); + + Spring* selected_spring = world.get_spring (click_pos.x, click_pos.y); + + if (selected_spring) + { + selected_spring->draw_highlight (gc); + } + + if (current_particle) + { + gc->GraphicContext::draw_line (current_particle->pos, new_particle_pos, + Colors::new_spring, 2); + } + + float x = WorldViewComponent::instance()->get_gc()->screen_to_world_x(input_context->get_mouse_x ()); + float y = WorldViewComponent::instance()->get_gc()->screen_to_world_y(input_context->get_mouse_y ()); + + Particle* selected_particle = world.get_particle (x, y); + if (selected_particle) + { + selected_particle->draw_infos (gc); + } + else + { + gc->draw_fill_circle(new_particle_pos.x, + new_particle_pos.y, + 3.0f, + Colors::highlight); + } +} + +void +WorldViewInsertTool::on_primary_button_press (int screen_x, int screen_y) +{ + World& world = *Controller::instance()->get_world (); + float x = WorldViewComponent::instance()->get_gc()->screen_to_world_x (screen_x); + float y = WorldViewComponent::instance()->get_gc()->screen_to_world_y (screen_y); + + if (current_particle) + { + // We are going to place a second particle and convert the last an + // the new one with a spring + Particle* new_current_particle = world.get_particle (x, y); + if (new_current_particle != current_particle) + { + if (new_current_particle) // connect to particles + { + world.add_spring (current_particle, new_current_particle); + } + else // add a new particle and connect it with the current one + { + Vector2d new_particle_pos; + if (WorldViewComponent::instance()->uses_grid()) + new_particle_pos = Vector2d(Math::round_to(x, 10), + Math::round_to(y, 10)); + else + new_particle_pos = Vector2d(x, y); + + new_current_particle = world.get_particle_mgr()->add_particle(new_particle_pos, + Vector2d(), + particle_mass); + world.add_spring (current_particle, new_current_particle); + } + // Lower the spring links count, since we have increased it + // at insertion and now connected it to a real spring, so + // its no longer needed + current_particle->spring_links -= 1; + + current_particle = 0; + } + WorldGUIManager::instance()->ungrab_mouse (WorldViewComponent::instance()); + } + else + { + // We are going to create a new particle and making it the + // current one, so that the next click would result in a new + // spring + current_particle = world.get_particle (x, y); + + if (current_particle) + { + // We have clicked on a particle and made it the current + } + else + { + Vector2d new_particle_pos; + + if (WorldViewComponent::instance()->uses_grid()) + new_particle_pos = Vector2d(Math::round_to(x, 10), + Math::round_to(y, 10)); + else + new_particle_pos = Vector2d(x, y); + + Particle* p = world.get_particle_mgr()->add_particle(new_particle_pos, + Vector2d(), + particle_mass); + current_particle = p; + // Increase the spring count so that the particle isn't cleaned up + current_particle->spring_links += 1; + WorldGUIManager::instance()->grab_mouse (WorldViewComponent::instance()); + } + } +} + +void +WorldViewInsertTool::on_primary_button_release (int x, int y) +{ +} + +void +WorldViewInsertTool::on_secondary_button_press (int screen_x, int screen_y) +{ + on_delete_press (screen_x, screen_y); +} + +void +WorldViewInsertTool::on_secondary_button_release (int screen_x, int screen_y) +{ +} + +void +WorldViewInsertTool::on_delete_press (int screen_x, int screen_y) +{ + World& world = *Controller::instance()->get_world (); + + float x = WorldViewComponent::instance()->get_gc()->screen_to_world_x (screen_x); + float y = WorldViewComponent::instance()->get_gc()->screen_to_world_y (screen_y); + + if (current_particle) + { // We are currently creating a new spring, abort that + current_particle->spring_links -= 1; + current_particle = 0; + WorldGUIManager::instance()->ungrab_mouse (WorldViewComponent::instance()); + } + else + { + Spring* spring = world.get_spring (x, y); + Particle* particle = world.get_particle (x, y); + + if (particle) + { + Controller::instance()->push_undo(); + world.remove_particle (particle); + } + else if (spring) + { + Controller::instance()->push_undo(); + world.remove_spring(spring); + } + } +} + +void +WorldViewInsertTool::on_fix_press (int screen_x, int screen_y) +{ + float x = WorldViewComponent::instance()->get_gc()->screen_to_world_x (screen_x); + float y = WorldViewComponent::instance()->get_gc()->screen_to_world_y (screen_y); + + Particle* particle = Controller::instance()->get_world ()->get_particle (x, y); + if (particle) + { + particle->set_fixed (!particle->get_fixed ()); + } +} + +/* EOF */ diff --git a/worldview_insert_tool.hxx b/worldview_insert_tool.hxx new file mode 100644 index 0000000..7a2a0ff --- /dev/null +++ b/worldview_insert_tool.hxx @@ -0,0 +1,59 @@ +// $Id: worldview_insert_tool.hxx,v 1.6 2003/07/24 15:53:21 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_WORLDVIEW_INSERT_TOOL_HXX +#define HEADER_CONSTRUO_WORLDVIEW_INSERT_TOOL_HXX + +#include "worldview_tool.hxx" + +class Particle; + +/** */ +class WorldViewInsertTool : public WorldViewTool +{ +private: + /** The last particle that got inserted or marked by a click, it is + used as the first particle of the newly created spring */ + Particle* current_particle; + + /** mass of the particles that are inserted on a primary press */ + float particle_mass; +public: + WorldViewInsertTool (); + ~WorldViewInsertTool (); + + void draw_background (ZoomGraphicContext* gc); + void draw_foreground (ZoomGraphicContext* gc); + + void on_primary_button_press (int x, int y); + void on_primary_button_release (int x, int y); + + void on_secondary_button_press (int x, int y); + void on_secondary_button_release (int x, int y); + + void on_delete_press (int x, int y); + void on_fix_press (int x, int y); + + void set_particle_mass (float p) { particle_mass = p; } + float get_particle_mass () { return particle_mass; } +}; + +#endif + +/* EOF */ diff --git a/worldview_select_tool.cxx b/worldview_select_tool.cxx new file mode 100644 index 0000000..7c6cf3b --- /dev/null +++ b/worldview_select_tool.cxx @@ -0,0 +1,423 @@ +// $Id: worldview_select_tool.cxx,v 1.22 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include "math.hxx" +#include "world.hxx" +#include "colors.hxx" +#include "controller.hxx" +#include "worldview_component.hxx" +#include "particle.hxx" +#include "world_gui_manager.hxx" +#include "rect.hxx" +#include "root_graphic_context.hxx" +#include "worldview_select_tool.hxx" + +WorldViewSelectTool::WorldViewSelectTool () +{ + mode = IDLE_MODE; + old_scale_factor = 1.0f; +} + +WorldViewSelectTool::~WorldViewSelectTool () +{ +} + +void +WorldViewSelectTool::draw_background (ZoomGraphicContext* gc) +{ + for (Selection::iterator i = selection.begin (); i != selection.end (); ++i) + { + (*i)->draw_velocity_vector (gc); + (*i)->draw_highlight (gc); + } +} + +void +WorldViewSelectTool::draw_foreground (ZoomGraphicContext* gc) +{ + float x = WorldViewComponent::instance()->get_gc()->screen_to_world_x (input_context->get_mouse_x ()); + float y = WorldViewComponent::instance()->get_gc()->screen_to_world_y (input_context->get_mouse_y ()); + + if (mode == GETTING_SELECTION_MODE) + { + gc->draw_rect (Math::min(x, click_pos.x), + Math::min(y, click_pos.y), + Math::max(x, click_pos.x), + Math::max(y, click_pos.y), + Colors::selection_rect); + } + + if (!selection.empty()) + { + Particle& p = **selection.begin(); + Rect selection_box (p.pos.x, p.pos.y, p.pos.x, p.pos.y); + + for (Selection::iterator i = selection.begin (); i != selection.end (); ++i) + { + selection_box.x1 = Math::min(selection_box.x1, (*i)->pos.x); + selection_box.y1 = Math::min(selection_box.y1, (*i)->pos.y); + + selection_box.x2 = Math::max(selection_box.x2, (*i)->pos.x); + selection_box.y2 = Math::max(selection_box.y2, (*i)->pos.y); + } + + float border = 20.0f / gc->get_zoom(); + gc->draw_rect (selection_box.x1 - border, selection_box.y1 - border, + selection_box.x2 + border, selection_box.y2 + border, + Colors::new_spring); + + if (0) // draw selection rect + { + float rsize = 5.0f / gc->get_zoom(); + gc->draw_fill_rect (selection_box.x1 - border - rsize, selection_box.y1 - border - rsize, + selection_box.x1 - border + rsize, selection_box.y1 - border + rsize, + Colors::selection_resizer); + gc->draw_fill_rect (selection_box.x2 + border - rsize, selection_box.y1 - border - rsize, + selection_box.x2 + border + rsize, selection_box.y1 - border + rsize, + Colors::selection_resizer); + gc->draw_fill_rect (selection_box.x1 - border - rsize, selection_box.y2 + border - rsize, + selection_box.x1 - border + rsize, selection_box.y2 + border + rsize, + Colors::selection_resizer); + gc->draw_fill_rect (selection_box.x2 + border - rsize, selection_box.y2 + border - rsize, + selection_box.x2 + border + rsize, selection_box.y2 + border + rsize, + Colors::selection_resizer); + } + + gc->get_parent_gc()->draw_circle(gc->world_to_screen(selection.get_center ()), + 8.0f, Colors::selection_rect); + gc->get_parent_gc()->draw_circle(gc->world_to_screen(selection.get_center ()), + 16.0f, Colors::selection_rect); + } +} + +void +WorldViewSelectTool::activate () +{ +} + +void +WorldViewSelectTool::deactivate () +{ + selection.clear (); +} + +void +WorldViewSelectTool::on_primary_button_press (int screen_x, int screen_y) +{ + switch (mode) + { + case IDLE_MODE: + { + float x = WorldViewComponent::instance()->get_gc()->screen_to_world_x (screen_x); + float y = WorldViewComponent::instance()->get_gc()->screen_to_world_y (screen_y); + + World& world = *Controller::instance()->get_world (); + + WorldGUIManager::instance()->grab_mouse (WorldViewComponent::instance()); + + mode = GETTING_SELECTION_MODE; + + click_pos.x = x; + click_pos.y = y; + + // If the mouse clicks on a particle from the selection, we move the selection + Particle* new_current_particle = world.get_particle (x, y); + for (Selection::iterator i = selection.begin (); i != selection.end (); ++i) + { + if (new_current_particle == *i) + { + Controller::instance()->push_undo(); + mode = MOVING_SELECTION_MODE; + move_diff = Vector2d(); + break; + } + } + + // If mouse clicks into empty space, we make a new selection + if (mode == GETTING_SELECTION_MODE) + { + selection.clear (); + } + } + break; + + case SCALING_SELECTION_MODE: + { + graphic_context->pop_cursor(); + WorldGUIManager::instance()->ungrab_mouse (WorldViewComponent::instance()); + mode = IDLE_MODE; + graphic_context->pop_cursor(); + old_scale_factor = 1.0f; + } + + default: + // Do nothing, so that we don't mess up other modes + break; + } +} + +void +WorldViewSelectTool::on_primary_button_release (int x, int y) +{ + WorldGUIManager::instance()->ungrab_mouse (WorldViewComponent::instance()); + + switch(mode) + { + case GETTING_SELECTION_MODE: + { + selection.select_particles(click_pos, + WorldViewComponent::instance()->get_gc()->screen_to_world (Vector2d(x,y))); + mode = IDLE_MODE; + } + break; + + case MOVING_SELECTION_MODE: + { + mode = IDLE_MODE; + } + break; + } +} + +void +WorldViewSelectTool::on_secondary_button_press (int screen_x, int screen_y) +{ + switch (mode) + { + case IDLE_MODE: + if (!selection.empty()) + { + Controller::instance()->push_undo(); + graphic_context->push_cursor(); + graphic_context->set_cursor(CURSOR_ROTATE); + + mode = ROTATING_SELECTION_MODE; + WorldGUIManager::instance()->grab_mouse (WorldViewComponent::instance()); + + click_pos = WorldViewComponent::instance()->get_gc()->screen_to_world(Vector2d(screen_x, screen_y)); + + rotate_center = selection.get_center(); + } + break; + + case SCALING_SELECTION_MODE: + { + graphic_context->pop_cursor(); + WorldGUIManager::instance()->ungrab_mouse (WorldViewComponent::instance()); + mode = IDLE_MODE; + graphic_context->pop_cursor(); + selection.scale(1.0f/old_scale_factor, scale_center); + old_scale_factor = 1.0f; + } + break; + + default: + break; + } +} + +void +WorldViewSelectTool::on_secondary_button_release (int x, int y) +{ + switch (mode) + { + case ROTATING_SELECTION_MODE: + graphic_context->pop_cursor(); + WorldGUIManager::instance()->ungrab_mouse (WorldViewComponent::instance()); + mode = IDLE_MODE; + break; + + default: + break; + } +} + +void +WorldViewSelectTool::on_delete_press (int x, int y) +{ + Controller::instance()->push_undo(); + + World& world = *Controller::instance()->get_world (); + for (Selection::iterator i = selection.begin (); i != selection.end (); ++i) + { + world.remove_particle(*i); + } + + selection.clear (); +} + +void +WorldViewSelectTool::on_fix_press (int x, int y) +{ + bool mark_all = false; + for (Selection::iterator i = selection.begin (); i != selection.end (); ++i) + { + if (!(*i)->get_fixed()) + { + mark_all = true; + } + } + + if (mark_all) + { + for (Selection::iterator i = selection.begin (); i != selection.end (); ++i) + { + (*i)->set_fixed (true); + } + } + else + { + for (Selection::iterator i = selection.begin (); i != selection.end (); ++i) + { + (*i)->set_fixed (!(*i)->get_fixed()); + } + } +} + +void +WorldViewSelectTool::on_mouse_move (int screen_x, int screen_y, int of_x, int of_y) +{ + World& world = *Controller::instance()->get_world (); + + switch (mode) + { + case MOVING_SELECTION_MODE: + { + Vector2d new_pos(WorldViewComponent::instance()->get_gc()->screen_to_world_x (screen_x), + WorldViewComponent::instance()->get_gc()->screen_to_world_y (screen_y)); + + Vector2d diff = new_pos - click_pos; + + // Undo the last move (FIXME: Potential round errors) + for (Selection::iterator i = selection.begin (); i != selection.end (); ++i) + { + (*i)->pos -= move_diff; + } + + if (WorldViewComponent::instance()->uses_grid()) + { + diff.x = Math::round_to(diff.x, 10); + diff.y = Math::round_to(diff.y, 10); + } + + move_diff = diff; + + for (Selection::iterator i = selection.begin (); i != selection.end (); ++i) + { + (*i)->pos += diff; + + // Recalculate all springs that are attached to the + // selection, but not fully in it. + std::vector& spring_mgr = world.get_spring_mgr(); + for (std::vector::iterator j = spring_mgr.begin (); + j != spring_mgr.end (); ++j) + { + if ((*j)->particles.first == *i + || (*j)->particles.second == *i) + { + (*j)->recalc_length (); + } + } + } + } + break; + + case SCALING_SELECTION_MODE: + { + Vector2d new_pos = WorldViewComponent::instance()->get_gc()->screen_to_world(Vector2d(screen_x, screen_y)); + float scale_factor = fabsf((scale_center - new_pos).norm()/(scale_center - click_pos).norm()); + selection.scale(1.0f/old_scale_factor, scale_center); + selection.scale(scale_factor, scale_center); + old_scale_factor = scale_factor; + } + break; + case ROTATING_SELECTION_MODE: + { + Vector2d new_pos(WorldViewComponent::instance()->get_gc()->screen_to_world_x (screen_x), + WorldViewComponent::instance()->get_gc()->screen_to_world_y (screen_y)); + + float new_angle = atan2(new_pos.y - rotate_center.y, + new_pos.x - rotate_center.x); + float old_angle = atan2(click_pos.y - rotate_center.y, + click_pos.x - rotate_center.x); + float rot_angle = new_angle - old_angle; + + selection.rotate (rot_angle, rotate_center); + + click_pos = new_pos; + } + break; + default: + break; + } +} + +void +WorldViewSelectTool::on_scale_press (int x, int y) +{ + if (!selection.empty()) + { + rotate_center = selection.get_center(); + Controller::instance()->push_undo(); + graphic_context->push_cursor(); + graphic_context->set_cursor(CURSOR_SCALE); + + click_pos = WorldViewComponent::instance()->get_gc()->screen_to_world(Vector2d(x, y)); + WorldGUIManager::instance()->grab_mouse (WorldViewComponent::instance()); + + mode = SCALING_SELECTION_MODE; + + scale_center = selection.get_center(); + } +} + +void +WorldViewSelectTool::on_duplicate_press (int x, int y) +{ + selection.duplicate (); +} + +void +WorldViewSelectTool::on_button_press (int button_id, int x, int y) +{ + Vector2d pos = WorldViewComponent::instance()->get_gc()->screen_to_world(Vector2d(x, y)); + + switch (button_id) + { + case BUTTON_SETVELOCITY: + selection.set_velocity (pos - selection.get_center ()); + break; + case BUTTON_FLIP: + selection.flip(); + break; + break; + default: + break; + } +} + +void +WorldViewSelectTool::on_join_press (int x, int y) +{ + std::cout << "Join pressed" << std::endl; + selection.join_doubles(5.0f); +} + +/* EOF */ diff --git a/worldview_select_tool.hxx b/worldview_select_tool.hxx new file mode 100644 index 0000000..6b9a87c --- /dev/null +++ b/worldview_select_tool.hxx @@ -0,0 +1,84 @@ +// $Id: worldview_select_tool.hxx,v 1.11 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_WORLDVIEW_SELECT_TOOL_HXX +#define HEADER_CONSTRUO_WORLDVIEW_SELECT_TOOL_HXX + +#include "selection.hxx" +#include "worldview_tool.hxx" + +class Particle; + +/** */ +class WorldViewSelectTool : public WorldViewTool +{ +private: + Selection selection; + + typedef enum { GETTING_SELECTION_MODE, + MOVING_SELECTION_MODE, + ROTATING_SELECTION_MODE, + SCALING_SELECTION_MODE, + IDLE_MODE } Mode; + Mode mode; + + /** The start position of a click & drap operation (aka move or + rotate), in world coordinates */ + Vector2d click_pos; + + /** The difference the selection was moved on the last mouse move */ + Vector2d move_diff; + + /** The center of a rotation */ + Vector2d rotate_center; + + /** The center of a scalation */ + Vector2d scale_center; + float old_scale_factor; +public: + WorldViewSelectTool (); + ~WorldViewSelectTool (); + + void activate (); + void deactivate (); + + void draw_background (ZoomGraphicContext* gc); + void draw_foreground (ZoomGraphicContext* gc); + + void on_primary_button_press (int x, int y); + void on_primary_button_release (int x, int y); + + void on_secondary_button_press (int x, int y); + void on_secondary_button_release (int x, int y); + + void on_mouse_move (int x, int y, int of_x, int of_y); + + void on_button_press (int button_id, int x, int y); + + void on_scale_press (int x, int y); + void on_flip_press (int x, int y); + void on_duplicate_press (int x, int y); + void on_delete_press (int x, int y); + void on_fix_press (int x, int y); + void on_join_press (int x, int y); +}; + +#endif + +/* EOF */ diff --git a/worldview_tool.cxx b/worldview_tool.cxx new file mode 100644 index 0000000..7bd484b --- /dev/null +++ b/worldview_tool.cxx @@ -0,0 +1,24 @@ +// $Id: worldview_tool.cxx,v 1.2 2003/01/04 20:12:38 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "worldview_tool.hxx" + + + +/* EOF */ diff --git a/worldview_tool.hxx b/worldview_tool.hxx new file mode 100644 index 0000000..b0e97d1 --- /dev/null +++ b/worldview_tool.hxx @@ -0,0 +1,61 @@ +// $Id: worldview_tool.hxx,v 1.8 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CONSTRUO_WORLDVIEW_TOOL_HXX +#define HEADER_CONSTRUO_WORLDVIEW_TOOL_HXX + +class ZoomGraphicContext; + +/** */ +class WorldViewTool +{ +public: + WorldViewTool () {} + + virtual ~WorldViewTool () {} + + /** Let the Tool to some initialisation */ + virtual void activate () {} + + /** Let the Tool to some deinitialisation */ + virtual void deactivate () {} + + virtual void draw_background (ZoomGraphicContext* gc) =0; + virtual void draw_foreground (ZoomGraphicContext* gc) =0; + + virtual void on_button_press (int button_id, int x, int y) {} + + virtual void on_primary_button_press (int x, int y) {} + virtual void on_primary_button_release (int x, int y) {} + + virtual void on_secondary_button_press (int x, int y) {} + virtual void on_secondary_button_release (int x, int y) {} + + virtual void on_scale_press (int x, int y) {} + virtual void on_duplicate_press (int x, int y) {} + virtual void on_delete_press (int x, int y) {} + virtual void on_fix_press (int x, int y) {} + virtual void on_join_press (int x, int y) {} + + virtual void on_mouse_move (int x, int y, int of_x, int of_y) {} +}; + +#endif + +/* EOF */ diff --git a/worldview_zoom_tool.cxx b/worldview_zoom_tool.cxx new file mode 100644 index 0000000..87b8c2b --- /dev/null +++ b/worldview_zoom_tool.cxx @@ -0,0 +1,92 @@ +// $Id: worldview_zoom_tool.cxx,v 1.6 2003/07/24 10:10:02 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "colors.hxx" +#include "construo.hxx" +#include "input_context.hxx" +#include "math.hxx" +#include "worldview_component.hxx" +#include "worldview_zoom_tool.hxx" + +WorldViewZoomTool::WorldViewZoomTool () +{ + creating_zoom_rectangle = false; +} + +WorldViewZoomTool::~WorldViewZoomTool () +{ +} + +void +WorldViewZoomTool::activate () +{ + creating_zoom_rectangle = false; +} + +void +WorldViewZoomTool::draw_foreground (ZoomGraphicContext* gc) +{ + if (creating_zoom_rectangle) + { + float x = WorldViewComponent::instance()->get_gc()->screen_to_world_x (input_context->get_mouse_x ()); + float y = WorldViewComponent::instance()->get_gc()->screen_to_world_y (input_context->get_mouse_y ()); + + gc->draw_rect (Math::min(x, click_pos.x), + Math::min(y, click_pos.y), + Math::max(x, click_pos.x), + Math::max(y, click_pos.y), + Colors::new_spring); + } +} + +void +WorldViewZoomTool::on_primary_button_press (int screen_x, int screen_y) +{ + creating_zoom_rectangle = true; + click_pos.x = WorldViewComponent::instance()->get_gc()->screen_to_world_x (screen_x); + click_pos.y = WorldViewComponent::instance()->get_gc()->screen_to_world_y (screen_y); +} + +void +WorldViewZoomTool::on_primary_button_release (int screen_x, int screen_y) +{ + creating_zoom_rectangle = false; + + float x = WorldViewComponent::instance()->get_gc()->screen_to_world_x (screen_x); + float y = WorldViewComponent::instance()->get_gc()->screen_to_world_y (screen_y); + + WorldViewComponent::instance()->get_gc()->zoom_to((int)Math::min(x, click_pos.x), + (int)Math::min(y, click_pos.y), + (int)Math::max(x, click_pos.x), + (int)Math::max(y, click_pos.y)); +} + +void +WorldViewZoomTool::on_secondary_button_press (int x, int y) +{ + WorldViewComponent::instance()->get_gc()->zoom_out(x, y); +} + +void +WorldViewZoomTool::on_secondary_button_release (int x, int y) +{ + +} + +/* EOF */ diff --git a/worldview_zoom_tool.hxx b/worldview_zoom_tool.hxx new file mode 100644 index 0000000..2a238a2 --- /dev/null +++ b/worldview_zoom_tool.hxx @@ -0,0 +1,55 @@ +// $Id: worldview_zoom_tool.hxx,v 1.5 2003/07/24 10:10:02 grumbel Exp $ +// +// Construo - A wire-frame construction gamee +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_WORLDVIEW_ZOOM_TOOL_HXX +#define HEADER_WORLDVIEW_ZOOM_TOOL_HXX + +#include "vector2d.hxx" +#include "worldview_tool.hxx" + +/** */ +class WorldViewZoomTool : public WorldViewTool +{ +private: + /** Position of the mouse click, click_pos and the button_release + pos form the rectangle. click_pos is in world coordinates */ + Vector2d click_pos; + + /** true if we are currently creating the zoom rectangle and + click_pos is set, false otherwise */ + bool creating_zoom_rectangle; +public: + WorldViewZoomTool (); + ~WorldViewZoomTool (); + + void activate (); + + void draw_foreground (ZoomGraphicContext* gc); + void draw_background (ZoomGraphicContext* gc) {} + + void on_primary_button_press (int x, int y); + void on_primary_button_release (int x, int y); + + void on_secondary_button_press (int x, int y); + void on_secondary_button_release (int x, int y); +}; + +#endif + +/* EOF */ diff --git a/x11_display.cxx b/x11_display.cxx new file mode 100644 index 0000000..17bd0bb --- /dev/null +++ b/x11_display.cxx @@ -0,0 +1,957 @@ +// $Id: x11_display.cxx,v 1.46 2003/07/28 22:46:48 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include +#include +#include +#include + +#include "cursor_insert.xbm" +#include "cursor_insert_mask.xbm" + +#include "cursor_select.xbm" +#include "cursor_select_mask.xbm" + +#include "cursor_zoom.xbm" +#include "cursor_zoom_mask.xbm" + +#include "cursor_scroll.xbm" +#include "cursor_scroll_mask.xbm" + +#include "cursor_collider.xbm" +#include "cursor_collider_mask.xbm" + +#include "construo_error.hxx" +#include "x11_display.hxx" +#include "settings.hxx" +#include "construo_main.hxx" + +#include "controller.hxx" +#include "screen_manager.hxx" + +extern ConstruoMain* construo_main; +Atom wm_delete_window; + +X11Display::X11Display(int w, int h, bool fullscreen_) + : doublebuffer (settings.doublebuffer), + width(w), height(h), shift_pressed (false), fullscreen (fullscreen_) +{ +#ifndef HAVE_LIBXXF86VM + fullscreen_ = false; + std::cout << "X11Display: libXxf86vm missing, fullscreen support not\n" + << " available, please recompile." << std::endl; +#endif + + std::cout << "Opening X11 display" << std::endl; + display = XOpenDisplay(NULL); + + if (!display) + throw ConstruoError("X11Display: Couldn't conncet to X server"); + + int screen = DefaultScreen(display); + XSetWindowAttributes attributes; + + attributes.background_pixel = BlackPixel(display, screen); + attributes.border_pixel = WhitePixel(display, screen); + + if (fullscreen) + attributes.override_redirect = True; + else + attributes.override_redirect = False; + + attributes.event_mask = + KeyPressMask | + KeyReleaseMask | + ExposureMask | + PointerMotionMask | + ButtonPressMask | + ButtonReleaseMask | + StructureNotifyMask | + ExposureMask; + + colormap = DefaultColormap (display, screen); + attributes.colormap = colormap; + window = XCreateWindow(display, RootWindow(display, screen), + 0,0, // position + width, height, 0, + CopyFromParent, InputOutput, CopyFromParent, + CWOverrideRedirect | CWBackPixel | CWBorderPixel | CWEventMask | CWColormap, + &attributes); + + { // Communicate a bit with the window manager + char *title = construo_main->get_title(); + + XTextProperty text_property; + XStringListToTextProperty(&title, 1, &text_property); + XSizeHints size_hints; + size_hints.x = 0; + size_hints.y = 0; + size_hints.flags = PSize | PMinSize | PMaxSize; + + size_hints.width = width; + size_hints.height = height; + + size_hints.min_width = width; + size_hints.min_height = height; + size_hints.max_width = width; + size_hints.max_height = height; + + XSetWMProperties( + display, + window, + &text_property, + &text_property, + 0, + 0, + &size_hints, + 0, + 0); + + // Set WM_DELETE_WINDOW atom in WM_PROTOCOLS property (to get window_delete requests). + wm_delete_window = XInternAtom (display, "WM_DELETE_WINDOW", False); + XSetWMProtocols (display, window, &wm_delete_window, 1); + } + + if (doublebuffer) + drawable = XCreatePixmap (display, window, width, height, + DefaultDepth(display, screen)); + else + drawable = window; + + XMapRaised(display, window); + + XGCValues gcv; + gcv.foreground = 0xFFFFFF; + gcv.background = 0x000000; + + if (settings.thick_lines) + gcv.line_width = 2; + else + gcv.line_width = 0; + + gc = XCreateGC(display, window, + GCLineWidth | GCForeground | GCBackground, + &gcv); + + if (fullscreen) + enter_fullscreen(); + + { + // Visual* visual = XDefaultVisual(display, DefaultScreen(display)); + depth = DefaultDepth(display, DefaultScreen(display)); + if (depth != 16 && depth != 32) + { + std::cout << "X11Display: Warring color depth '" << depth + << "' not supported, Construo will be slow!" << std::endl; + } + } + + { + // Black&White + XColor cursor_fg = get_xcolor(Color(1.0f, 1.0f, 1.0f)); + XColor cursor_bg = get_xcolor(Color(0, 0, 0)); + + cursor_scroll_pix = XCreateBitmapFromData (display, window, (char*)cursor_scroll_bits, + cursor_scroll_width, cursor_scroll_height); + cursor_scroll_mask = XCreateBitmapFromData (display, window, (char*)cursor_scroll_mask_bits, + cursor_scroll_width, cursor_scroll_height); + cursor_scroll = XCreatePixmapCursor(display, cursor_scroll_pix, cursor_scroll_mask, &cursor_bg, &cursor_fg, + cursor_scroll_x_hot, cursor_scroll_y_hot); + + cursor_zoom_pix = XCreateBitmapFromData (display, window, (char*)cursor_zoom_bits, + cursor_zoom_width, cursor_zoom_height); + cursor_zoom_mask = XCreateBitmapFromData (display, window, (char*)cursor_zoom_mask_bits, + cursor_zoom_width, cursor_zoom_height); + cursor_zoom = XCreatePixmapCursor(display, cursor_zoom_pix, cursor_zoom_mask, &cursor_bg, &cursor_fg, + cursor_zoom_x_hot, cursor_zoom_y_hot); + + cursor_insert_pix = XCreateBitmapFromData (display, window, (char*)cursor_insert_bits, + cursor_insert_width, cursor_insert_height); + cursor_insert_mask = XCreateBitmapFromData (display, window, (char*)cursor_insert_mask_bits, + cursor_insert_width, cursor_insert_height); + cursor_insert = XCreatePixmapCursor(display, cursor_insert_pix, cursor_insert_mask, &cursor_bg, &cursor_fg, + cursor_insert_x_hot, cursor_insert_y_hot); + + cursor_select_pix = XCreateBitmapFromData (display, window, (char*)cursor_select_bits, + cursor_select_width, cursor_select_height); + cursor_select_mask = XCreateBitmapFromData (display, window, (char*)cursor_select_mask_bits, + cursor_select_width, cursor_select_height); + cursor_select = XCreatePixmapCursor(display, cursor_select_pix, cursor_select_mask, &cursor_bg, &cursor_fg, + cursor_select_x_hot, cursor_select_y_hot); + + cursor_collider_pix = XCreateBitmapFromData (display, window, (char*)cursor_collider_bits, + cursor_collider_width, cursor_collider_height); + cursor_collider_mask = XCreateBitmapFromData (display, window, (char*)cursor_collider_mask_bits, + cursor_collider_width, cursor_collider_height); + cursor_collider = XCreatePixmapCursor(display, cursor_collider_pix, cursor_collider_mask, &cursor_bg, &cursor_fg, + cursor_collider_x_hot, cursor_collider_y_hot); + } + + set_cursor(CURSOR_INSERT); +} + +X11Display::~X11Display () +{ + std::cout << "Closing X11 display" << std::endl; + + if (fullscreen) + { + std::cout << "X11Display: Restoring video mode" << std::endl; + leave_fullscreen (); + } + + if (doublebuffer) + XFreePixmap (display, drawable); + + XDestroyWindow (display, window); + XCloseDisplay(display); +} + +void +X11Display::set_cursor_real(CursorType cursor) +{ + switch(cursor) + { + case CURSOR_INSERT: + XDefineCursor (display, window, cursor_insert); + break; + case CURSOR_SCROLL: + XDefineCursor (display, window, cursor_scroll); + break; + case CURSOR_ZOOM: + XDefineCursor (display, window, cursor_zoom); + break; + case CURSOR_COLLIDER: + XDefineCursor (display, window, cursor_collider); + break; + case CURSOR_SELECT: + XDefineCursor (display, window, cursor_select); + break; + default: + std::cout << "X11Display: Unhandled cursor type: " << cursor << std::endl; + break; + } +} + +void +X11Display::draw_lines (std::vector& lines, Color color, int wide) +{ + std::vector segments (lines.size()); + + for (std::vector::size_type i = 0; i < lines.size(); ++i) + { + segments[i].x1 = static_cast(lines[i].x1); + segments[i].y1 = static_cast(lines[i].y1); + segments[i].x2 = static_cast(lines[i].x2); + segments[i].y2 = static_cast(lines[i].y2); + } + + XDrawSegments(display, drawable, gc, &*segments.begin(), segments.size()); +} + +void +X11Display::draw_circles(std::vector& circles, Color color) +{ + std::vector arcs (circles.size()); + for (std::vector::size_type i = 0; i < circles.size(); ++i) + { + arcs[i].x = static_cast(circles[i].x - circles[i].r); + arcs[i].y = static_cast(circles[i].y - circles[i].r); + arcs[i].width = static_cast(2 * circles[i].r); + arcs[i].height = static_cast(2 * circles[i].r); + arcs[i].angle1 = 0; + arcs[i].angle2 = 360 * 64; + } + + XSetForeground(display, gc, get_color_value(color)); + XFillArcs(display, drawable, gc, + &*arcs.begin(), arcs.size()); +} + +void +X11Display::draw_line(float x1, float y1, float x2, float y2, Color color, int wide) +{ + XSetForeground(display, gc, get_color_value(color)); + XDrawLine (display, drawable, gc, (int) x1, (int) y1, (int) x2, (int) y2); +} + +void +X11Display::draw_fill_rect(float x1, float y1, float x2, float y2, Color color) +{ + XSetForeground(display, gc, get_color_value(color)); + XFillRectangle (display, drawable, gc, + int(x1), int(y1), + int(x2 - x1), int(y2 - y1)); +} + +void +X11Display::draw_fill_circle(float x, float y, float r, Color color) +{ + // FIXME: doesn't work + XSetForeground(display, gc, get_color_value(color)); + XFillArc(display, drawable, gc, + int(x-r), int(y-r), + int(r*2), int(r*2), 0, + 360*64); +} + +void +X11Display::draw_circle(float x, float y, float r, Color color) +{ + // FIXME: doesn't work + XSetForeground(display, gc, get_color_value(color)); + XDrawArc(display, drawable, gc, int(x-r), int(y-r), int(r*2.0f), int(r*2.0f), 0, 360*64); +} + +void +X11Display::draw_rect(float x1, float y1, float x2, float y2, Color color) +{ + XSetForeground(display, gc, get_color_value(color)); + XDrawRectangle (display, drawable, gc, + int(x1), int(y1), + int(x2 - x1), int(y2 - y1)); +} + +void +X11Display::draw_string(float x, float y, const std::string& str, Color color) +{ + XSetForeground(display, gc, get_color_value(color)); + XDrawString (display, drawable, gc, int(x), int(y), str.c_str (), str.length ()); +} + +void +X11Display::draw_string_centered(float x, float y, const std::string& str, Color color) +{ + XSetForeground(display, gc, get_color_value(color)); + XDrawString (display, drawable, gc, + int(x) - ((str.length() * 6) / 2), int(y), + str.c_str (), str.length ()); +} + +int +X11Display::get_mouse_x () +{ + return mouse_x; +} + +int +X11Display::get_mouse_y () +{ + return mouse_y; +} + +bool +X11Display::get_key (int key) +{ + return false; +} + +void +X11Display::wait_for_events_blocking () +{ + do { + while (read_event () == false); + } while (XPending (display) > 0); +} + +void +X11Display::wait_for_events () +{ + while (XPending (display) > 0) + { + read_event (); + } +} + +bool +X11Display::read_event () +{ + XEvent event; + + XNextEvent (display, &event); + + switch (event.type) + { + case MotionNotify: + mouse_x = event.xmotion.x; + mouse_y = event.xmotion.y; + break; + + case Expose: + if (event.xexpose.count == 0) + flip (); + break; + + case NoExpose: + //std::cout << "NoExpose" << std::endl; + return false; // FIXME: Hack, no idea how to handle NoExpose + break; + + case ButtonPress: + { + //std::cout << "ButtonID: " << event.xbutton.button << " " << event.xbutton.state << std::endl; + + if (event.xbutton.button == 1) + send_button_press(BUTTON_PRIMARY); + else if (event.xbutton.button == 2) + send_button_press(BUTTON_TERTIARY); + else if (event.xbutton.button == 3) + send_button_press(BUTTON_SECONDARY); + else if (event.xbutton.button == 4) + send_button_press(BUTTON_ZOOM_IN); + else if (event.xbutton.button == 5) + send_button_press(BUTTON_ZOOM_OUT); + } + break; + + case ButtonRelease: + { + //std::cout << "ButtonID: " << event.xbutton.button << " " << event.xbutton.state << std::endl; + if (event.xbutton.button == 1) + send_button_release(BUTTON_PRIMARY); + else if (event.xbutton.button == 2) + send_button_release(BUTTON_TERTIARY); + else if (event.xbutton.button == 3) + send_button_release(BUTTON_SECONDARY); + else if (event.xbutton.button == 4) + send_button_release(BUTTON_ZOOM_IN); + else if (event.xbutton.button == 5) + send_button_release(BUTTON_ZOOM_OUT); + } + break; + + case KeyPress: + { + KeySym sym = XLookupKeysym(&event.xkey,0); + + switch (sym) + { + case XK_F11: + // FIXME: Shortcut + //send_button_press(BUTTON_FULLSCREEN); + toggle_fullscreen(); + break; + + case XK_Left: + send_button_press(BUTTON_SCROLL_LEFT); + break; + + case XK_Right: + send_button_press(BUTTON_SCROLL_RIGHT); + break; + + case XK_Up: + send_button_press(BUTTON_SCROLL_UP); + break; + + case XK_Down: + send_button_press(BUTTON_SCROLL_DOWN); + break; + + case XK_a: + send_button_press(BUTTON_ACTIONCAM); + break; + + case XK_s: + send_button_press(BUTTON_SCALE); + break; + + case XK_j: + send_button_press(BUTTON_JOIN); + break; + + case XK_o: + send_button_press(BUTTON_HIDEDOTS); + break; + + case XK_v: + send_button_press(BUTTON_SETVELOCITY); + break; + + case XK_Shift_L: + case XK_Shift_R: + shift_pressed = true; + break; + case XK_m: + send_button_press(BUTTON_MODE_CHANGE); + break; + case XK_f: + send_button_press(BUTTON_FIX); + break; + case XK_h: + send_button_press(BUTTON_FLIP); + break; + case XK_c: + send_button_press(BUTTON_CLEAR); + break; + case XK_Delete: + send_button_press(BUTTON_DELETE); + break; + case XK_Escape: + send_button_press(BUTTON_ESCAPE); + break; + case XK_u: + send_button_press(BUTTON_UNDO); + break; + case XK_r: + send_button_press(BUTTON_REDO); + break; + case XK_d: + send_button_press(BUTTON_DUPLICATE); + break; + case XK_space: + send_button_press(BUTTON_RUN); + break; + case XK_g: + send_button_press(BUTTON_GRID); + break; + case XK_Tab: + send_button_press(BUTTON_TOGGLESLOWMO); + break; + case 65451: // FIXME: insert symbol here + case XK_equal: + case XK_plus: + send_button_press(BUTTON_ZOOM_IN); + break; + case 65453: // FIXME: insert symbol here + case XK_minus: + send_button_press(BUTTON_ZOOM_OUT); + break; + case XK_0: + send_load_or_save(0); + break; + case XK_1: + send_load_or_save(1); + break; + case XK_2: + send_load_or_save(2); + break; + case XK_3: + send_load_or_save(3); + break; + case XK_4: + send_load_or_save(4); + break; + case XK_5: + send_load_or_save(5); + break; + case XK_6: + send_load_or_save(6); + break; + case XK_7: + send_load_or_save(7); + break; + case XK_8: + send_load_or_save(8); + break; + case XK_9: + send_load_or_save(9); + break; + + default: + std::cout << "X11Display: unhandled keypress: " << sym << " " << XK_grave << std::endl; + break; + } + } + break; + + case KeyRelease: + { + KeySym sym = XLookupKeysym(&event.xkey,0); + + switch (sym) + { + case XK_Shift_L: + case XK_Shift_R: + shift_pressed = false; + break; + default: + //std::cout << "X11Display: unhandled keyrelease: " << sym << " " << XK_f << std::endl; + break; + } + } + break; + + case ConfigureNotify: + //std::cout << "X11Display: " << event.xconfigure.width << "x" << event.xconfigure.height + //<< "+" << event.xconfigure.x << "+" << event.xconfigure.y << std::endl; + break; + + case DestroyNotify: + std::cout << "Window got destroyed" << std::endl; + break; + + case ClientMessage: + std::cout << "X11Display: got client message" << std::endl; + // Window close request + if ((int) event.xclient.data.l[0] == (int) wm_delete_window) { + std::cout << "Window is destroyed" << std::endl; + send_button_press(BUTTON_ESCAPE); + } + break; + + default: + std::cout << "X11Display: Unhandled event: " << event.type << std::endl; + break; + } + return true; +} + +void +X11Display::send_load_or_save(int n) +{ + if (shift_pressed) + send_button_press(BUTTON_QUICKLOAD0 + n); + else + send_button_press(BUTTON_QUICKSAVE0 + n); +} + +void +X11Display::send_button_press (int i) +{ + Event ev; + ev.button.type = BUTTON_EVENT; + ev.button.id = i; + ev.button.pressed = true; + events.push(ev); +} + +void +X11Display::send_button_release (int i) +{ + Event ev; + ev.button.type = BUTTON_EVENT; + ev.button.id = i; + ev.button.pressed = false; + events.push(ev); +} + +void +X11Display::clear () +{ + XSetForeground (display, gc, 0x000000); + XFillRectangle (display, drawable, gc, 0, 0, width, height); +} + +void +X11Display::flip (int x1, int y1, int x2, int y2) +{ + if (doublebuffer) + { + FlipRect flip_rect; + + flip_rect.x1 = x1; + flip_rect.y1 = y1; + flip_rect.x2 = x2; + flip_rect.y2 = y2; + + //flip_rects.push_back(flip_rect); + } +} + +void +X11Display::real_flip () +{ + if (doublebuffer) + { + for (std::vector::iterator i = flip_rects.begin (); + i != flip_rects.end (); + ++i) + { + XCopyArea (display, drawable, window, gc, + i->x1, i->y1, // source + i->x2 - i->x1, i->y2 - i->y1, // width/height + i->x1, i->y1 // destination + ); + } + flip_rects.clear (); + } +} + +void +X11Display::flip () +{ + if (doublebuffer) + { + // FIXME: Use another gc here + XCopyArea (display, drawable, window, gc, + 0, 0, // source + width, height, + 0, 0 // destination + ); + //XFlush(display); + } +} + +void +X11Display::save_mode() +{ +#ifdef HAVE_LIBXXF86VM + memset(&orig_modeline, 0, sizeof(orig_modeline)); + + // Get the current display settings for later restore + XF86VidModeGetModeLine(display, + DefaultScreen(display), + &orig_dotclock, + &orig_modeline); + + XF86VidModeGetViewPort(display, + DefaultScreen(display), + &orig_viewport_x, + &orig_viewport_y); + std::cout << "save_mode: " + << orig_dotclock << " " + << orig_viewport_x << ", " << orig_viewport_y << std::endl; + +#endif /* HAVE_LIBXXF86VM */ +} + +void +X11Display::enter_fullscreen () +{ +#ifndef HAVE_LIBXXF86VM + std::cout << "X11Display: libXxf86vm missing, fullscreen support not\n" + << " available, please recompile." << std::endl; +#else + int event_base; + int error_base; + + if (XF86VidModeQueryExtension(display, &event_base, &error_base) != True) + { + // No VidMode extension available, bailout + std::cout << "X11Display: VidMode extension not available, bailout." << std::endl; + return; + } + + save_mode(); + + XF86VidModeModeInfo **modes; + int nmodes; + int mode_index = -1; + if (XF86VidModeGetAllModeLines(display, + DefaultScreen(display), + &nmodes,&modes)) // FIXME: memleak + { + std::cout << "VideoModes: (searching for " << width << "x" << height << ")" << std::endl; + for (int i = 0; i < nmodes; i++) + { + //std::cout << i << " " << mode.Width,mode.Height); + std::cout << " " << modes[i]->hdisplay + << "x" << modes[i]->vdisplay; + + if (modes[i]->hdisplay == width && modes[i]->vdisplay == height) + { + std::cout << " <-"; + mode_index = i; + } + std::cout << std::endl; + } + + if (mode_index != -1) // Found a good mode + { + if (0) + { // FIXME: doesn't work to change override_redirect after window creation + std::cout << "Changing override_redirect" << std::endl; + // Switch border away and go to 0,0 + XSetWindowAttributes attributes; + attributes.override_redirect = True; + XChangeWindowAttributes(display, window, CWOverrideRedirect, &attributes); + } + + std::cout << "Switching to: " + << modes[mode_index]->hdisplay << "x" << modes[mode_index]->vdisplay + << std::endl; + + if(XF86VidModeSwitchToMode(display, + DefaultScreen(display), + modes[mode_index])) + { + fullscreen = true; + + { // Now that we have switched to the correct mode, we + // need to position the Viewport correct to the window + Window child_window; + int x, y; + // Get the windows absolute position (aka relative to + // the root window) + XTranslateCoordinates(display, window, DefaultRootWindow(display), + 0, 0, + &x, &y, &child_window); + XF86VidModeSetViewPort(display, DefaultScreen(display), x, y); + } + + // Hijack the focus (works only till the next focus change) + XSetInputFocus(display, window, RevertToParent, CurrentTime); + + // Capture the pointer + if (XGrabPointer(display, window, true, 0, GrabModeAsync, GrabModeAsync, + window, None, CurrentTime) != GrabSuccess) + { + std::cout << "X11Display: Couldn't grab the pointer" << std::endl; + } + } + else + { + std::cout << "X11Display: Throuble switiching to fullscreen?!" << std::endl; + } + } + else // No mode found + { + std::cout << "Disabling override redirect" << std::endl; + // Fullscreen not possible, switch Window attributes back to windowed mode + XSetWindowAttributes attributes; + attributes.override_redirect = False; + XChangeWindowAttributes(display, window, CWOverrideRedirect, &attributes); + + // Remap the Window to let the allow override to take effect + XUnmapWindow (display, window); + XMapRaised(display, window); + } + } + else + { + std::cout << "X11Display: Couldn't get available video modes" << std::endl; + } +#endif +} + +void +X11Display::run() +{ + while (!ScreenManager::instance ()->is_finished ()) + { + ScreenManager::instance ()->run_once(); + + if (Controller::instance()->is_running()) + { + system_context->sleep (0); // FIXME: limit CPU usage via brute force + wait_for_events(); + } + else + { + wait_for_events_blocking(); + } + } +} + +void +X11Display::toggle_fullscreen() +{ + //std::cout << "Fullscreen state: " << fullscreen << std::endl; + + if (fullscreen) + leave_fullscreen(); + else + enter_fullscreen(); +} + +void +X11Display::leave_fullscreen() +{ +#ifdef HAVE_LIBXXF86VM + std::cout << "X11Display::restore_mode()" << std::endl; + + XF86VidModeModeInfo modeinfo; + + modeinfo.dotclock = orig_dotclock; + + // Copy XF86VidModeModeLine struct into XF86VidModeModeInfo + modeinfo.hdisplay = orig_modeline.hdisplay; + modeinfo.hsyncstart = orig_modeline.hsyncstart; + modeinfo.hsyncend = orig_modeline.hsyncend; + modeinfo.htotal = orig_modeline.htotal; + modeinfo.hskew = orig_modeline.hskew; + modeinfo.vdisplay = orig_modeline.vdisplay; + modeinfo.vsyncstart = orig_modeline.vsyncstart; + modeinfo.vsyncend = orig_modeline.vsyncend; + modeinfo.vtotal = orig_modeline.vtotal; + modeinfo.flags = orig_modeline.flags; + modeinfo.privsize = orig_modeline.privsize; + modeinfo.c_private = orig_modeline.c_private; + + XF86VidModeSwitchToMode(display, DefaultScreen(display), + &modeinfo); + XF86VidModeSetViewPort(display, DefaultScreen(display), + orig_viewport_x, orig_viewport_y); + + XUngrabPointer(display, CurrentTime); + + fullscreen = false; +#endif +} + +void +X11Display::set_clip_rect (int x1, int y1, int x2, int y2) +{ + XRectangle rect[1]; + + rect[0].x = x1; + rect[0].y = y1; + rect[0].width = x2 - x1 + 1; + rect[0].height = y2 - y1 + 1; + + XSetClipRectangles (display, gc, + 0, 0, // clip origin + rect, 1, + Unsorted); +} + +unsigned int +X11Display::get_color_value(const Color& color) +{ + switch (depth) + { + case 32: + // FIXME Cast evil?! + return static_cast(color.get_as_rrggbb()); + case 16: + return int(31 * color.b) | (int((63 * color.g)) << 5) | (int((31 * color.r)) << 11); + default: + { // This is extremly slow! + XColor x_color; + + x_color.red = int(color.r * 65535); + x_color.green = int(color.g * 65535); + x_color.blue = int(color.b * 65535); + + XAllocColor(display, colormap, &x_color); + + return x_color.pixel; + } + break; + } +} + +XColor +X11Display::get_xcolor(const Color& color) +{ + XColor x_color; + + x_color.red = int(color.r * 65535); + x_color.green = int(color.g * 65535); + x_color.blue = int(color.b * 65535); + + XAllocColor(display, colormap, &x_color); + + return x_color; + +} + +/* EOF */ diff --git a/x11_display.hxx b/x11_display.hxx new file mode 100644 index 0000000..4270f4b --- /dev/null +++ b/x11_display.hxx @@ -0,0 +1,168 @@ +// $Id: x11_display.hxx,v 1.25 2003/07/28 21:03:22 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_X11_DISPLAY_HXX +#define HEADER_X11_DISPLAY_HXX + +#include +#include + +#ifdef HAVE_LIBXXF86VM +# include +#endif + +#include "cursors.hxx" +#include "math.hxx" +#include "root_graphic_context.hxx" +#include "input_context.hxx" + +#define X11_FULLSCREEN_MODE true +#define X11_WINDOW_MODE false + +struct FlipRect +{ + int x1; + int y1; + int x2; + int y2; +}; + +/** X11Display driver */ +class X11Display : public RootGraphicContext, + public InputContext +{ +private: + Cursor cursor_scroll; + Pixmap cursor_scroll_pix; + Pixmap cursor_scroll_mask; + + Cursor cursor_zoom; + Pixmap cursor_zoom_pix; + Pixmap cursor_zoom_mask; + + Cursor cursor_insert; + Pixmap cursor_insert_pix; + Pixmap cursor_insert_mask; + + Cursor cursor_select; + Pixmap cursor_select_pix; + Pixmap cursor_select_mask; + + Cursor cursor_collider; + Pixmap cursor_collider_pix; + Pixmap cursor_collider_mask; + + bool doublebuffer; +#ifdef HAVE_LIBXXF86VM + XF86VidModeModeLine orig_modeline; +#endif + int orig_viewport_x; + int orig_viewport_y; + int orig_dotclock; + + int width; + int height; + Display* display; + Window window; + Colormap colormap; + Drawable drawable; + GC gc; + + bool shift_pressed; + int mouse_x; + int mouse_y; + + /** Color Depth of the Display */ + int depth; + + /** true if display is in fullscreen mode, false for window mode */ + bool fullscreen; + + std::vector flip_rects; + std::vector last_flip_rects; + + /** Save the current visual mode for later restoration after leaving + fullscreen */ + void save_mode(); +public: + X11Display (int w, int h, bool fullscreen_); + virtual ~X11Display (); + + // Graphic Context stuff + void draw_lines (std::vector& lines, Color color, int wide = 0); + void draw_line(float x1, float y1, float x2, float y2, Color color, int wide = 0); + void draw_rect(float x1, float y1, float x2, float y2, Color color); + void draw_fill_rect(float x1, float y1, float x2, float y2, Color color); + void draw_circle(float x, float y, float r, Color color); + void draw_circles(std::vector& circles, Color color); + + void draw_fill_circle(float x, float y, float r, Color color); + void draw_string(float x, float y, const std::string& str, Color color); + void draw_string_centered(float x, float y, const std::string& str, Color color); + + int get_width () { return width; } + int get_height () { return height; } + + void toggle_fullscreen(); + + void clear (); + + /** Flip the double buffered display */ + void flip (); + + void enter_fullscreen(); + void leave_fullscreen(); + + /** perform the real flip, only flip marked reagions */ + void real_flip (); + + void flip (int x1, int y1, int x2, int y2); + + // Input Context stuff + int get_mouse_x (); + int get_mouse_y (); + + bool get_key (int key); + + /** Waits for events to come in, blocks until new events are available */ + void wait_for_events_blocking (); + + void wait_for_events (); + + void run(); + + void set_clip_rect (int x1_, int y1_, int x2_, int y2_); + + unsigned int get_color_value(const Color& color); + XColor get_xcolor(const Color& color); + + void set_cursor_real(CursorType cursor); +private: + bool read_event (); + void send_button_press (int i); + void send_button_release (int i); + void send_load_or_save(int n); + + X11Display (const X11Display&); + X11Display& operator= (const X11Display&); +}; + +#endif + +/* EOF */ diff --git a/xml2sexpr.sh b/xml2sexpr.sh new file mode 100755 index 0000000..2af9249 --- /dev/null +++ b/xml2sexpr.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# Little script to convert Construo 0.0.x XML files to Construo +# 0.1.0's sexpr format + +sed "s///" | \ +sed "s//(spring /" | \ +sed "s/<\/spring>/)/" | \ +sed "s//(first /" | \ +sed "s/<\/first>/)/" | \ +sed "s//(second /" | \ +sed "s/<\/second>/)/" | \ +sed "s//(construo-scene/" | \ +sed "s/<\/construo-scene>/)/" | \ +sed "s///g" | \ +sed "s/<\/cl-vector>//g" | \ +sed "s//(springs /" | \ +sed "s/<\/spring-list>/)/" | \ +sed "s/<[xyz]>/ /g" | \ +sed "s/<\/[xyz]>/ /g" | \ +sed "s//(pos /g" | \ +sed "s/<\/position>/) /g" | \ +sed "s//(velocity /g" | \ +sed "s/<\/velocity>/) /g" | \ +sed "s//(particles /" | \ +sed "s/<\/particle-list>/)/" | \ +sed "s/<\/particle>/)/" | \ +sed "s//(particle (id \1) /" + +# EOF # \ No newline at end of file diff --git a/zoom_graphic_context.cxx b/zoom_graphic_context.cxx new file mode 100644 index 0000000..b1ae978 --- /dev/null +++ b/zoom_graphic_context.cxx @@ -0,0 +1,350 @@ +// $Id: zoom_graphic_context.cxx,v 1.15 2003/07/26 00:39:31 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include +#include +#include "construo.hxx" +#include "math.hxx" +#include "root_graphic_context.hxx" +#include "zoom_graphic_context.hxx" + +ZoomGraphicContext::ZoomGraphicContext () +{ + x_offset = 0.0f; + y_offset = 0.0f; + zoom = 1.0f; + + x1 = y1 = 0; + // FIXME: should use parent gc + x2 = graphic_context->get_width(); + y2 = graphic_context->get_height(); +} + +ZoomGraphicContext::ZoomGraphicContext (int x1_, int y1_, int x2_, int y2_) + : x1 (x1_), + y1 (y1_), + x2 (x2_), + y2 (y2_) +{ + x_offset = 0; + y_offset = 0; + zoom = 1.0f; + parent_gc = NULL; +} + +void +ZoomGraphicContext::set_clip_rect (int x1_, int y1_, int x2_, int y2_) +{ + parent_gc->set_clip_rect (x1_, y1_, x2_, y2_); +} + +void +ZoomGraphicContext::lock () +{ + parent_gc->set_clip_rect (x1, y1, x2, y2); +} + +void +ZoomGraphicContext::unlock () +{ + parent_gc->set_clip_rect (0, 0, parent_gc->get_width ()-1, parent_gc->get_height()-1); +} + +Vector2d +ZoomGraphicContext::screen_to_world (const Vector2d& pos) +{ + return Vector2d ((pos.x / zoom) - x_offset, + (pos.y / zoom) - y_offset); +} + +Vector2d +ZoomGraphicContext::world_to_screen (const Vector2d& pos) +{ + return Vector2d ((pos.x + x_offset) * zoom + x1, + (pos.y + y_offset) * zoom + y1); +} + +float +ZoomGraphicContext::screen_to_world_x (float x) +{ + return (x / zoom) - x_offset; +} + +float +ZoomGraphicContext::screen_to_world_y (float y) +{ + return (y / zoom) - y_offset; +} + +float +ZoomGraphicContext::world_to_screen_x (float x) +{ + return (x + x_offset) * zoom + x1; +} + +float +ZoomGraphicContext::world_to_screen_y (float y) +{ + return (y + y_offset) * zoom + y1; +} + +void +ZoomGraphicContext::draw_lines (std::vector& lines, Color color, int wide) +{ + for (std::vector::iterator i = lines.begin(); i != lines.end(); ++i) + { + i->x1 = world_to_screen_x(i->x1); + i->y1 = world_to_screen_y(i->y1); + i->x2 = world_to_screen_x(i->x2); + i->y2 = world_to_screen_y(i->y2); + } + parent_gc->draw_lines (lines, color, wide); +} + +void +ZoomGraphicContext::draw_line(float x1, float y1, float x2, float y2, Color color, int wide) +{ + parent_gc->draw_line(world_to_screen_x(x1), + world_to_screen_y(y1), + world_to_screen_x(x2), + world_to_screen_y(y2), + color, wide); +} + +void +ZoomGraphicContext::draw_rect(float x1, float y1, float x2, float y2, Color color) +{ + parent_gc->draw_rect(world_to_screen_x(x1), + world_to_screen_y(y1), + world_to_screen_x(x2), + world_to_screen_y(y2), + color); +} + +void +ZoomGraphicContext::draw_circles(std::vector& circles, Color color) +{ + for (std::vector::iterator i = circles.begin(); i != circles.end(); ++i) + { + i->x = world_to_screen_x(i->x); + i->y = world_to_screen_x(i->y); + i->r = Math::max(2.0f, i->r * zoom); + } + + parent_gc->draw_circles(circles, color); +} + +void +ZoomGraphicContext::draw_circle(float x, float y, float r, Color color) +{ + parent_gc->draw_circle(world_to_screen_x(x), + world_to_screen_y(y), + Math::max(2.0f, r * zoom), + color); +} + +void +ZoomGraphicContext::draw_fill_circle(float x, float y, float r, Color color) +{ + parent_gc->draw_fill_circle(world_to_screen_x(x), + world_to_screen_y(y), + Math::max(2.0f, r * zoom), + color); +} + +void +ZoomGraphicContext::draw_fill_rect(float x1, float y1, float x2, float y2, Color color) +{ + parent_gc->draw_fill_rect(world_to_screen_x(x1), + world_to_screen_y(y1), + world_to_screen_x(x2), + world_to_screen_y(y2), + color); +} + +void +ZoomGraphicContext::draw_string_centered(float x, float y, const std::string& str, Color color) +{ + parent_gc->draw_string_centered(world_to_screen_x(x), + world_to_screen_y(y), + str, + color); +} + +void +ZoomGraphicContext::draw_string(float x, float y, const std::string& str, Color color) +{ + parent_gc->draw_string(world_to_screen_x(x), + world_to_screen_y(y), + str, + color); +} + +void +ZoomGraphicContext::set_parent_gc (GraphicContext* gc) +{ + parent_gc = gc; +} + +bool +ZoomGraphicContext::zoom_in (int screen_x, int screen_y) +{ + float x = screen_to_world_x (screen_x); + float y = screen_to_world_y (screen_y); + + //std::cout << "Zoom: " << screen_x << " " << screen_y + //<< " " << x << " " << y << std::endl; + + if (1) + { + float old_zoom = zoom; + set_zoom(zoom * 1.2f); + x_offset = screen_x/zoom - screen_x/old_zoom + x_offset; + y_offset = screen_y/zoom - screen_y/old_zoom + y_offset; + + } + else + { + x_offset = (x + x_offset)/1.2f - x; + y_offset = (y + y_offset)/1.2f - y; + zoom *= 1.2f; + } + + return true; +} + +bool +ZoomGraphicContext::zoom_out (int screen_x, int screen_y) +{ + float x = screen_to_world_x (screen_x); + float y = screen_to_world_y (screen_y); + + if (1) + { + float old_zoom = zoom; + set_zoom(zoom / 1.2f); + x_offset = screen_x/zoom - screen_x/old_zoom + x_offset; + y_offset = screen_y/zoom - screen_y/old_zoom + y_offset; + } + else + { + x_offset = (x + x_offset)*1.2f - x; + y_offset = (y + y_offset)*1.2f - y; + + zoom *= (1.0f/1.2f); + } + + return true; +} + +void +ZoomGraphicContext::move_to (float x, float y) +{ + x_offset = (get_width() / (2*zoom)) + x; + y_offset = (get_height() / (2*zoom)) + y; +} + +void +ZoomGraphicContext::translate_offset (int x, int y) +{ + x_offset -= x; + y_offset -= y; +} + +void +ZoomGraphicContext::set_offset (float x, float y) +{ + x_offset = x; + y_offset = y; +} + +void +ZoomGraphicContext::flip (int x1, int y1, int x2, int y2) +{ + assert (false); + /* parent_gc->flip (world_to_screen_x (x1), + world_to_screen_y (y1), + world_to_screen_x (x2), + world_to_screen_y (y2));*/ +} + +bool +ZoomGraphicContext::set_zoom (const float& z) +{ + const float max_zoom = 20.0f; + const float min_zoom = 0.05f; + + if (z > max_zoom) + { + zoom = max_zoom; + return false; + } + else if (z < min_zoom) + { + zoom = min_zoom; + return false; + } + else + { + zoom = z; + return true; + } +} + +void +ZoomGraphicContext::zoom_to (int x1, int y1, int x2, int y2) +{ + //std::cout << "Zooming to: " << x1 << " " << y1 << " " << x2 << " " << y2 + //<< std::endl; + + float center_x = (x1 + x2) / 2.0f; + float center_y = (y1 + y2) / 2.0f; + + float width = x2 - x1; + float height = y2 - y1; + float screen_relation = float(get_height())/float(get_width ()); + float rect_relation = height/width; + + //std::cout << "Screen: " << screen_relation << " Zoom: " << rect_relation << std::endl; + if (rect_relation < screen_relation) // take width, ignore height + { + set_zoom(get_width()/width); + } + else // take height, ignore width + { + set_zoom(get_height()/height); + } + + x_offset = (get_width() / (2*zoom)) - center_x; + y_offset = (get_height() / (2*zoom)) - center_y; +} + +int +ZoomGraphicContext::get_width () +{ + return x2 - x1; +} + +int +ZoomGraphicContext::get_height () +{ + return y2 - y1; +} + +/* EOF */ diff --git a/zoom_graphic_context.hxx b/zoom_graphic_context.hxx new file mode 100644 index 0000000..b92e679 --- /dev/null +++ b/zoom_graphic_context.hxx @@ -0,0 +1,164 @@ +// $Id: zoom_graphic_context.hxx,v 1.13 2003/07/24 21:33:11 grumbel Exp $ +// +// Construo - A wire-frame construction game +// Copyright (C) 2002 Ingo Ruhnke +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_ZOOM_GRAPHIC_CONTEXT_HXX +#define HEADER_ZOOM_GRAPHIC_CONTEXT_HXX + +#include "vector2d.hxx" +#include "graphic_context.hxx" + +/** A GraphicContext, that wraps another GraphicContext and adds + coordinate translation like zoom and scrolling */ +class ZoomGraphicContext : public GraphicContext +{ +private: + int x1; + int y1; + int x2; + int y2; + + GraphicContext* parent_gc; + + float x_offset; + float y_offset; + float zoom; + + int translate_x (int); + int translate_y (int); +public: + ZoomGraphicContext (); + ZoomGraphicContext (int x1_, int y1_, int x2_, int y2_); + + void set_clip_rect (int x1_, int y1_, int x2_, int y2_); + + /** Sets the clipping rectangles needed for the GC */ + void lock (); + + /** Resets the clipping to the old state */ + void unlock (); + + void draw_lines (std::vector& lines, Color color, int wide = 0); + void draw_line(float x1, float y1, float x2, float y2, Color color, int wide = 0); + void draw_rect(float x1, float y1, float x2, float y2, Color color); + void draw_circle(float x, float y, float r, Color color); + void draw_circles(std::vector& circles, Color color); + void draw_fill_circle(float x, float y, float r, Color color); + void draw_fill_rect(float x1, float y1, float x2, float y2, Color color); + void draw_string(float x, float y, const std::string& str, Color color = Color (0xFFFFFFFF)); + void draw_string_centered(float x, float y, const std::string& str, Color color = Color (0xFFFFFFFF)); + + int get_width (); + int get_height (); + + void clear () { parent_gc->clear (); } + + /** FIXME: flip should be handled outsite of GraphicContext */ + void flip () { parent_gc->flip (); } + + void set_parent_gc (GraphicContext* gc); + + /** + * Zoom Out the GraphicContext by one 'unit', using the x and y + * position as center. + * + * @param x x in screen coordinates + * @param y y in screen coordinates + * + * @return true if zoom was successfull, false if zoom boundaries + * have been reached + */ + bool zoom_in (int x, int y); + + /** + * Zoom Into the GraphicContext by one 'unit', using the x and y + * position as center. + * + * @param x x in screen coordinates + * @param y y in screen coordinates + * + * @return true if zoom was successfull, false if zoom boundaries + * have been reached + */ + bool zoom_out (int x, int y); + + /** + * Zoom into the given area, all coordinates in world units + * + * @param x1 left border in world coordinates + * @param y1 top border in world coordinates + * @param x2 right border in world coordinates + * @param y2 bottom border in world coordinates + */ + void zoom_to (int x1, int y1, int x2, int y2); + + /** Move to the given x and y world coordinates to the center of the + screen */ + void move_to (float x, float y); + + /** Allows a client application to make use of the partent GC in + case it wants to draw elements which should not get scaled */ + GraphicContext* get_parent_gc () { return parent_gc; } + + /** Move the current position relativly x/y width */ + void translate_offset (int x, int y); + + /** FIXME: What exactly is an offset?! */ + void set_offset (float x, float y); + + /** FIXME: What exactly is an offset?! */ + float get_x_offset () { return x_offset; } + + /** FIXME: What exactly is an offset?! */ + float get_y_offset () { return y_offset; } + + /** @return current zoom factor in use */ + float get_zoom () const { return zoom; } + + /** Set the zoom factor, if zoom is to large/small false will + returned and zoom will be set to lowest/highest possible + value */ + bool set_zoom (const float& z); + + /** Convert a coordinate from screen units to world units */ + float screen_to_world_x (float x); + + /** Convert a coordinate from screen units to world units */ + float screen_to_world_y (float y); + + /** Convert a coordinate from world units to screen units */ + float world_to_screen_x (float x); + + /** Convert a coordinate from world units to screen units */ + float world_to_screen_y (float y); + + /** Convert a coordinate from screen units to world units */ + Vector2d screen_to_world (const Vector2d&); + + /** Convert a coordinate from world units to screen units */ + Vector2d world_to_screen (const Vector2d&); + + void flip (int x1, int y1, int x2, int y2); + + void push_quick_draw() { parent_gc->push_quick_draw(); } + void pop_quick_draw() { parent_gc->pop_quick_draw(); } +}; + +#endif + +/* EOF */ -- 2.11.4.GIT From 6c1b0643f238272c568e7dd9c4d4a4950b664e6c Mon Sep 17 00:00:00 2001 From: Miriam Ruiz Date: Sun, 7 Dec 2008 02:54:08 +0100 Subject: [PATCH 2/4] Fixed autotools stuff --- Makefile.am | 6 +++--- configure.ac | 32 ++++++++++++++++++++++++++------ construo.hxx | 2 +- examples/Makefile.am | 2 +- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/Makefile.am b/Makefile.am index b26477d..d89f7eb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -17,7 +17,7 @@ SUBDIRS = examples -bindir=$(prefix)/games +bindir=$(prefix)/bin bin_PROGRAMS = @ConstruoTargets@ @@ -159,7 +159,7 @@ construo_freeglut_SOURCES = construo_main.cxx construo_main.hxx glut_display.hxx construo_freeglut_LDADD = libconstruo.a @freeglut_LIBS@ construo_freeglut_CXXFLAGS = -DUSE_GLUT_DISPLAY -DHAVE_FREEGLUT -# pkgdatadir = $(datadir)/games/@PACKAGE@ +# pkgdatadir = $(datadir)/@PACKAGE@ EXTRA_DIST = TODO INSTALL.configure xml2sexpr.sh compatlib/sstream -# EOF # \ No newline at end of file +# EOF # diff --git a/configure.ac b/configure.ac index 2eed56a..7549886 100644 --- a/configure.ac +++ b/configure.ac @@ -63,15 +63,29 @@ if test x$enable_fcheck = xyes; then LIBS="$LIBS `fc-config --libs`" fi +AC_MSG_CHECKING([whether we want to compile the X11 client]) +AC_ARG_ENABLE([x11], + AC_HELP_STRING([--enable-x11], + [enable x11 support (default: yes)]),, + [enable_x11=yes]) +AC_MSG_RESULT($enable_x11) + +AC_MSG_CHECKING([whether we want to compile the glut client]) +AC_ARG_ENABLE([glut], + AC_HELP_STRING([--enable-glut], + [enable glut support (default: yes)]),, + [enable_glut=yes]) +AC_MSG_RESULT($enable_glut) + AC_CHECK_HEADER([sstream], [], [AC_MSG_NOTICE([using replacement sstream from compatlib/]) CXXFLAGS="$CXXFLAGS -Icompatlib/"]) dnl Checking for the install prefix and then use it to define PINGUS_DATADIR -dnl PINGUS_EXPAND_DIR(pingus_datadir, "$datadir/games/$PACKAGE") +dnl PINGUS_EXPAND_DIR(pingus_datadir, "$datadir/$PACKAGE") dnl AC_DEFINE_UNQUOTED(PINGUS_DATADIR, "$pingus_datadir", [Location of Pingus data files]) -dnl AC_DEFINE(CONSTRUO_DATADIR, $datadir/games/$PACKAGE, [Location of Construo datafiles]) +dnl AC_DEFINE(CONSTRUO_DATADIR, $datadir/$PACKAGE, [Location of Construo datafiles]) AC_DEFINE_DIR(DATADIR, datadir, [Location of datafiles]) AC_CHECK_LIB(z, gzopen) @@ -90,7 +104,9 @@ if test -n "$X_DISPLAY_MISSING"; then echo "### not installed?" echo "" else - ConstruoTargets="$ConstruoTargets construo.x11" + if test x$enable_x11 = xyes; then + ConstruoTargets="$ConstruoTargets construo.x11" + fi x11_LIBS="$x11_LIBS $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11" x11_CXXFLAGS="$CXXFLAGS $X_CFLAGS" fi @@ -113,7 +129,9 @@ dnl -- Check for Glut -- dnl -------------------- AC_CHECK_LIB(glut, glutMainLoop, [ - ConstruoTargets="$ConstruoTargets construo.glut" + if test x$enable_glut = xyes; then + ConstruoTargets="$ConstruoTargets construo.glut" + fi AC_SUBST(glut_LIBS,"-lglut") ], []) @@ -123,7 +141,9 @@ dnl -- Check for FreeGlut -- dnl ------------------------ AC_CHECK_LIB(freeglut-1.3, glutMainLoop, [ - ConstruoTargets="$ConstruoTargets construo.freeglut" + if test x$enable_glut = xyes; then + ConstruoTargets="$ConstruoTargets construo.freeglut" + fi AC_SUBST(freeglut_LIBS,"-lfreeglut-1.3") dnl echo "Freeglut: " $freeglut_LIBS ], @@ -158,4 +178,4 @@ echo "" echo " Ingo Ruhnke " echo "" -# EOF # \ No newline at end of file +# EOF # diff --git a/construo.hxx b/construo.hxx index ae7f5cc..90df5d6 100644 --- a/construo.hxx +++ b/construo.hxx @@ -22,7 +22,7 @@ #include -#define CONSTRUO_DATADIR DATADIR"/games/"PACKAGE +#define CONSTRUO_DATADIR DATADIR"/"PACKAGE class SystemContext; class InputContext; diff --git a/examples/Makefile.am b/examples/Makefile.am index 9572680..c3963ff 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -15,7 +15,7 @@ ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -pkgdatadir = $(datadir)/games/@PACKAGE@/examples +pkgdatadir = $(datadir)/@PACKAGE@/examples nobase_dist_pkgdata_DATA = *.construo choh/*.construo choh2/*.construo -- 2.11.4.GIT From 0030be2a1b7ff98c375dea0b955ae32656e21feb Mon Sep 17 00:00:00 2001 From: Miriam Ruiz Date: Sun, 7 Dec 2008 03:09:48 +0100 Subject: [PATCH 3/4] Fixed includes and bugs so that it compiles --- command_line.cxx | 2 ++ config.hxx | 1 + lisp_reader.cxx | 1 + unix_system.cxx | 1 + vector.cxx | 9 --------- world.cxx | 1 + 6 files changed, 6 insertions(+), 9 deletions(-) diff --git a/command_line.cxx b/command_line.cxx index 3224e59..43ce19b 100644 --- a/command_line.cxx +++ b/command_line.cxx @@ -19,7 +19,9 @@ #include #include +#include #include +#include #include "settings.hxx" #include "command_line.hxx" diff --git a/config.hxx b/config.hxx index d8c9b7e..3e0e151 100644 --- a/config.hxx +++ b/config.hxx @@ -21,6 +21,7 @@ #define CONFIG_HH #include +#include class Config { diff --git a/lisp_reader.cxx b/lisp_reader.cxx index 78ff609..421619a 100644 --- a/lisp_reader.cxx +++ b/lisp_reader.cxx @@ -19,6 +19,7 @@ #include "construo_error.hxx" #include "lisp_reader.hxx" +#include LispReader::LispReader (lisp_object_t* l) : lst (l) diff --git a/unix_system.cxx b/unix_system.cxx index 9a189ab..9bc4146 100644 --- a/unix_system.cxx +++ b/unix_system.cxx @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include +#include #include #include #include diff --git a/vector.cxx b/vector.cxx index eee35f5..9a7967c 100644 --- a/vector.cxx +++ b/vector.cxx @@ -63,11 +63,7 @@ float CL_Vector::dot(const CL_Vector& v) const float CL_Vector::angle(const CL_Vector& v) const { - #ifdef WIN32 return (float)acos(dot(v)/(norm()*v.norm())); - #else - return std::acos(dot(v)/(norm()*v.norm())); - #endif } CL_Vector CL_Vector::cross(const CL_Vector& v) const @@ -83,13 +79,8 @@ CL_Vector CL_Vector::rotate(float angle, const CL_Vector& a) const { CL_Vector tmp = CL_Vector(); - #ifdef WIN32 float s = (float)sin(angle); float c = (float)cos(angle); - #else - float s = std::sin(angle); - float c = std::cos(angle); - #endif tmp.x = x*(a.x*a.x*(1-c)+c) + y*(a.x*a.y*(1-c)-a.z*s) + z*(a.x*a.z*(1-c)+a.y*s); tmp.y = x*(a.y*a.x*(1-c)+a.z*s) + y*(a.y*a.y*(1-c)+c) + z*(a.y*a.z*(1-c)-a.x*s); diff --git a/world.cxx b/world.cxx index 1be5204..5b4e298 100644 --- a/world.cxx +++ b/world.cxx @@ -34,6 +34,7 @@ #include "rect.hxx" #include "rect_collider.hxx" #include "string_utils.hxx" +#include World* World::current_world = 0; -- 2.11.4.GIT From 301a9e900d64009583b387bb0a6eaeb11efa65a6 Mon Sep 17 00:00:00 2001 From: Miriam Ruiz Date: Sun, 7 Dec 2008 03:10:23 +0100 Subject: [PATCH 4/4] Rebuild autotool system libtoolize --force autoreconf --force --- Makefile.in | 756 +++--- aclocal.m4 | 1158 ++++---- configure | 7394 ++++++++++++++++++++++++++++++-------------------- examples/Makefile.in | 201 +- 4 files changed, 5472 insertions(+), 4037 deletions(-) diff --git a/Makefile.in b/Makefile.in index 578f781..b5bb598 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.7.3 from Makefile.am. +# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -# Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -14,16 +14,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ + VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = . - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c @@ -35,9 +31,114 @@ POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : +EXTRA_PROGRAMS = construo.x11$(EXEEXT) construo.glut$(EXEEXT) \ + construo.freeglut$(EXEEXT) +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ + TODO config.guess config.sub depcomp install-sh ltmain.sh \ + missing mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +libconstruo_a_AR = $(AR) $(ARFLAGS) +libconstruo_a_LIBADD = +am_libconstruo_a_OBJECTS = bounding_box.$(OBJEXT) colors.$(OBJEXT) \ + command_line.$(OBJEXT) config.$(OBJEXT) construo.$(OBJEXT) \ + controller.$(OBJEXT) globals.$(OBJEXT) gui_buttons.$(OBJEXT) \ + gui_child_manager.$(OBJEXT) gui_component.$(OBJEXT) \ + gui_directory.$(OBJEXT) gui_directory_button.$(OBJEXT) \ + gui_file_button.$(OBJEXT) gui_file_manager.$(OBJEXT) \ + gui_label.$(OBJEXT) gui_manager.$(OBJEXT) \ + gui_new_file_button.$(OBJEXT) gui_window.$(OBJEXT) \ + input_context.$(OBJEXT) keep_alive_mgr.$(OBJEXT) \ + lisp_reader.$(OBJEXT) lisp_writer.$(OBJEXT) \ + lispreader.$(OBJEXT) load_gui_manager.$(OBJEXT) \ + particle.$(OBJEXT) particle_factory.$(OBJEXT) \ + path_manager.$(OBJEXT) rect_collider.$(OBJEXT) \ + root_graphic_context.$(OBJEXT) save_gui_manager.$(OBJEXT) \ + screen_manager.$(OBJEXT) selection.$(OBJEXT) \ + settings.$(OBJEXT) spring.$(OBJEXT) string_utils.$(OBJEXT) \ + unix_system.$(OBJEXT) vector.$(OBJEXT) world.$(OBJEXT) \ + world_button.$(OBJEXT) world_gui_manager.$(OBJEXT) \ + worldview_collider_tool.$(OBJEXT) \ + worldview_component.$(OBJEXT) worldview_insert_tool.$(OBJEXT) \ + worldview_select_tool.$(OBJEXT) worldview_tool.$(OBJEXT) \ + worldview_zoom_tool.$(OBJEXT) zoom_graphic_context.$(OBJEXT) +libconstruo_a_OBJECTS = $(am_libconstruo_a_OBJECTS) +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_construo_freeglut_OBJECTS = \ + construo_freeglut-construo_main.$(OBJEXT) \ + construo_freeglut-glut_display.$(OBJEXT) +construo_freeglut_OBJECTS = $(am_construo_freeglut_OBJECTS) +construo_freeglut_DEPENDENCIES = libconstruo.a +construo_freeglut_LINK = $(CXXLD) $(construo_freeglut_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am_construo_glut_OBJECTS = construo_glut-construo_main.$(OBJEXT) \ + construo_glut-glut_display.$(OBJEXT) +construo_glut_OBJECTS = $(am_construo_glut_OBJECTS) +construo_glut_DEPENDENCIES = libconstruo.a +construo_glut_LINK = $(CXXLD) $(construo_glut_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am_construo_x11_OBJECTS = construo_x11-construo_main.$(OBJEXT) \ + construo_x11-x11_display.$(OBJEXT) +construo_x11_OBJECTS = $(am_construo_x11_OBJECTS) +construo_x11_DEPENDENCIES = libconstruo.a +construo_x11_LINK = $(CXXLD) $(construo_x11_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libconstruo_a_SOURCES) $(construo_freeglut_SOURCES) \ + $(construo_glut_SOURCES) $(construo_x11_SOURCES) +DIST_SOURCES = $(libconstruo_a_SOURCES) $(construo_freeglut_SOURCES) \ + $(construo_glut_SOURCES) $(construo_x11_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -61,6 +162,8 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -70,6 +173,7 @@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -83,54 +187,61 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ +XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ - -bindir = $(prefix)/games +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = $(prefix)/bin build_alias = @build_alias@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ freeglut_LIBS = @freeglut_LIBS@ glut_LIBS = @glut_LIBS@ host_alias = @host_alias@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ +mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ x11_CXXFLAGS = @x11_CXXFLAGS@ x11_LIBS = @x11_LIBS@ - SUBDIRS = examples - bin_PROGRAMS = @ConstruoTargets@ - -EXTRA_PROGRAMS = construo.x11 construo.glut construo.freeglut - noinst_LIBRARIES = libconstruo.a - libconstruo_a_SOURCES = \ bounding_box.cxx \ bounding_box.hxx \ @@ -253,202 +364,90 @@ worldview_zoom_tool.hxx \ zoom_graphic_context.cxx \ zoom_graphic_context.hxx - construo_x11_SOURCES = construo_main.cxx construo_main.hxx x11_display.hxx x11_display.cxx construo_x11_LDADD = libconstruo.a @x11_LIBS@ construo_x11_CXXFLAGS = -DUSE_X11_DISPLAY @x11_CXXFLAGS@ - construo_glut_SOURCES = construo_main.cxx construo_main.hxx glut_display.hxx glut_display.cxx construo_glut_LDADD = libconstruo.a @glut_LIBS@ construo_glut_CXXFLAGS = -DUSE_GLUT_DISPLAY -DHAVE_GLUT - construo_freeglut_SOURCES = construo_main.cxx construo_main.hxx glut_display.hxx glut_display.cxx construo_freeglut_LDADD = libconstruo.a @freeglut_LIBS@ construo_freeglut_CXXFLAGS = -DUSE_GLUT_DISPLAY -DHAVE_FREEGLUT -# pkgdatadir = $(datadir)/games/@PACKAGE@ +# pkgdatadir = $(datadir)/@PACKAGE@ EXTRA_DIST = TODO INSTALL.configure xml2sexpr.sh compatlib/sstream -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - -libconstruo_a_AR = $(AR) cru -libconstruo_a_LIBADD = -am_libconstruo_a_OBJECTS = bounding_box.$(OBJEXT) colors.$(OBJEXT) \ - command_line.$(OBJEXT) config.$(OBJEXT) construo.$(OBJEXT) \ - controller.$(OBJEXT) globals.$(OBJEXT) gui_buttons.$(OBJEXT) \ - gui_child_manager.$(OBJEXT) gui_component.$(OBJEXT) \ - gui_directory.$(OBJEXT) gui_directory_button.$(OBJEXT) \ - gui_file_button.$(OBJEXT) gui_file_manager.$(OBJEXT) \ - gui_label.$(OBJEXT) gui_manager.$(OBJEXT) \ - gui_new_file_button.$(OBJEXT) gui_window.$(OBJEXT) \ - input_context.$(OBJEXT) keep_alive_mgr.$(OBJEXT) \ - lisp_reader.$(OBJEXT) lisp_writer.$(OBJEXT) \ - lispreader.$(OBJEXT) load_gui_manager.$(OBJEXT) \ - particle.$(OBJEXT) particle_factory.$(OBJEXT) \ - path_manager.$(OBJEXT) rect_collider.$(OBJEXT) \ - root_graphic_context.$(OBJEXT) save_gui_manager.$(OBJEXT) \ - screen_manager.$(OBJEXT) selection.$(OBJEXT) settings.$(OBJEXT) \ - spring.$(OBJEXT) string_utils.$(OBJEXT) unix_system.$(OBJEXT) \ - vector.$(OBJEXT) world.$(OBJEXT) world_button.$(OBJEXT) \ - world_gui_manager.$(OBJEXT) worldview_collider_tool.$(OBJEXT) \ - worldview_component.$(OBJEXT) worldview_insert_tool.$(OBJEXT) \ - worldview_select_tool.$(OBJEXT) worldview_tool.$(OBJEXT) \ - worldview_zoom_tool.$(OBJEXT) zoom_graphic_context.$(OBJEXT) -libconstruo_a_OBJECTS = $(am_libconstruo_a_OBJECTS) -EXTRA_PROGRAMS = construo.x11$(EXEEXT) construo.glut$(EXEEXT) \ - construo.freeglut$(EXEEXT) -bin_PROGRAMS = @ConstruoTargets@ -PROGRAMS = $(bin_PROGRAMS) - -am_construo_freeglut_OBJECTS = construo_freeglut-construo_main.$(OBJEXT) \ - construo_freeglut-glut_display.$(OBJEXT) -construo_freeglut_OBJECTS = $(am_construo_freeglut_OBJECTS) -construo_freeglut_DEPENDENCIES = libconstruo.a -construo_freeglut_LDFLAGS = -am_construo_glut_OBJECTS = construo_glut-construo_main.$(OBJEXT) \ - construo_glut-glut_display.$(OBJEXT) -construo_glut_OBJECTS = $(am_construo_glut_OBJECTS) -construo_glut_DEPENDENCIES = libconstruo.a -construo_glut_LDFLAGS = -am_construo_x11_OBJECTS = construo_x11-construo_main.$(OBJEXT) \ - construo_x11-x11_display.$(OBJEXT) -construo_x11_OBJECTS = $(am_construo_x11_OBJECTS) -construo_x11_DEPENDENCIES = libconstruo.a -construo_x11_LDFLAGS = - -DEFAULT_INCLUDES = -I. -I$(srcdir) -I. -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/bounding_box.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/colors.Po ./$(DEPDIR)/command_line.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/config.Po ./$(DEPDIR)/construo.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/construo_freeglut-construo_main.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/construo_freeglut-glut_display.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/construo_glut-construo_main.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/construo_glut-glut_display.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/construo_x11-construo_main.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/construo_x11-x11_display.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/controller.Po ./$(DEPDIR)/globals.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gui_buttons.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gui_child_manager.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gui_component.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gui_directory.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gui_directory_button.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gui_file_button.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gui_file_manager.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gui_label.Po ./$(DEPDIR)/gui_manager.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gui_new_file_button.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gui_window.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/input_context.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/keep_alive_mgr.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/lisp_reader.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/lisp_writer.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/lispreader.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/load_gui_manager.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/particle.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/particle_factory.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/path_manager.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/rect_collider.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/root_graphic_context.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/save_gui_manager.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/screen_manager.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/selection.Po ./$(DEPDIR)/settings.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/spring.Po ./$(DEPDIR)/string_utils.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/unix_system.Po ./$(DEPDIR)/vector.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/world.Po ./$(DEPDIR)/world_button.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/world_gui_manager.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/worldview_collider_tool.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/worldview_component.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/worldview_insert_tool.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/worldview_select_tool.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/worldview_tool.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/worldview_zoom_tool.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/zoom_graphic_context.Po -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ - -o $@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -DIST_SOURCES = $(libconstruo_a_SOURCES) $(construo_freeglut_SOURCES) \ - $(construo_glut_SOURCES) $(construo_x11_SOURCES) - -RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ - ps-recursive install-info-recursive uninstall-info-recursive \ - all-recursive install-data-recursive install-exec-recursive \ - installdirs-recursive install-recursive uninstall-recursive \ - check-recursive installcheck-recursive -DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ - Makefile.in NEWS TODO acinclude.m4 aclocal.m4 config.h.in \ - configure configure.ac depcomp install-sh missing mkinstalldirs -DIST_SUBDIRS = $(SUBDIRS) -SOURCES = $(libconstruo_a_SOURCES) $(construo_freeglut_SOURCES) $(construo_glut_SOURCES) $(construo_x11_SOURCES) - all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .cxx .o .obj - -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) - -$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck -$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): configure.ac acinclude.m4 +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ - $(MAKE) stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h - -$(srcdir)/config.h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4) +$(srcdir)/config.h.in: $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) - touch $(srcdir)/config.h.in + rm -f stamp-h1 + touch $@ distclean-hdr: -rm -f config.h stamp-h1 -AR = ar - clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libconstruo.a: $(libconstruo_a_OBJECTS) $(libconstruo_a_DEPENDENCIES) -rm -f libconstruo.a $(libconstruo_a_AR) libconstruo.a $(libconstruo_a_OBJECTS) $(libconstruo_a_LIBADD) $(RANLIB) libconstruo.a -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done @@ -456,24 +455,24 @@ uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ - rm -f $(DESTDIR)$(bindir)/$$f; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) construo.freeglut$(EXEEXT): $(construo_freeglut_OBJECTS) $(construo_freeglut_DEPENDENCIES) @rm -f construo.freeglut$(EXEEXT) - $(CXXLINK) $(construo_freeglut_LDFLAGS) $(construo_freeglut_OBJECTS) $(construo_freeglut_LDADD) $(LIBS) + $(construo_freeglut_LINK) $(construo_freeglut_OBJECTS) $(construo_freeglut_LDADD) $(LIBS) construo.glut$(EXEEXT): $(construo_glut_OBJECTS) $(construo_glut_DEPENDENCIES) @rm -f construo.glut$(EXEEXT) - $(CXXLINK) $(construo_glut_LDFLAGS) $(construo_glut_OBJECTS) $(construo_glut_LDADD) $(LIBS) + $(construo_glut_LINK) $(construo_glut_OBJECTS) $(construo_glut_LDADD) $(LIBS) construo.x11$(EXEEXT): $(construo_x11_OBJECTS) $(construo_x11_DEPENDENCIES) @rm -f construo.x11$(EXEEXT) - $(CXXLINK) $(construo_x11_LDFLAGS) $(construo_x11_OBJECTS) $(construo_x11_LDADD) $(LIBS) + $(construo_x11_LINK) $(construo_x11_OBJECTS) $(construo_x11_LDADD) $(LIBS) mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core + -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @@ -532,163 +531,103 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/worldview_zoom_tool.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoom_graphic_context.Po@am__quote@ -distclean-depend: - -rm -rf ./$(DEPDIR) - .cxx.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cxx.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` construo_freeglut-construo_main.o: construo_main.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-construo_main.o -MD -MP -MF "$(DEPDIR)/construo_freeglut-construo_main.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_freeglut-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_freeglut-construo_main.Tpo" "$(DEPDIR)/construo_freeglut-construo_main.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_freeglut-construo_main.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-construo_main.o -MD -MP -MF $(DEPDIR)/construo_freeglut-construo_main.Tpo -c -o construo_freeglut-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_freeglut-construo_main.Tpo $(DEPDIR)/construo_freeglut-construo_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_freeglut-construo_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_freeglut-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_freeglut-construo_main.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -c -o construo_freeglut-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx construo_freeglut-construo_main.obj: construo_main.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-construo_main.obj -MD -MP -MF "$(DEPDIR)/construo_freeglut-construo_main.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_freeglut-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi`; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_freeglut-construo_main.Tpo" "$(DEPDIR)/construo_freeglut-construo_main.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_freeglut-construo_main.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-construo_main.obj -MD -MP -MF $(DEPDIR)/construo_freeglut-construo_main.Tpo -c -o construo_freeglut-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi` +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_freeglut-construo_main.Tpo $(DEPDIR)/construo_freeglut-construo_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_freeglut-construo_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_freeglut-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_freeglut-construo_main.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -c -o construo_freeglut-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi` construo_freeglut-glut_display.o: glut_display.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-glut_display.o -MD -MP -MF "$(DEPDIR)/construo_freeglut-glut_display.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_freeglut-glut_display.o `test -f 'glut_display.cxx' || echo '$(srcdir)/'`glut_display.cxx; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_freeglut-glut_display.Tpo" "$(DEPDIR)/construo_freeglut-glut_display.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_freeglut-glut_display.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-glut_display.o -MD -MP -MF $(DEPDIR)/construo_freeglut-glut_display.Tpo -c -o construo_freeglut-glut_display.o `test -f 'glut_display.cxx' || echo '$(srcdir)/'`glut_display.cxx +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_freeglut-glut_display.Tpo $(DEPDIR)/construo_freeglut-glut_display.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='glut_display.cxx' object='construo_freeglut-glut_display.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_freeglut-glut_display.Po' tmpdepfile='$(DEPDIR)/construo_freeglut-glut_display.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -c -o construo_freeglut-glut_display.o `test -f 'glut_display.cxx' || echo '$(srcdir)/'`glut_display.cxx construo_freeglut-glut_display.obj: glut_display.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-glut_display.obj -MD -MP -MF "$(DEPDIR)/construo_freeglut-glut_display.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_freeglut-glut_display.obj `if test -f 'glut_display.cxx'; then $(CYGPATH_W) 'glut_display.cxx'; else $(CYGPATH_W) '$(srcdir)/glut_display.cxx'; fi`; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_freeglut-glut_display.Tpo" "$(DEPDIR)/construo_freeglut-glut_display.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_freeglut-glut_display.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -MT construo_freeglut-glut_display.obj -MD -MP -MF $(DEPDIR)/construo_freeglut-glut_display.Tpo -c -o construo_freeglut-glut_display.obj `if test -f 'glut_display.cxx'; then $(CYGPATH_W) 'glut_display.cxx'; else $(CYGPATH_W) '$(srcdir)/glut_display.cxx'; fi` +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_freeglut-glut_display.Tpo $(DEPDIR)/construo_freeglut-glut_display.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='glut_display.cxx' object='construo_freeglut-glut_display.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_freeglut-glut_display.Po' tmpdepfile='$(DEPDIR)/construo_freeglut-glut_display.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_freeglut_CXXFLAGS) $(CXXFLAGS) -c -o construo_freeglut-glut_display.obj `if test -f 'glut_display.cxx'; then $(CYGPATH_W) 'glut_display.cxx'; else $(CYGPATH_W) '$(srcdir)/glut_display.cxx'; fi` construo_glut-construo_main.o: construo_main.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-construo_main.o -MD -MP -MF "$(DEPDIR)/construo_glut-construo_main.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_glut-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_glut-construo_main.Tpo" "$(DEPDIR)/construo_glut-construo_main.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_glut-construo_main.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-construo_main.o -MD -MP -MF $(DEPDIR)/construo_glut-construo_main.Tpo -c -o construo_glut-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_glut-construo_main.Tpo $(DEPDIR)/construo_glut-construo_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_glut-construo_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_glut-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_glut-construo_main.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -c -o construo_glut-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx construo_glut-construo_main.obj: construo_main.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-construo_main.obj -MD -MP -MF "$(DEPDIR)/construo_glut-construo_main.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_glut-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi`; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_glut-construo_main.Tpo" "$(DEPDIR)/construo_glut-construo_main.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_glut-construo_main.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-construo_main.obj -MD -MP -MF $(DEPDIR)/construo_glut-construo_main.Tpo -c -o construo_glut-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi` +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_glut-construo_main.Tpo $(DEPDIR)/construo_glut-construo_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_glut-construo_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_glut-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_glut-construo_main.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -c -o construo_glut-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi` construo_glut-glut_display.o: glut_display.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-glut_display.o -MD -MP -MF "$(DEPDIR)/construo_glut-glut_display.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_glut-glut_display.o `test -f 'glut_display.cxx' || echo '$(srcdir)/'`glut_display.cxx; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_glut-glut_display.Tpo" "$(DEPDIR)/construo_glut-glut_display.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_glut-glut_display.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-glut_display.o -MD -MP -MF $(DEPDIR)/construo_glut-glut_display.Tpo -c -o construo_glut-glut_display.o `test -f 'glut_display.cxx' || echo '$(srcdir)/'`glut_display.cxx +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_glut-glut_display.Tpo $(DEPDIR)/construo_glut-glut_display.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='glut_display.cxx' object='construo_glut-glut_display.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_glut-glut_display.Po' tmpdepfile='$(DEPDIR)/construo_glut-glut_display.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -c -o construo_glut-glut_display.o `test -f 'glut_display.cxx' || echo '$(srcdir)/'`glut_display.cxx construo_glut-glut_display.obj: glut_display.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-glut_display.obj -MD -MP -MF "$(DEPDIR)/construo_glut-glut_display.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_glut-glut_display.obj `if test -f 'glut_display.cxx'; then $(CYGPATH_W) 'glut_display.cxx'; else $(CYGPATH_W) '$(srcdir)/glut_display.cxx'; fi`; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_glut-glut_display.Tpo" "$(DEPDIR)/construo_glut-glut_display.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_glut-glut_display.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -MT construo_glut-glut_display.obj -MD -MP -MF $(DEPDIR)/construo_glut-glut_display.Tpo -c -o construo_glut-glut_display.obj `if test -f 'glut_display.cxx'; then $(CYGPATH_W) 'glut_display.cxx'; else $(CYGPATH_W) '$(srcdir)/glut_display.cxx'; fi` +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_glut-glut_display.Tpo $(DEPDIR)/construo_glut-glut_display.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='glut_display.cxx' object='construo_glut-glut_display.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_glut-glut_display.Po' tmpdepfile='$(DEPDIR)/construo_glut-glut_display.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_glut_CXXFLAGS) $(CXXFLAGS) -c -o construo_glut-glut_display.obj `if test -f 'glut_display.cxx'; then $(CYGPATH_W) 'glut_display.cxx'; else $(CYGPATH_W) '$(srcdir)/glut_display.cxx'; fi` construo_x11-construo_main.o: construo_main.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-construo_main.o -MD -MP -MF "$(DEPDIR)/construo_x11-construo_main.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_x11-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_x11-construo_main.Tpo" "$(DEPDIR)/construo_x11-construo_main.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_x11-construo_main.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-construo_main.o -MD -MP -MF $(DEPDIR)/construo_x11-construo_main.Tpo -c -o construo_x11-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_x11-construo_main.Tpo $(DEPDIR)/construo_x11-construo_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_x11-construo_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_x11-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_x11-construo_main.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -c -o construo_x11-construo_main.o `test -f 'construo_main.cxx' || echo '$(srcdir)/'`construo_main.cxx construo_x11-construo_main.obj: construo_main.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-construo_main.obj -MD -MP -MF "$(DEPDIR)/construo_x11-construo_main.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_x11-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi`; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_x11-construo_main.Tpo" "$(DEPDIR)/construo_x11-construo_main.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_x11-construo_main.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-construo_main.obj -MD -MP -MF $(DEPDIR)/construo_x11-construo_main.Tpo -c -o construo_x11-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi` +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_x11-construo_main.Tpo $(DEPDIR)/construo_x11-construo_main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='construo_main.cxx' object='construo_x11-construo_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_x11-construo_main.Po' tmpdepfile='$(DEPDIR)/construo_x11-construo_main.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -c -o construo_x11-construo_main.obj `if test -f 'construo_main.cxx'; then $(CYGPATH_W) 'construo_main.cxx'; else $(CYGPATH_W) '$(srcdir)/construo_main.cxx'; fi` construo_x11-x11_display.o: x11_display.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-x11_display.o -MD -MP -MF "$(DEPDIR)/construo_x11-x11_display.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_x11-x11_display.o `test -f 'x11_display.cxx' || echo '$(srcdir)/'`x11_display.cxx; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_x11-x11_display.Tpo" "$(DEPDIR)/construo_x11-x11_display.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_x11-x11_display.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-x11_display.o -MD -MP -MF $(DEPDIR)/construo_x11-x11_display.Tpo -c -o construo_x11-x11_display.o `test -f 'x11_display.cxx' || echo '$(srcdir)/'`x11_display.cxx +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_x11-x11_display.Tpo $(DEPDIR)/construo_x11-x11_display.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='x11_display.cxx' object='construo_x11-x11_display.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_x11-x11_display.Po' tmpdepfile='$(DEPDIR)/construo_x11-x11_display.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -c -o construo_x11-x11_display.o `test -f 'x11_display.cxx' || echo '$(srcdir)/'`x11_display.cxx construo_x11-x11_display.obj: x11_display.cxx -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-x11_display.obj -MD -MP -MF "$(DEPDIR)/construo_x11-x11_display.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o construo_x11-x11_display.obj `if test -f 'x11_display.cxx'; then $(CYGPATH_W) 'x11_display.cxx'; else $(CYGPATH_W) '$(srcdir)/x11_display.cxx'; fi`; \ -@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/construo_x11-x11_display.Tpo" "$(DEPDIR)/construo_x11-x11_display.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/construo_x11-x11_display.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -MT construo_x11-x11_display.obj -MD -MP -MF $(DEPDIR)/construo_x11-x11_display.Tpo -c -o construo_x11-x11_display.obj `if test -f 'x11_display.cxx'; then $(CYGPATH_W) 'x11_display.cxx'; else $(CYGPATH_W) '$(srcdir)/x11_display.cxx'; fi` +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/construo_x11-x11_display.Tpo $(DEPDIR)/construo_x11-x11_display.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='x11_display.cxx' object='construo_x11-x11_display.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/construo_x11-x11_display.Po' tmpdepfile='$(DEPDIR)/construo_x11-x11_display.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(construo_x11_CXXFLAGS) $(CXXFLAGS) -c -o construo_x11-x11_display.obj `if test -f 'x11_display.cxx'; then $(CYGPATH_W) 'x11_display.cxx'; else $(CYGPATH_W) '$(srcdir)/x11_display.cxx'; fi` -uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -697,7 +636,13 @@ uninstall-info-am: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @set fnord $$MAKEFLAGS; amf=$$2; \ + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -709,15 +654,20 @@ $(RECURSIVE_TARGETS): local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $$MAKEFLAGS; amf=$$2; \ +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -738,7 +688,7 @@ maintainer-clean-recursive: local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -749,53 +699,54 @@ ctags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done -ETAGS = etags -ETAGSFLAGS = - -CTAGS = ctags -CTAGSFLAGS = - -tags: TAGS - ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique +tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ - here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique @@ -807,40 +758,25 @@ GTAGS: distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = . -distdir = $(PACKAGE)-$(VERSION) - -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } - -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print distdir: $(DISTFILES) $(am__remove_distdir) - mkdir $(distdir) - $(mkinstalldirs) $(distdir)/compatlib - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ + test -d $(distdir) || mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ @@ -851,15 +787,19 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done - list='$(SUBDIRS)'; for subdir in $$list; do \ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" \ - distdir=../$(distdir)/$$subdir \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ @@ -867,22 +807,55 @@ distdir: $(DISTFILES) -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist - $(am__remove_distdir) - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst @@ -902,21 +875,22 @@ distcheck: dist distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ - (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ - && rm -f $(distdir).tar.gz \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) - @echo "$(distdir).tar.gz is ready for distribution" | \ - sed 'h;s/./=/g;p;x;p;x' + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: - cd $(distuninstallcheck_dir) \ + @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ @@ -925,11 +899,11 @@ distuninstallcheck: $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean - if test '$(srcdir)' = . ; then \ + @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi - test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 @@ -938,8 +912,9 @@ check: check-recursive all-am: Makefile $(LIBRARIES) $(PROGRAMS) config.h installdirs: installdirs-recursive installdirs-am: - $(mkinstalldirs) $(DESTDIR)$(bindir) - + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive @@ -951,7 +926,7 @@ install-am: all-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -959,7 +934,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -971,30 +946,44 @@ clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-hdr distclean-tags + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: +html: html-recursive + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + install-exec-am: install-binPROGRAMS +install-html: install-html-recursive + install-info: install-info-recursive install-man: +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf autom4te.cache + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf ./$(DEPDIR) + -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive @@ -1009,28 +998,27 @@ ps: ps-recursive ps-am: -uninstall-am: uninstall-binPROGRAMS uninstall-info-am - -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ - clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \ - clean-recursive ctags ctags-recursive dist dist-all dist-gzip \ - distcheck distclean distclean-compile distclean-depend \ - distclean-generic distclean-hdr distclean-recursive \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am dvi-recursive info info-am info-recursive install \ - install-am install-binPROGRAMS install-data install-data-am \ - install-data-recursive install-exec install-exec-am \ - install-exec-recursive install-info install-info-am \ - install-info-recursive install-man install-recursive \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am installdirs-recursive maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-recursive \ - pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ - tags-recursive uninstall uninstall-am uninstall-binPROGRAMS \ - uninstall-info-am uninstall-info-recursive uninstall-recursive +uninstall-am: uninstall-binPROGRAMS + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-binPROGRAMS \ + clean-generic clean-noinstLIBRARIES ctags ctags-recursive dist \ + dist-all dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ \ + dist-zip distcheck distclean distclean-compile \ + distclean-generic distclean-hdr distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-binPROGRAMS # EOF # diff --git a/aclocal.m4 b/aclocal.m4 index ab0bbc5..87ce185 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,7 +1,7 @@ -# generated automatically by aclocal 1.7.3 -*- Autoconf -*- +# generated automatically by aclocal 1.10.1 -*- Autoconf -*- -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -11,350 +11,57 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. -AC_DEFUN([AC_DEFINE_DIR], [ - test "x$prefix" = xNONE && prefix="$ac_default_prefix" - test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - ac_define_dir=`eval echo [$]$2` - ac_define_dir=`eval echo [$]ac_define_dir` - ifelse($3, , - AC_DEFINE_UNQUOTED($1, "$ac_define_dir"), - AC_DEFINE_UNQUOTED($1, "$ac_define_dir", $3)) -]) - - -# Do all the work for Automake. -*- Autoconf -*- - -# This macro actually does too much some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -# Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 9 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -AC_PREREQ([2.54]) - -# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow -# the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_MISSING_PROG(AMTAR, tar) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl - -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $1 | $1:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) - -# Copyright 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(AC_AUTOCONF_VERSION, [2.63],, +[m4_warning([this file was generated for autoconf 2.63. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically `autoreconf'.])]) -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.10' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.10.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.7.3])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 +[AM_AUTOMAKE_VERSION([1.10.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +# AM_AUX_DIR_EXPAND -*- Autoconf -*- +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # -# Check to make sure that the build environment is sane. -# - -# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# -*- Autoconf -*- - - -# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# AM_AUX_DIR_EXPAND - -# Copyright 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to @@ -394,131 +101,56 @@ fi # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. -# Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50]) - -AC_DEFUN([AM_AUX_DIR_EXPAND], [ +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. - -# Copyright 2001 Free Software Foundation, Inc. +# AM_CONDITIONAL -*- Autoconf -*- -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# serial 8 -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# AM_PROG_INSTALL_STRIP - -# Copyright 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# -*- Autoconf -*- -# Copyright (C) 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' else - am__leading_dot=_ + $1_TRUE='#' + $1_FALSE= fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# serial 5 -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. +# serial 9 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, @@ -527,7 +159,6 @@ AC_SUBST([am__leading_dot])]) # CC etc. in the Makefile, will ask for an AC_PROG_CC use... - # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. @@ -547,6 +178,7 @@ AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) @@ -563,18 +195,34 @@ AC_CACHE_CHECK([dependency style of $depcc], # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. - echo '#include "conftest.h"' > conftest.c - echo 'int i;' > conftest.h - echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) @@ -592,16 +240,23 @@ AC_CACHE_CHECK([dependency style of $depcc], # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=conftest.c object=conftest.o \ - depfile=conftest.Po tmpdepfile=conftest.TPo \ - $SHELL ./depcomp $depcc -c -o conftest.o conftest.c \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && - grep conftest.h conftest.Po > /dev/null 2>&1 && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings - # (even with -Werror). So we grep stderr for any message - # that says an option was ignored. - if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi @@ -635,36 +290,27 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking Speeds up one-time builds - --enable-dependency-tracking Do not reject slow dependency extractors]) +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) -# Generate code to set up dependency tracking. -*- Autoconf -*- +# Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -#serial 2 +#serial 3 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ @@ -677,33 +323,28 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi - grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n -e '/^U = / s///p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # We invoke sed twice because it is the simplest approach to - # changing $(DEPDIR) to its actual value in the expansion. - for file in `sed -n -e ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue @@ -729,35 +370,198 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) -# Check to see how 'make' treats includes. -*- Autoconf -*- +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# Do all the work for Automake. -*- Autoconf -*- -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 13 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.60])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # serial 2 +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' -doit: +am__doit: @echo done +.PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) @@ -785,79 +589,293 @@ if test "$am__include" = "#"; then _am_result=BSD fi fi -AC_SUBST(am__include) -AC_SUBST(am__quote) -AC_MSG_RESULT($_am_result) +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) -# AM_CONDITIONAL -*- Autoconf -*- +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# serial 5 -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. -# serial 5 +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) -AC_PREREQ(2.52) +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : else - $1_TRUE='#' - $1_FALSE= + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]) -fi])]) +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# Check how to create a tarball. -*- Autoconf -*- -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# serial 2 -AC_PREREQ([2.52]) +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac -# serial 6 + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR +m4_include([acinclude.m4]) diff --git a/configure b/configure index cbb49ab..a0bf2b8 100755 --- a/configure +++ b/configure @@ -1,61 +1,145 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.57 for construo 0.2.2. +# Generated by GNU Autoconf 2.63 for construo 0.2.2. # -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi # Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -63,206 +147,450 @@ fi # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# CDPATH. +$as_unset CDPATH -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no fi + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in + case $as_dir in /*) - if ("$as_dir/$as_base" -c ' + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell bug-autoconf@gnu.org about your system, + echo including any error possibly output before this message. + echo This can help us improve future autoconf versions. + echo Configuration will now proceed without shell functions. +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -if expr a : '\(a\)' >/dev/null 2>&1; then +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH +exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - # Identity of this package. PACKAGE_NAME='construo' PACKAGE_TARNAME='construo' @@ -274,46 +602,170 @@ ac_unique_file="construo.hxx" # Factoring default headers for most tests. ac_includes_default="\ #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H # include #endif -#if STDC_HEADERS +#ifdef STDC_HEADERS # include # include #else -# if HAVE_STDLIB_H +# ifdef HAVE_STDLIB_H # include # endif #endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif -#if HAVE_STRINGS_H +#ifdef HAVE_STRINGS_H # include #endif -#if HAVE_INTTYPES_H +#ifdef HAVE_INTTYPES_H # include -#else -# if HAVE_STDINT_H -# include -# endif #endif -#if HAVE_UNISTD_H +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS CXXCPP EGREP x11_LIBS x11_CXXFLAGS glut_LIBS freeglut_LIBS ConstruoTargets LIBOBJS LTLIBOBJS' +ac_subst_vars='LTLIBOBJS +LIBOBJS +ConstruoTargets +freeglut_LIBS +glut_LIBS +x11_CXXFLAGS +x11_LIBS +EGREP +GREP +CXXCPP +X_EXTRA_LIBS +X_LIBS +X_PRE_LIBS +X_CFLAGS +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +ac_ct_CC +CFLAGS +CC +XMKMF +RANLIB +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CXX +CPPFLAGS +LDFLAGS +CXXFLAGS +CXX +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +with_x +enable_debug +enable_gprof +enable_fcheck +enable_x11 +enable_glut +' + ac_precious_vars='build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +LIBS +CPPFLAGS +CCC +XMKMF +CC +CFLAGS +CPP +CXXCPP' + # Initialize some variables set by options. ac_init_help= ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null @@ -336,34 +788,48 @@ x_libraries=NONE # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' ac_prev= +ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -385,33 +851,61 @@ do --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; esac - eval "enable_$ac_feature='$ac_optarg'" ;; + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -438,6 +932,12 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -462,13 +962,16 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -533,6 +1036,16 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -583,26 +1096,38 @@ do ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; esac - eval "with_$ac_package='$ac_optarg'" ;; + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. @@ -622,7 +1147,7 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option + -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; @@ -631,17 +1156,16 @@ Try \`$0 --help' for more information." >&2 ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; @@ -650,31 +1174,39 @@ done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 + { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 + { (exit 1); exit 1; }; } ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac -done +fi -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir do - eval ac_val=$`echo $ac_var` + eval ac_val=\$$ac_var + # Remove trailing slashes. case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac + { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -688,7 +1220,7 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes @@ -701,86 +1233,76 @@ test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { $as_echo "$as_me: error: working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CXX_set=${CXX+set} -ac_env_CXX_value=$CXX -ac_cv_env_CXX_set=${CXX+set} -ac_cv_env_CXX_value=$CXX -ac_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_env_CXXFLAGS_value=$CXXFLAGS -ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_cv_env_CXXFLAGS_value=$CXXFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP -ac_env_CXXCPP_set=${CXXCPP+set} -ac_env_CXXCPP_value=$CXXCPP -ac_cv_env_CXXCPP_set=${CXXCPP+set} -ac_cv_env_CXXCPP_value=$CXXCPP + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done # # Report the --help message. @@ -809,9 +1331,6 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] -_ACEOF - - cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -826,18 +1345,25 @@ for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/construo] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -860,13 +1386,16 @@ if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking Speeds up one-time builds - --enable-dependency-tracking Do not reject slow dependency extractors + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors --enable-debug enable debug support (default: no) --enable-gprof enable gprof profiling (default: no) --enable-fcheck enable fcheck profiling (default: no) + --enable-x11 enable x11 support (default: yes) + --enable-glut enable glut support (default: yes) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -878,8 +1407,10 @@ Some influential environment variables: CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + XMKMF Path to xmkmf, Makefile generator for X Window System CC C compiler command CFLAGS C compiler flags CPP C preprocessor @@ -889,88 +1420,88 @@ Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue ac_builddir=. -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } done fi -test -n "$ac_init_help" && exit 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF construo configure 0.2.2 -generated by GNU Autoconf 2.57 +generated by GNU Autoconf 2.63 -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit 0 + exit fi -exec 5>config.log -cat >&5 <<_ACEOF +cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by construo $as_me 0.2.2, which was -generated by GNU Autoconf 2.57. Invocation command line was +generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF +exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -989,7 +1520,7 @@ uname -v = `(uname -v) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -1001,8 +1532,9 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" + $as_echo "PATH: $as_dir" done +IFS=$as_save_IFS } >&5 @@ -1024,7 +1556,6 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1035,31 +1566,29 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. + ac_must_keep_next=false # Got value, back to normal. else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done @@ -1070,8 +1599,8 @@ $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_ # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1084,20 +1613,35 @@ trap 'exit_status=$? _ASBOX echo # The following way of writing the cache mishandles newlines in values, -{ +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} + esac | + sort +) echo cat <<\_ASBOX @@ -1108,22 +1652,28 @@ _ASBOX echo for ac_var in $ac_subst_vars do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## +## ------------------- ## +## File substitutions. ## +## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1135,26 +1685,24 @@ _ASBOX ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h | sort + cat confdefs.h echo fi test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 - rm -f core core.* *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h # Predefined preprocessor variables. @@ -1184,18 +1732,24 @@ _ACEOF # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} + { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi @@ -1205,54 +1759,61 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} + { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1262,18 +1823,15 @@ echo "$as_me: current value: $ac_new_val" >&2;} fi done if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -1298,34 +1856,45 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +am__api_version='1.10' -am__api_version="1.7" ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break - elif test -f $ac_dir/install.sh; then + elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break - elif test -f $ac_dir/shtool; then + elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -1338,12 +1907,14 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -1354,6 +1925,7 @@ do case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -1361,40 +1933,53 @@ case $as_dir/ in # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi done done ;; esac + done +IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is - # removed, or if the path is relative. + # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 +{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -1404,8 +1989,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file @@ -1428,9 +2013,9 @@ if ( # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken + { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi @@ -1441,27 +2026,23 @@ then # Ok. : else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! + { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! +$as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" + program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. # By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed - +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` @@ -1472,18 +2053,66 @@ if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done +done +IFS=$as_save_IFS + +fi + + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi fi +{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. @@ -1494,54 +2123,58 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 + { $as_echo "$as_me:$LINENO: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$AWK" && break done -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF +SHELL = /bin/sh all: - @echo 'ac_maketemp="$(MAKE)"' + @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac rm -f conftest.make fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -1554,12 +2187,16 @@ else fi rmdir .tst 2>/dev/null - # test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } + fi fi # test whether we have cygpath @@ -1602,10 +2239,7 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -install_sh=${install_sh-"$am_aux_dir/install-sh"} +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right @@ -1615,10 +2249,10 @@ if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. @@ -1629,34 +2263,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 + { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. @@ -1667,58 +2303,79 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - STRIP=$ac_ct_STRIP + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi else STRIP="$ac_cv_prog_STRIP" fi fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + - ac_config_headers="$ac_config_headers config.h" + +ac_config_headers="$ac_config_headers config.h" # check for some programs -ac_ext=cc +ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. @@ -1729,38 +2386,40 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 + { $as_echo "$as_me:$LINENO: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. @@ -1771,55 +2430,84 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$ac_ct_CXX" && break done -test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - CXX=$ac_ct_CXX + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi fi - + fi +fi # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 +$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -1835,111 +2523,150 @@ main () } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C++ compiler default output" >&5 -echo $ECHO_N "checking for C++ compiler default output... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 +{ $as_echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5 +$as_echo_n "checking for C++ compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link_default") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. - ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; + # We found the default executable, but exeext='' is most + # certainly right. + break;; *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext - break;; + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; * ) - break;; + break;; esac done +test "$ac_cv_exeext" = no && ac_cv_exeext= + else - echo "$as_me: failed program was:" >&5 + ac_file='' +fi + +{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C++ compiler cannot create executables See \`config.log' for more details." >&5 -echo "$as_me: error: C++ compiler cannot create executables +$as_echo "$as_me: error: C++ compiler cannot create executables See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 -echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 +$as_echo_n "checking whether the C++ compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs. + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C++ compiled programs. +$as_echo "$as_me: error: cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi fi fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } -rm -f a.out a.exe conftest$ac_cv_exeext b.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will @@ -1948,35 +2675,35 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; + break;; * ) break;; esac done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -1992,42 +2719,50 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile +$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2046,41 +2781,54 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 -GXX=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -CXXFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2096,132 +2844,136 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cxx_g=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include -$ac_declaration + int main () { -exit (42); + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -continue -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_declaration + int main () { -exit (42); + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2229,17 +2981,18 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" - ac_config_commands="$ac_config_commands depfiles" +ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' -doit: +am__doit: @echo done +.PHONY: am__doit END # If we don't find an include directive, just comment out the code. -echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none @@ -2266,22 +3019,20 @@ if test "$am__include" = "#"; then fi -echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6 +{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } rm -f confinc confmf -# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +# Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then - enableval="$enable_dependency_tracking" + enableval=$enable_dependency_tracking; +fi -fi; if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi - - -if test "x$enable_dependency_tracking" != xno; then + if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else @@ -2291,13 +3042,12 @@ fi - depcc="$CXX" am_compiler_list= -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -2310,18 +3060,34 @@ else # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. - echo '#include "conftest.h"' > conftest.c - echo 'int i;' > conftest.h - echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) @@ -2339,16 +3105,23 @@ else # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=conftest.c object=conftest.o \ - depfile=conftest.Po tmpdepfile=conftest.TPo \ - $SHELL ./depcomp $depcc -c -o conftest.o conftest.c \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && - grep conftest.h conftest.Po > /dev/null 2>&1 && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings - # (even with -Werror). So we grep stderr for any message - # that says an option was ignored. - if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi @@ -2362,13 +3135,11 @@ else fi fi -echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +{ $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type - - -if + if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= @@ -2382,10 +3153,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -2396,34 +3167,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 + { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. @@ -2434,27 +3207,37 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - RANLIB=$ac_ct_RANLIB + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi else RANLIB="$ac_cv_prog_RANLIB" fi @@ -2470,12 +3253,14 @@ fi # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -2486,6 +3271,7 @@ do case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -2493,40 +3279,53 @@ case $as_dir/ in # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi done done ;; esac + done +IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is - # removed, or if the path is relative. + # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 +{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -2544,10 +3343,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2558,34 +3357,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2596,38 +3397,49 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2638,76 +3450,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi + fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2719,17 +3491,18 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -2747,24 +3520,25 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2775,38 +3549,40 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2817,67 +3593,98 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$ac_ct_CC" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2896,41 +3703,93 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2946,28 +3805,82 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -2983,15 +3896,14 @@ else CFLAGS= fi fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + $as_echo_n "(cached) " >&6 else - ac_cv_prog_cc_stdc=no + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3019,6 +3931,21 @@ static char *f (char * (*g) (char **, int), char **p, ...) va_end (v); return s; } + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -3033,168 +3960,58 @@ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; return 0; } _ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.$ac_objext + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done -rm -f conftest.$ac_ext conftest.$ac_objext +rm -f conftest.$ac_ext CC=$ac_save_CC fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3203,10 +4020,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3219,18 +4036,34 @@ else # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. - echo '#include "conftest.h"' > conftest.c - echo 'int i;' > conftest.h - echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) @@ -3248,16 +4081,23 @@ else # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=conftest.c object=conftest.o \ - depfile=conftest.Po tmpdepfile=conftest.TPo \ - $SHELL ./depcomp $depcc -c -o conftest.o conftest.c \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && - grep conftest.h conftest.Po > /dev/null 2>&1 && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings - # (even with -Werror). So we grep stderr for any message - # that says an option was ignored. - if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi @@ -3271,13 +4111,11 @@ else fi fi -echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - -if + if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= @@ -3294,15 +4132,15 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" @@ -3317,7 +4155,6 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3328,39 +4165,39 @@ cat >>conftest.$ac_ext <<_ACEOF #else # include #endif - Syntax error + Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3368,33 +4205,34 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -3412,8 +4250,8 @@ fi else ac_cv_prog_CPP=$CPP fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 +{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 +$as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -3424,7 +4262,6 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3435,39 +4272,39 @@ cat >>conftest.$ac_ext <<_ACEOF #else # include #endif - Syntax error + Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3475,33 +4312,34 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -3510,11 +4348,13 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi ac_ext=c @@ -3524,61 +4364,66 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking for X" >&5 -echo $ECHO_N "checking for X... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for X" >&5 +$as_echo_n "checking for X... " >&6; } -# Check whether --with-x or --without-x was given. +# Check whether --with-x was given. if test "${with_x+set}" = set; then - withval="$with_x" + withval=$with_x; +fi -fi; # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else - if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then - # Both variables are already set. - have_x=yes - else - if test "${ac_cv_have_x+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + case $x_includes,$x_libraries in #( + *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5 +$as_echo "$as_me: error: cannot use X directory names containing '" >&2;} + { (exit 1); exit 1; }; };; #( + *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then + $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no -rm -fr conftest.dir +rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir - # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat >Imakefile <<'_ACEOF' -acfindx: - @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' -_ACEOF - if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then +incroot: + @echo incroot='${INCROOT}' +usrlibdir: + @echo usrlibdir='${USRLIBDIR}' +libdir: + @echo libdir='${LIBDIR}' +_ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. - eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl; do - if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && - test -f $ac_im_libdir/libX11.$ac_extension; then - ac_im_usrlibdir=$ac_im_libdir; break + for ac_extension in a so sl dylib la dll; do + if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && + test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in - /usr/include) ;; + /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in - /usr/lib | /lib) ;; + /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. - rm -fr conftest.dir + rm -f -r conftest.dir fi # Standard set of common directories for X headers. @@ -3619,47 +4464,47 @@ ac_x_header_dirs=' /usr/openwin/share/include' if test "$ac_x_includes" = no; then - # Guess where to find include files, by looking for Intrinsic.h. + # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +#include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # We can compile using X headers with no special include directory. ac_x_includes= else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do - if test -r "$ac_dir/X11/Intrinsic.h"; then + if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi + rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = no @@ -3668,84 +4513,99 @@ if test "$ac_x_libraries" = no; then # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS - LIBS="-lXt $LIBS" + LIBS="-lX11 $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +#include int main () { -XtMalloc (0) +XrmInitialize () ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -LIBS=$ac_save_LIBS -for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` + LIBS=$ac_save_LIBS +for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! - for ac_extension in a so sl; do - if test -r $ac_dir/libXt.$ac_extension; then + for ac_extension in a so sl dylib la dll; do + if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no -if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then - # Didn't find X anywhere. Cache the known absence of X. - ac_cv_have_x="have_x=no" -else - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes \ - ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" -fi +case $ac_x_includes,$ac_x_libraries in #( + no,* | *,no | *\'*) + # Didn't find X, or a directory has "'" in its name. + ac_cv_have_x="have_x=no";; #( + *) + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$ac_x_includes'\ + ac_x_libraries='$ac_x_libraries'" +esac fi - - fi +;; #( + *) have_x=yes;; + esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then - echo "$as_me:$LINENO: result: $have_x" >&5 -echo "${ECHO_T}$have_x" >&6 + { $as_echo "$as_me:$LINENO: result: $have_x" >&5 +$as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes \ - ac_x_includes=$x_includes ac_x_libraries=$x_libraries" - echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 -echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 + ac_cv_have_x="have_x=yes\ + ac_x_includes='$x_includes'\ + ac_x_libraries='$x_libraries'" + { $as_echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 +$as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = yes; then @@ -3766,13 +4626,12 @@ else X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . - case `(uname -sr) 2>/dev/null` in - "SunOS 5"*) - echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 -echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 - ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" + { $as_echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 +$as_echo_n "checking whether -R must be followed by a space... " >&6; } + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + ac_xsave_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3788,33 +4647,35 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_R_nospace=yes -else - echo "$as_me: failed program was:" >&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + X_LIBS="$X_LIBS -R$x_libraries" +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_R_nospace=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - if test $ac_R_nospace = yes; then - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - X_LIBS="$X_LIBS -R$x_libraries" - else LIBS="$ac_xsave_LIBS -R $x_libraries" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3830,36 +4691,47 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_R_space=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + X_LIBS="$X_LIBS -R $x_libraries" else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_R_space=no + { $as_echo "$as_me:$LINENO: result: neither works" >&5 +$as_echo "neither works" >&6; } fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - if test $ac_R_space = yes; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - X_LIBS="$X_LIBS -R $x_libraries" - else - echo "$as_me:$LINENO: result: neither works" >&5 -echo "${ECHO_T}neither works" >&6 - fi - fi - LIBS=$ac_xsave_LIBS - esac + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_c_werror_flag=$ac_xsave_c_werror_flag + LIBS=$ac_xsave_LIBS fi # Check for system-dependent libraries X programs must link with. @@ -3874,165 +4746,198 @@ echo "${ECHO_T}neither works" >&6 # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char XOpenDisplay (); int main () { -XOpenDisplay (); +return XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 -echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 +$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { -dnet_ntoa (); +return dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_dnet_dnet_ntoa=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_dnet_dnet_ntoa=no + ac_cv_lib_dnet_dnet_ntoa=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 -echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 -if test $ac_cv_lib_dnet_dnet_ntoa = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } +if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then - echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 -echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 +$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { -dnet_ntoa (); +return dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_dnet_stub_dnet_ntoa=no + ac_cv_lib_dnet_stub_dnet_ntoa=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 -echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 -if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } +if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, @@ -4043,194 +4948,229 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. - echo "$as_me:$LINENO: checking for gethostbyname" >&5 -echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for gethostbyname" >&5 +$as_echo_n "checking for gethostbyname... " >&6; } if test "${ac_cv_func_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +/* Define gethostbyname to an innocuous variant, in case declares gethostbyname. + For example, HP-UX 11i declares gettimeofday. */ +#define gethostbyname innocuous_gethostbyname + /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ + #ifdef __STDC__ # include #else # include #endif -/* Override any gcc2 internal prototype to avoid an error. */ + +#undef gethostbyname + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char gethostbyname (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +#if defined __stub_gethostbyname || defined __stub___gethostbyname choke me -#else -char (*f) () = gethostbyname; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != gethostbyname; +return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_gethostbyname=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_gethostbyname=no + ac_cv_func_gethostbyname=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 +$as_echo "$ac_cv_func_gethostbyname" >&6; } if test $ac_cv_func_gethostbyname = no; then - echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 -echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 +$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { -gethostbyname (); +return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_nsl_gethostbyname=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_nsl_gethostbyname=no + ac_cv_lib_nsl_gethostbyname=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 -if test $ac_cv_lib_nsl_gethostbyname = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 +$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then - echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 -echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 +$as_echo_n "checking for gethostbyname in -lbsd... " >&6; } if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { -gethostbyname (); +return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_bsd_gethostbyname=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_bsd_gethostbyname=no + ac_cv_lib_bsd_gethostbyname=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 -if test $ac_cv_lib_bsd_gethostbyname = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 +$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } +if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi @@ -4244,405 +5184,477 @@ fi # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. - echo "$as_me:$LINENO: checking for connect" >&5 -echo $ECHO_N "checking for connect... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for connect" >&5 +$as_echo_n "checking for connect... " >&6; } if test "${ac_cv_func_connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +/* Define connect to an innocuous variant, in case declares connect. + For example, HP-UX 11i declares gettimeofday. */ +#define connect innocuous_connect + /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ + #ifdef __STDC__ # include #else # include #endif -/* Override any gcc2 internal prototype to avoid an error. */ + +#undef connect + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_connect) || defined (__stub___connect) +#if defined __stub_connect || defined __stub___connect choke me -#else -char (*f) () = connect; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != connect; +return connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_connect=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_connect=no + ac_cv_func_connect=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 -echo "${ECHO_T}$ac_cv_func_connect" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 +$as_echo "$ac_cv_func_connect" >&6; } if test $ac_cv_func_connect = no; then - echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 -echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 +$as_echo_n "checking for connect in -lsocket... " >&6; } if test "${ac_cv_lib_socket_connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char connect (); int main () { -connect (); +return connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_socket_connect=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_socket_connect=no + ac_cv_lib_socket_connect=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 -if test $ac_cv_lib_socket_connect = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 +$as_echo "$ac_cv_lib_socket_connect" >&6; } +if test "x$ac_cv_lib_socket_connect" = x""yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. - echo "$as_me:$LINENO: checking for remove" >&5 -echo $ECHO_N "checking for remove... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for remove" >&5 +$as_echo_n "checking for remove... " >&6; } if test "${ac_cv_func_remove+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +/* Define remove to an innocuous variant, in case declares remove. + For example, HP-UX 11i declares gettimeofday. */ +#define remove innocuous_remove + /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ + #ifdef __STDC__ # include #else # include #endif -/* Override any gcc2 internal prototype to avoid an error. */ + +#undef remove + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char remove (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_remove) || defined (__stub___remove) +#if defined __stub_remove || defined __stub___remove choke me -#else -char (*f) () = remove; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != remove; +return remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_remove=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_remove=no + ac_cv_func_remove=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 -echo "${ECHO_T}$ac_cv_func_remove" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 +$as_echo "$ac_cv_func_remove" >&6; } if test $ac_cv_func_remove = no; then - echo "$as_me:$LINENO: checking for remove in -lposix" >&5 -echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for remove in -lposix" >&5 +$as_echo_n "checking for remove in -lposix... " >&6; } if test "${ac_cv_lib_posix_remove+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char remove (); int main () { -remove (); +return remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_posix_remove=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_posix_remove=no + ac_cv_lib_posix_remove=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 -echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 -if test $ac_cv_lib_posix_remove = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 +$as_echo "$ac_cv_lib_posix_remove" >&6; } +if test "x$ac_cv_lib_posix_remove" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. - echo "$as_me:$LINENO: checking for shmat" >&5 -echo $ECHO_N "checking for shmat... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for shmat" >&5 +$as_echo_n "checking for shmat... " >&6; } if test "${ac_cv_func_shmat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +/* Define shmat to an innocuous variant, in case declares shmat. + For example, HP-UX 11i declares gettimeofday. */ +#define shmat innocuous_shmat + /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ + #ifdef __STDC__ # include #else # include #endif -/* Override any gcc2 internal prototype to avoid an error. */ + +#undef shmat + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char shmat (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_shmat) || defined (__stub___shmat) +#if defined __stub_shmat || defined __stub___shmat choke me -#else -char (*f) () = shmat; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != shmat; +return shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_shmat=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_shmat=no + ac_cv_func_shmat=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 -echo "${ECHO_T}$ac_cv_func_shmat" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 +$as_echo "$ac_cv_func_shmat" >&6; } if test $ac_cv_func_shmat = no; then - echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 -echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 +$as_echo_n "checking for shmat in -lipc... " >&6; } if test "${ac_cv_lib_ipc_shmat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char shmat (); int main () { -shmat (); +return shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_ipc_shmat=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_ipc_shmat=no + ac_cv_lib_ipc_shmat=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 -echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 -if test $ac_cv_lib_ipc_shmat = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 +$as_echo "$ac_cv_lib_ipc_shmat" >&6; } +if test "x$ac_cv_lib_ipc_shmat" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi @@ -4658,61 +5670,72 @@ fi # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry - echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 -echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 +$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char IceConnectionNumber (); int main () { -IceConnectionNumber (); +return IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_ICE_IceConnectionNumber=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_ICE_IceConnectionNumber=no + ac_cv_lib_ICE_IceConnectionNumber=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 -echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 -if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } +if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi @@ -4720,24 +5743,24 @@ fi fi -ac_ext=cc +ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -echo "$as_me:$LINENO: checking whether we are enabling debug-mode" >&5 -echo $ECHO_N "checking whether we are enabling debug-mode... $ECHO_C" >&6 -# Check whether --enable-debug or --disable-debug was given. +{ $as_echo "$as_me:$LINENO: checking whether we are enabling debug-mode" >&5 +$as_echo_n "checking whether we are enabling debug-mode... " >&6; } +# Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then - enableval="$enable_debug" - + enableval=$enable_debug; else enable_debug=no -fi; -echo "$as_me:$LINENO: result: $enable_debug" >&5 -echo "${ECHO_T}$enable_debug" >&6 +fi + +{ $as_echo "$as_me:$LINENO: result: $enable_debug" >&5 +$as_echo "$enable_debug" >&6; } if test x$enable_debug = xyes; then @@ -4748,50 +5771,74 @@ _ACEOF CXXFLAGS="-g -O0 -Wall -Werror" fi -echo "$as_me:$LINENO: checking whether we are enabling gprof profiling-support" >&5 -echo $ECHO_N "checking whether we are enabling gprof profiling-support... $ECHO_C" >&6 -# Check whether --enable-gprof or --disable-gprof was given. +{ $as_echo "$as_me:$LINENO: checking whether we are enabling gprof profiling-support" >&5 +$as_echo_n "checking whether we are enabling gprof profiling-support... " >&6; } +# Check whether --enable-gprof was given. if test "${enable_gprof+set}" = set; then - enableval="$enable_gprof" - + enableval=$enable_gprof; else enable_gprof=no -fi; -echo "$as_me:$LINENO: result: $enable_gprof" >&5 -echo "${ECHO_T}$enable_gprof" >&6 +fi + +{ $as_echo "$as_me:$LINENO: result: $enable_gprof" >&5 +$as_echo "$enable_gprof" >&6; } if test x$enable_gprof = xyes; then CXXFLAGS="$CXXFLAGS -pg" fi -echo "$as_me:$LINENO: checking whether we are enabling FunctionCheck profiling" >&5 -echo $ECHO_N "checking whether we are enabling FunctionCheck profiling... $ECHO_C" >&6 -# Check whether --enable-fcheck or --disable-fcheck was given. +{ $as_echo "$as_me:$LINENO: checking whether we are enabling FunctionCheck profiling" >&5 +$as_echo_n "checking whether we are enabling FunctionCheck profiling... " >&6; } +# Check whether --enable-fcheck was given. if test "${enable_fcheck+set}" = set; then - enableval="$enable_fcheck" - + enableval=$enable_fcheck; else enable_fcheck=no -fi; -echo "$as_me:$LINENO: result: $enable_fcheck" >&5 -echo "${ECHO_T}$enable_fcheck" >&6 +fi + +{ $as_echo "$as_me:$LINENO: result: $enable_fcheck" >&5 +$as_echo "$enable_fcheck" >&6; } if test x$enable_fcheck = xyes; then CXXFLAGS="`fc-config --cflags`" LIBS="$LIBS `fc-config --libs`" fi +{ $as_echo "$as_me:$LINENO: checking whether we want to compile the X11 client" >&5 +$as_echo_n "checking whether we want to compile the X11 client... " >&6; } +# Check whether --enable-x11 was given. +if test "${enable_x11+set}" = set; then + enableval=$enable_x11; +else + enable_x11=yes +fi + +{ $as_echo "$as_me:$LINENO: result: $enable_x11" >&5 +$as_echo "$enable_x11" >&6; } + +{ $as_echo "$as_me:$LINENO: checking whether we want to compile the glut client" >&5 +$as_echo_n "checking whether we want to compile the glut client... " >&6; } +# Check whether --enable-glut was given. +if test "${enable_glut+set}" = set; then + enableval=$enable_glut; +else + enable_glut=yes +fi + +{ $as_echo "$as_me:$LINENO: result: $enable_glut" >&5 +$as_echo "$enable_glut" >&6; } -ac_ext=cc + +ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" @@ -4806,7 +5853,6 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4817,39 +5863,39 @@ cat >>conftest.$ac_ext <<_ACEOF #else # include #endif - Syntax error + Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4857,33 +5903,34 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -4901,8 +5948,8 @@ fi else ac_cv_prog_CXXCPP=$CXXCPP fi -echo "$as_me:$LINENO: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6 +{ $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do @@ -4913,7 +5960,6 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4924,39 +5970,39 @@ cat >>conftest.$ac_ext <<_ACEOF #else # include #endif - Syntax error + Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4964,33 +6010,34 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -4999,42 +6046,162 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 -echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +$as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi -ac_ext=cc +ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + $as_echo_n "(cached) " >&6 else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5054,30 +6221,36 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5099,7 +6272,6 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5124,21 +6296,21 @@ if test $ac_cv_header_stdc = yes; then : else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif @@ -5149,37 +6321,51 @@ main () int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + || toupper (i) != TOUPPER (i)) + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -5199,16 +6385,15 @@ fi for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h + inttypes.h stdint.h unistd.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5219,31 +6404,42 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -5252,19 +6448,18 @@ done if test "${ac_cv_header_sstream+set}" = set; then - echo "$as_me:$LINENO: checking for sstream" >&5 -echo $ECHO_N "checking for sstream... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for sstream" >&5 +$as_echo_n "checking for sstream... " >&6; } if test "${ac_cv_header_sstream+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_sstream" >&5 -echo "${ECHO_T}$ac_cv_header_sstream" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sstream" >&5 +$as_echo "$ac_cv_header_sstream" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking sstream usability" >&5 -echo $ECHO_N "checking sstream usability... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking sstream usability" >&5 +$as_echo_n "checking sstream usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5274,33 +6469,39 @@ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking sstream presence" >&5 -echo $ECHO_N "checking sstream presence... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking sstream presence" >&5 +$as_echo_n "checking sstream presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5308,83 +6509,76 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } # So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: sstream: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: sstream: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: sstream: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: sstream: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: sstream: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: sstream: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: sstream: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: sstream: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes ;; - no:yes ) - { echo "$as_me:$LINENO: WARNING: sstream: present but cannot be compiled" >&5 -echo "$as_me: WARNING: sstream: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: sstream: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: sstream: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: sstream: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: sstream: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: sstream: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: sstream: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: sstream: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: sstream: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: sstream: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: sstream: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: sstream: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: sstream: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: sstream: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: sstream: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: sstream: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: sstream: in the future, the compiler will take precedence" >&2;} + ;; esac -echo "$as_me:$LINENO: checking for sstream" >&5 -echo $ECHO_N "checking for sstream... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for sstream" >&5 +$as_echo_n "checking for sstream... " >&6; } if test "${ac_cv_header_sstream+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_cv_header_sstream=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_sstream" >&5 -echo "${ECHO_T}$ac_cv_header_sstream" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sstream" >&5 +$as_echo "$ac_cv_header_sstream" >&6; } fi -if test $ac_cv_header_sstream = yes; then +if test "x$ac_cv_header_sstream" = x""yes; then : else - { echo "$as_me:$LINENO: using replacement sstream from compatlib/" >&5 -echo "$as_me: using replacement sstream from compatlib/" >&6;} + { $as_echo "$as_me:$LINENO: using replacement sstream from compatlib/" >&5 +$as_echo "$as_me: using replacement sstream from compatlib/" >&6;} CXXFLAGS="$CXXFLAGS -Icompatlib/" fi @@ -5403,61 +6597,72 @@ _ACEOF -echo "$as_me:$LINENO: checking for gzopen in -lz" >&5 -echo $ECHO_N "checking for gzopen in -lz... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for gzopen in -lz" >&5 +$as_echo_n "checking for gzopen in -lz... " >&6; } if test "${ac_cv_lib_z_gzopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char gzopen (); int main () { -gzopen (); +return gzopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_z_gzopen=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_z_gzopen=no + ac_cv_lib_z_gzopen=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzopen" >&5 -echo "${ECHO_T}$ac_cv_lib_z_gzopen" >&6 -if test $ac_cv_lib_z_gzopen = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzopen" >&5 +$as_echo "$ac_cv_lib_z_gzopen" >&6; } +if test "x$ac_cv_lib_z_gzopen" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF @@ -5475,66 +6680,79 @@ if test -n "$X_DISPLAY_MISSING"; then echo "### not installed?" echo "" else - ConstruoTargets="$ConstruoTargets construo.x11" + if test x$enable_x11 = xyes; then + ConstruoTargets="$ConstruoTargets construo.x11" + fi x11_LIBS="$x11_LIBS $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11" x11_CXXFLAGS="$CXXFLAGS $X_CFLAGS" fi -echo "$as_me:$LINENO: checking for XMissingExtension in -lXext" >&5 -echo $ECHO_N "checking for XMissingExtension in -lXext... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for XMissingExtension in -lXext" >&5 +$as_echo_n "checking for XMissingExtension in -lXext... " >&6; } if test "${ac_cv_lib_Xext_XMissingExtension+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXext $x11_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char XMissingExtension (); int main () { -XMissingExtension (); +return XMissingExtension (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_Xext_XMissingExtension=yes + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_Xext_XMissingExtension=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_Xext_XMissingExtension=no + ac_cv_lib_Xext_XMissingExtension=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XMissingExtension" >&5 -echo "${ECHO_T}$ac_cv_lib_Xext_XMissingExtension" >&6 -if test $ac_cv_lib_Xext_XMissingExtension = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XMissingExtension" >&5 +$as_echo "$ac_cv_lib_Xext_XMissingExtension" >&6; } +if test "x$ac_cv_lib_Xext_XMissingExtension" = x""yes; then x11_LIBS="$x11_LIBS -lXext" cat >>confdefs.h <<\_ACEOF @@ -5544,61 +6762,72 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for XF86VidModeSwitchToMode in -lXxf86vm" >&5 -echo $ECHO_N "checking for XF86VidModeSwitchToMode in -lXxf86vm... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for XF86VidModeSwitchToMode in -lXxf86vm" >&5 +$as_echo_n "checking for XF86VidModeSwitchToMode in -lXxf86vm... " >&6; } if test "${ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXxf86vm $x11_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char XF86VidModeSwitchToMode (); int main () { -XF86VidModeSwitchToMode (); +return XF86VidModeSwitchToMode (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode=no + ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" >&5 -echo "${ECHO_T}$ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" >&6 -if test $ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" >&5 +$as_echo "$ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" >&6; } +if test "x$ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" = x""yes; then x11_LIBS="$x11_LIBS -lXxf86vm" cat >>confdefs.h <<\_ACEOF @@ -5611,126 +6840,152 @@ fi -echo "$as_me:$LINENO: checking for glutMainLoop in -lglut" >&5 -echo $ECHO_N "checking for glutMainLoop in -lglut... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for glutMainLoop in -lglut" >&5 +$as_echo_n "checking for glutMainLoop in -lglut... " >&6; } if test "${ac_cv_lib_glut_glutMainLoop+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lglut $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char glutMainLoop (); int main () { -glutMainLoop (); +return glutMainLoop (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_glut_glutMainLoop=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_glut_glutMainLoop=no + ac_cv_lib_glut_glutMainLoop=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_glut_glutMainLoop" >&5 -echo "${ECHO_T}$ac_cv_lib_glut_glutMainLoop" >&6 -if test $ac_cv_lib_glut_glutMainLoop = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_glut_glutMainLoop" >&5 +$as_echo "$ac_cv_lib_glut_glutMainLoop" >&6; } +if test "x$ac_cv_lib_glut_glutMainLoop" = x""yes; then - ConstruoTargets="$ConstruoTargets construo.glut" + if test x$enable_glut = xyes; then + ConstruoTargets="$ConstruoTargets construo.glut" + fi glut_LIBS="-lglut" fi -echo "$as_me:$LINENO: checking for glutMainLoop in -lfreeglut-1.3" >&5 -echo $ECHO_N "checking for glutMainLoop in -lfreeglut-1.3... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for glutMainLoop in -lfreeglut-1.3" >&5 +$as_echo_n "checking for glutMainLoop in -lfreeglut-1.3... " >&6; } if test "${ac_cv_lib_freeglut_1_3_glutMainLoop+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfreeglut-1.3 $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char glutMainLoop (); int main () { -glutMainLoop (); +return glutMainLoop (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_freeglut_1_3_glutMainLoop=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_freeglut_1_3_glutMainLoop=no + ac_cv_lib_freeglut_1_3_glutMainLoop=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_freeglut_1_3_glutMainLoop" >&5 -echo "${ECHO_T}$ac_cv_lib_freeglut_1_3_glutMainLoop" >&6 -if test $ac_cv_lib_freeglut_1_3_glutMainLoop = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_freeglut_1_3_glutMainLoop" >&5 +$as_echo "$ac_cv_lib_freeglut_1_3_glutMainLoop" >&6; } +if test "x$ac_cv_lib_freeglut_1_3_glutMainLoop" = x""yes; then - ConstruoTargets="$ConstruoTargets construo.freeglut" + if test x$enable_glut = xyes; then + ConstruoTargets="$ConstruoTargets construo.freeglut" + fi freeglut_LIBS="-lfreeglut-1.3" @@ -5750,7 +7005,7 @@ fi - ac_config_files="$ac_config_files Makefile examples/Makefile" +ac_config_files="$ac_config_files Makefile examples/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -5770,39 +7025,59 @@ _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. +# So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -{ +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} | + esac | + sort +) | sed ' + /^ac_cv_env_/b end t clear - : clear + :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - echo "not updating unwritable cache $cache_file" + { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -5811,32 +7086,18 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -5844,33 +7105,34 @@ LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. +$as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} +ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF +{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -5883,57 +7145,141 @@ ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi # Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -5941,200 +7287,168 @@ fi # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# CDPATH. +$as_unset CDPATH -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -if expr a : '\(a\)' >/dev/null 2>&1; then +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# CDPATH. -$as_unset CDPATH exec 6>&1 -# Open the log real soon, to keep \$[0] and so on meaningful, and to +# Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - +# values after options handling. +ac_log=" This file was extended by construo $as_me 0.2.2, which was -generated by GNU Autoconf 2.57. Invocation command line was +generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -6142,44 +7456,44 @@ generated by GNU Autoconf 2.57. Invocation command line was CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + _ACEOF -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" -cat >>$CONFIG_STATUS <<\_ACEOF +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. -Usage: $0 [OPTIONS] [FILE]... +Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages + -V, --version print version number and configuration settings, then exit + -q, --quiet, --silent + do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] + --file=FILE[:TEMPLATE] instantiate the configuration file FILE - --header=FILE[:TEMPLATE] + --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: @@ -6192,84 +7506,84 @@ Configuration commands: $config_commands Report bugs to ." -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ construo config.status 0.2.2 -configured by $0, generated by GNU Autoconf 2.57, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.63, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. +Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; - -*) + *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { $as_echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} + -*) { $as_echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" ;; + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; esac shift @@ -6283,40 +7597,54 @@ if $ac_cs_silent; then fi _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" fi _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 -cat >>$CONFIG_STATUS <<_ACEOF +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # -# INIT-COMMANDS section. +# INIT-COMMANDS # - AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF +# Handling of arguments. for ac_config_target in $ac_config_targets do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; + + *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done + # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -6328,637 +7656,642 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, +# simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. $debug || { - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } - # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") } || { - echo "$me: cannot create a temporary directory in ." >&2 + $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=' ' +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -# -# CONFIG_FILES section. -# +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@CYGPATH_W@,$CYGPATH_W,;t t -s,@PACKAGE@,$PACKAGE,;t t -s,@VERSION@,$VERSION,;t t -s,@ACLOCAL@,$ACLOCAL,;t t -s,@AUTOCONF@,$AUTOCONF,;t t -s,@AUTOMAKE@,$AUTOMAKE,;t t -s,@AUTOHEADER@,$AUTOHEADER,;t t -s,@MAKEINFO@,$MAKEINFO,;t t -s,@AMTAR@,$AMTAR,;t t -s,@install_sh@,$install_sh,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t -s,@AWK@,$AWK,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@am__leading_dot@,$am__leading_dot,;t t -s,@CXX@,$CXX,;t t -s,@CXXFLAGS@,$CXXFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CXX@,$ac_ct_CXX,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@DEPDIR@,$DEPDIR,;t t -s,@am__include@,$am__include,;t t -s,@am__quote@,$am__quote,;t t -s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -s,@CXXDEPMODE@,$CXXDEPMODE,;t t -s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t -s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@CCDEPMODE@,$CCDEPMODE,;t t -s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t -s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t -s,@CPP@,$CPP,;t t -s,@X_CFLAGS@,$X_CFLAGS,;t t -s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t -s,@X_LIBS@,$X_LIBS,;t t -s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t -s,@CXXCPP@,$CXXCPP,;t t -s,@EGREP@,$EGREP,;t t -s,@x11_LIBS@,$x11_LIBS,;t t -s,@x11_CXXFLAGS@,$x11_CXXFLAGS,;t t -s,@glut_LIBS@,$glut_LIBS,;t t -s,@freeglut_LIBS@,$freeglut_LIBS,;t t -s,@ConstruoTargets@,$ConstruoTargets,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +$as_echo "$as_me: error: could not setup config files machinery" >&2;} + { (exit 1); exit 1; }; } +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 +$as_echo "$as_me: error: could not setup config headers machinery" >&2;} + { (exit 1); exit 1; }; } +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 +$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + ac_file_inputs="$ac_file_inputs '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; + esac + ;; esac - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || + ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - ac_builddir=. -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + case $ac_mode in + :F) + # + # CONFIG_FILE + # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub $extrasub _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } -# -# CONFIG_HEADER section. -# +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + rm -f "$tmp/stdin" case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in + ;; + :H) + # + # CONFIG_HEADER + # if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } fi else - cat $tmp/config.h - rm -f $tmp/config.h + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 +$as_echo "$as_me: error: could not create -" >&2;} + { (exit 1); exit 1; }; } fi -# Compute $ac_file's index in $config_headers. +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in - $ac_file | $ac_file:* ) + $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done -echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || -$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X$ac_file : 'X\(//\)[^/]' \| \ - X$ac_file : 'X\(//\)$' \| \ - X$ac_file : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X$ac_file | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'`/stamp-h$_am_stamp_count -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - ac_builddir=. + :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. @@ -6966,100 +8299,137 @@ echo "$as_me: executing $ac_dest commands" >&6;} # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` else continue fi - grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n -e '/^U = / s///p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # We invoke sed twice because it is the simplest approach to - # changing $(DEPDIR) to its actual value in the expansion. - for file in `sed -n -e ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || + fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p $dirpart/$fdir - else - as_dir=$dirpart/$fdir + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; + esac -done -_ACEOF +done # for ac_tag -cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. @@ -7081,6 +8451,10 @@ if test "$no_create" != yes; then # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi echo "" diff --git a/examples/Makefile.in b/examples/Makefile.in index b2e2388..15eada3 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.7.3 from Makefile.am. +# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -# Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -14,15 +14,10 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c @@ -34,11 +29,31 @@ POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : - -pkgdatadir = $(datadir)/games/@PACKAGE@/examples +subdir = examples +DIST_COMMON = $(nobase_dist_pkgdata_DATA) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pkgdatadir)" +nobase_dist_pkgdataDATA_INSTALL = $(install_sh_DATA) +DATA = $(nobase_dist_pkgdata_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +pkgdatadir = $(datadir)/@PACKAGE@/examples ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -62,6 +77,8 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -71,6 +88,7 @@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -84,80 +102,109 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ +XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ freeglut_LIBS = @freeglut_LIBS@ glut_LIBS = @glut_LIBS@ host_alias = @host_alias@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ +mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ x11_CXXFLAGS = @x11_CXXFLAGS@ x11_LIBS = @x11_LIBS@ - nobase_dist_pkgdata_DATA = *.construo choh/*.construo choh2/*.construo -subdir = examples -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = -DATA = $(nobase_dist_pkgdata_DATA) - -DIST_COMMON = $(nobase_dist_pkgdata_DATA) Makefile.am Makefile.in all: all-am .SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu examples/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -uninstall-info-am: -nobase_dist_pkgdataDATA_INSTALL = $(install_sh_DATA) +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-nobase_dist_pkgdataDATA: $(nobase_dist_pkgdata_DATA) @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) - @list='$(nobase_dist_pkgdata_DATA)'; for p in $$list; do \ + test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" + @$(am__vpath_adj_setup) \ + list='$(nobase_dist_pkgdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f="$$p"; \ - echo " $(nobase_dist_pkgdataDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f"; \ - $(nobase_dist_pkgdataDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f; \ + $(am__vpath_adj) \ + echo " $(nobase_dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ + $(nobase_dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ done uninstall-nobase_dist_pkgdataDATA: @$(NORMAL_UNINSTALL) - @list='$(nobase_dist_pkgdata_DATA)'; for p in $$list; do \ - f="$$p"; \ - echo " rm -f $(DESTDIR)$(pkgdatadir)/$$f"; \ - rm -f $(DESTDIR)$(pkgdatadir)/$$f; \ + @$(am__vpath_adj_setup) \ + list='$(nobase_dist_pkgdata_DATA)'; for p in $$list; do \ + $(am__vpath_adj) \ + echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ done tags: TAGS TAGS: @@ -165,29 +212,23 @@ TAGS: ctags: CTAGS CTAGS: -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - $(mkinstalldirs) $(distdir)/choh $(distdir)/choh2 - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ @@ -201,10 +242,10 @@ distdir: $(DISTFILES) check-am: all-am check: check-am all-am: Makefile $(DATA) - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) - + for dir in "$(DESTDIR)$(pkgdatadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done install: install-am install-exec: install-exec-am install-data: install-data-am @@ -216,7 +257,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -224,7 +265,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -234,29 +275,39 @@ clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am - + -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: +html: html-am + info: info-am info-am: install-data-am: install-nobase_dist_pkgdataDATA +install-dvi: install-dvi-am + install-exec-am: +install-html: install-html-am + install-info: install-info-am install-man: +install-pdf: install-pdf-am + +install-ps: install-ps-am + installcheck-am: maintainer-clean: maintainer-clean-am - + -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am @@ -271,16 +322,20 @@ ps: ps-am ps-am: -uninstall-am: uninstall-info-am uninstall-nobase_dist_pkgdataDATA +uninstall-am: uninstall-nobase_dist_pkgdataDATA + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-nobase_dist_pkgdataDATA install-strip installcheck \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-nobase_dist_pkgdataDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ - pdf-am ps ps-am uninstall uninstall-am uninstall-info-am \ + pdf-am ps ps-am uninstall uninstall-am \ uninstall-nobase_dist_pkgdataDATA -- 2.11.4.GIT