Getting started with 2d physics system of shapes connected with "springs"?

Hi!

I need to simulate a 2d system consisting of different shapes that are attached to each others with “springs”. The forces at work should position & rotate the shapes to even out the “pressure” on the system while maintaining a right angle between their line segments and the “springs” by bending the springs accordingly… and stuff like that.

Is there something better for this sort of thing than starting out with box2d? I have not delved into the requirements very deeply as of yet, but on a first glance box2d does not really look like the right tool for the job and would leave me to figure out low level math “Newton–Raphson method” stuff and such on my own to implement some of the forces at work (which considering that I don’t know what the “Newton–Raphson method” is as of yet sounds like an awful lot of reading ahead).

If someone could just list a few relevant math/physics/programming terms that I should be looking up would be great, too - maybe I’m just not finding what I need to use/do/read/learn because my english lacks the right vocabulary (+search terms ;)) when it comes to things like that.

I used to do springs via hooke’s law.

I’m not sure but I believe it’s F = -kx.

x is the 1d distance
k is a constant
F is the force

Be careful though since spring physics tend to explode with minimal changes.

I’ll try to find my old c++ spring simulator( doesn’t use sqrt too.

Or you could go ahead and google “hugo elias” he’s got a nice article in regard to that.

Oh god yes, math is horrible xD

In Addition to that “hugo elias stuff” (thanks!) I found this which looks as if it would be very helpful if I understood half of it (and the wikipedia pages it lead me to):
http://wismuth.com/elas/elasticity.html

So for now, I did some “Prototyping” in jmonkey. My shapes start rotating towards connected shapes and organizing themselves which looks fine at first, but then they just take off and fly away without me in a well organized “flock” of rotating geometries xD

Does anyone know something that’s better suited for 2d physics prototyping with java? Couldn’t find a single 2d engine that has rendering of physics nodes already implemented… might try one of the c++ prototyping engines if I don’t manage to understand that “spring stuff” while playing with jmonkey.

Hmmm… after I fixed some bad Quaternions (I hate those things!), it looks to me like the forces work almost as intended. But the system fails to reach an equilibrium. It looks like the physics are ok, so it’s probably a concept problem (and not a code problem).

The forces at work are:

  • 50% dampening
  • a small, fixed force pushing all object away from those they’re not connected (to keep them from cluttering up - but a lot smaller than the forces of the “springs”.
  • a linear force that pulls the connection points towards the place where the end of the “springs end” should be and is proportional to the difference between the “should-be” position and the current position. This force reaches 0 if the point reaches the location where it should be (relative to the point on the other geometry it’s connected to with this “pseydo-spring”).

Now - in my mind, this system should reach a state where all the forces are either 0 (because the points are where the springs want them to be) or cancel each others out (because… uhm… well… that’s the way it works in my head? xD). But that’s not what’s happening - instead some objects keep on rotating or even accelerating. Now the questions are:

  • What am I missing?
  • Does that look “springy” to you?
  • Can someone with a better visual / physics thinking than me see what’s happening to the rotating bodies? Looks to me like it might simply be related to the way I connected the objects… but if there’s some factor that makes the connections / the equilibrium impossible then I fail to wrap my brain around it ATM.


http://i.videobam.com/dYQPv.jpg

( Btw: Still searching for an “engine / library / tools” that’s better suited for things like this / has one dimension less to worry about… and stuff. Should have made 2 seperate topics I guess :confused: well, too late now^^)