[Edu-sig] KineticsKit - A Physics-Based General 3D Mass-Spring System

Markus Gritsch gritsch@iue.tuwien.ac.at
Wed, 10 Jan 2001 09:25:41 +0100


This is a multi-part message in MIME format.
--------------D98C2BE375E4DFD36440C4D2
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi!

I'd like to present you KineticsKit - A Physics-Based General 3D
Mass-Spring System. It's purely written in Python and has several
example programs included.  Just give it a try - you will like it.

Requirements:
-------------
Python 2.0 or higher
VPython available from
http://virtualphoton.pc.cc.cmu.edu/projects/visual/

Objective:
----------
KineticsKit provides some classes to simulate the behaviour of a 3D
mass-spring-system.  It can be used to investigate some basic
kinetics, but I
wrote it mostly for the fun of programming it and playing with it.

Usage:
------
First a System has to be generated.  The System has several attributes
like
gravity, viscosity and timestep which must be given in the
constructor.  Some
of them are mandatory (timestep), the rest of them are optional.

Next Masses are generated and inserted into the System.  Masses also
have lots
of attributes like m, pos, if it should be fixed at its initial
location, its
initial velocity and the color.  Most of them are implemented as
keyword
arguments and can thus be omitted if they are not used.

After this, the Masses can be connected with Springs.  There is no
restriction
in making the connections so one Mass can be connected with several
others.
A Spring needs to know which two Masses it should connect, and its
spring-constant.  The rest of the constructor arguments are again
implemented
as keyword arguments, but I recommend to take a look at them.  They
are useful
to tense the Spring, specify a damping value or give it a nicer color.

Finally the System has to be started and kept running with an infinite
loop.
Interaction with the system is possible with the mouse.  A Mass is
picked by
clicking at it.  It can be moved around and the rest of the system
responds to
the movement.  To release the Mass the mouse must be clicked again.
"""A Physics-Based General 3D Mass-Spring System.
by Markus Gritsch (gritsch@iue.tuwien.ac.at)

Objective:
----------
KineticsKit provides some classes to simulate the behaviour of a 3D
mass-spring-system.  It can be used to investigate some basic
kinetics, but I
wrote it mostly for the fun of programming it and playing with it.

Usage:
------
First a System has to be generated.  The System has several attributes
like
gravity, viscosity and timestep which must be given in the
constructor.  Some
of them are mandatory (timestep), the rest of them are optional.

Next Masses are generated and inserted into the System.  Masses also
have lots
of attributes like m, pos, if it should be fixed at its initial
location, its
initial velocity and the color.  Most of them are implemented as
keyword
arguments and can thus be omitted if they are not used.

After this, the Masses can be connected with Springs.  There is no
restriction
in making the connections so one Mass can be connected with several
others.
A Spring needs to know which two Masses it should connect, and its
spring-constant.  The rest of the constructor arguments are again
implemented
as keyword arguments, but I recommend to take a look at them.  They
are useful
to tense the Spring, specify a damping value or give it a nicer color.

Finally the System has to be started and kept running with an infinite
loop.
Interaction with the system is possible with the mouse.  A Mass is
picked by
clicking at it.  It can be moved around and the rest of the system
responds to
the movement.  To release the Mass the mouse must be clicked again.

Zooming / rotating of the scene is also done with the mouse by holding
the
left / right mouse button down.

For further details please have a look at the example programs and the

constructors of the classes System, Mass and Spring.  Have fun!

--
                                                                      |\/\/\/|
/------------------------------------------------------------------\  |      |
| Markus GRITSCH                 | phone:    +43 / 1 / 58801-36015 |  |      |
| Institute for Microelectronics | cellular: +43 / 676 / 4973431   |  | (o)(o)
| Technical University of Vienna | fax:      +43 / 1 / 58801-36099 |  C      _)
| Gusshausstrasse  27-29 / E360  | email: gritsch@iue.tuwien.ac.at |   | ,___|
| A-1040  Vienna / AUSTRIA       | SMS:   436764973431@max.mail.at |   |   /
\------------------------------------------------------------------/  /____\
                                                                     /      \
"Computers let you make more mistakes faster than any other invention in human
 history, with the possible exception of handguns and tequila."
                                                               Mitch Radcliffe



--------------D98C2BE375E4DFD36440C4D2
Content-Type: application/x-zip-compressed;
 name="KineticsKit.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="KineticsKit.zip"

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
0qOiDmOVD+MdSv9d30upbCbDFgMdo/o9Is5jVvVn+Yz+Qy+rqVOBepEk/afeRA+e4sGCeqXA
G1AVv8ka1Li6o9NKVoorGisb4TnTUYqrlBRXWnCDS9Xi2/N3zOXde6EklVjfPF4Pe00/bPMb
vziRh7+q3utwIL97empC0+E3L42G3DvsYkfq9YI2ZS95CZNdoZVKkaGRSb8KUtT4b3VAbS9m
WdUPHlFeP1WF11fnH52/c/6OeXv+rgPWfwNQSwMEFAAAAAgAoEEqKpctUIQMCwAAmCUAAA4A
AABLaW5ldGljc0tpdC5wee1ZbY/bNhL+rl/BS3CInXq13m0LFAF8uFyDTYNee8X1rh8uCAyu
RNu8lURXpPzy7++ZISVRsnY3BQrclxqJVyKH8/rMcEi/ePHirfhpd7Y6s1d/k1bl4r2qVC0L
8eU78YO09urnfa2rrfj5bJ0q0+T+jOH6obHifa2dzXZitvUPf9WNSl1z1KpKZZZKN0+Sf9z/
V2VOH9Sb5Kr7JN/rSjlI/F47sa/NQefKCmtKJbICIvHijLC6bArplHA7Je7VTh60aWphNkJC
t6Qk3SzrdmW9bkJ8cCKTFahFQ6aAi64Oyjq9JUYs4V7CVvEQNFiI+8aJD8mxNiCAOqWxrjiL
jalZ7qapSCKU3NayLMkRIJJVLvaFPNPrUbsdxtIk+beV287O5E7XFpTBb2In2ShotmX/OpVD
339BRERg1YFdL52rNRSDIwr9oBLIPmh3XoiDtpmxeGQVnC5hm9qL404jDmUDgSQA7q5gOBuQ
mcq6usmcqSHvZ3gggT2YKYWslSjBR2LuLGYtt/mCF9Z4ETGp2TttKlnA0h/VyTE4oCBNdSax
WrqyqqYXXcFi15kI+e2awhoYfFCiMM6SQiOLRbkQe4Po6A352+5MU+Rk20afSIrDqAV/7TTc
VZhMkm4LGk3a0YPCeOcqdkXBTvjBjCzT5b5QparYACse1Plo6jyR9bahUcscCFduB9hDC1Nq
xwYykzMzqYxj0ME9bzdOEXy09a4MVgdkIiIVcgLLGTo+vawHAyljwYq9X+uMrIJBCNMDYS0E
lJZjglJGmMrzf4R7iyiDpbVNk7dBnqiUyhmRD5U5BgC5o2l17Z0eGC58aOHfkHMMLFm5gOII
LjHmROREGCe3EtZE/k56f/ekISnBMzMlRjiRnQQsJGJtHij+FDwv2rsfrt80RUKECvjzsGNN
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
dGUucHlQSwUGAAAAAAgACAAZAgAAlikAAAAA
--------------D98C2BE375E4DFD36440C4D2--