Java-Gaming.org Hi !
 Featured games (90) games approved by the League of Dukes Games in Showcase (753) Games in Android Showcase (228) games submitted by our members Games in WIP (842) 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 1816 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

 nelsongames (19 views) 2018-04-24 18:15:36 nelsongames (17 views) 2018-04-24 18:14:32 ivj94 (608 views) 2018-03-24 14:47:39 ivj94 (53 views) 2018-03-24 14:46:31 ivj94 (402 views) 2018-03-24 14:43:53 Solater (66 views) 2018-03-17 05:04:08 nelsongames (111 views) 2018-03-05 17:56:34 Gornova (176 views) 2018-03-02 22:15:33 buddyBro (747 views) 2018-02-28 16:59:18 buddyBro (94 views) 2018-02-28 16:45:17
 KaiHH 12x ByerN 12x Guerra2442 10x SHC 10x NuclearPixels 10x Zemlaynin 10x Damocles 6x VaTTeRGeR 5x orangepascal 4x philfrei 4x ags1 3x ndnwarrior15 3x mesterh 3x JojoGlick 2x 65K 2x FabulousFellini 2x
 Java Gaming Resourcesby philfrei2017-12-05 19:38:37Java Gaming Resourcesby philfrei2017-12-05 19:37:39Java Gaming Resourcesby philfrei2017-12-05 19:36:10Java Gaming Resourcesby philfrei2017-12-05 19:33:10List of Learning Resourcesby elect2017-03-13 14:05:44List of Learning Resourcesby elect2017-03-13 14:04:45SF/X Librariesby philfrei2017-03-02 08:45:19SF/X Librariesby philfrei2017-03-02 08:44:05
 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