Java-Gaming.org Hi !
 Featured games (84) games approved by the League of Dukes Games in Showcase (604) Games in Android Showcase (171) games submitted by our members Games in WIP (653) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
Pages: [1]
 ignore  |  Print
 Getting started with 2d physics system of shapes connected with "springs"?  (Read 1044 times) 0 Members and 1 Guest are viewing this topic.
jam

Senior Newbie

 « Posted 2013-05-09 10:45:10 »

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.
relminator
 « Reply #1 - Posted 2013-05-09 13:52:30 »

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.
jam

Senior Newbie

 « Reply #2 - Posted 2013-05-09 16:56:27 »

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.
jam

Senior Newbie

 « Reply #3 - Posted 2013-05-10 09:42:20 »

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.

( 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 :/ well, too late now^^)
Pages: [1]
 ignore  |  Print

You cannot reply to this message, because it is very, very old.

 SHC (27 views) 2015-08-01 00:58:20 Jesse (19 views) 2015-07-29 01:35:27 Riven (40 views) 2015-07-27 13:38:00 Riven (21 views) 2015-07-27 12:35:20 Riven (24 views) 2015-07-27 09:26:13 Riven (14 views) 2015-07-27 09:23:39 BurntPizza (36 views) 2015-07-24 21:14:37 BurntPizza (46 views) 2015-07-24 19:06:39 BurntPizza (30 views) 2015-07-24 03:06:53 NoxInc (37 views) 2015-07-22 19:16:53
 theagentd 52x wessles 49x basil_ 35x KaiHH 26x orangepascal 25x ags1 21x Riven 19x mooman219 17x bornander 14x KudoDEV 13x princec 11x Jesse 11x CelestialCreator 11x klaus 10x pquiring 10x Spasi 8x
 List of Learning Resourcesby gouessej2015-07-09 08:29:36How Do I Expand My Game?by bashfrog2015-06-14 08:34:43List of Learning Resources2015-05-31 02:37:30Intersection Methodsby Roquen2015-05-29 05:19:33List of Learning Resources2015-05-05 07:20:32How to: JGO Wikiby Mac702015-02-17 17:56:162D Dynamic Lighting2015-01-01 17:25:42How do I start Java Game Development?by gouessej2014-12-27 16:41:21
 java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org