From: Miriam Ruiz Date: Sun, 7 Dec 2008 01:49:48 +0000 (+0100) Subject: Imported vanilla contents from upstream X-Git-Url: https://repo.or.cz/w/construo.git/commitdiff_plain/bea81a676fa2c461a784f2818213901670fe4810 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 --- bea81a676fa2c461a784f2818213901670fe4810 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 */