Jump to content
  • Advertisement
Sign in to follow this  
lomateron

physics force problem

This topic is 1937 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

yi0Ltjg.png

 

I have this 4 particles, each particle has a mass of 1.

The particles are connected with a black bar that transfers the instant force to other particles instantly.

 

If the particle that is connected to the other 3 feels a force upwards what is the instant vector force felt by the others.

 

I know how to solve this problem if there was only two particles connected by a black bar but when there are many particles connected I can't figure out how to distribute the force to the other particles.

--------------------------------------------------------------------------------------------------------------------------------

my preview solutions are wrong, my second solution was stupid wrong but it works in my iteration algorithm very well, that's why it put it

--------------------------------------------------------------------------------------------------------------------------------

Edited by lomateron

Share this post


Link to post
Share on other sites
Advertisement

I know how to solve this problem if there was only two particles connected by a black bar but when there are many particles connected I can't figure out how to distribute the force to the other particles.

 

I think you need to take 3 steps.

 

1. Compute transfered force between individual particles while isolating other connections.

2. Net the distribution starting at the 1st-order nodes (most immediately affected by force)

3. Re-weight (like, normalize) all of the forces.

 

By "starting at 1st-order nodes" I was referring to the breadth-first nature of transfering force through a mesh. Of course if you have a case as simple as this, you don't need to worry about that.

Edited by Reflexus

Share this post


Link to post
Share on other sites

this is quite easy to do with an algorithm that goes pretty much like this:

 

Integrator Phase

- Accumulate and integrate every particle regardless of their connections. Most of the times this is done using Verlet integrators.

 

Solver Phase

- Cycle through the particles and correct their position so the "joints" are respected

- Iterate a given number of time to assure that multiple contacts will be handled reasonably well

 

It is a very simple approach, the math is really easy. For purely rigid connections it won't give a perfect solution but you have the advantage to be able to do "soft" bodies easily.

You can look into a project called "Rig Of Rods" that uses a system similar to this and should be open source.

Share this post


Link to post
Share on other sites

ya I am already using that, and I am adding the ability of indestructible, undeformable joints so I want to solve this problem

Share this post


Link to post
Share on other sites

just iterate the solver more time per step and you'll get more rigid stuff. Of course the more particles are connected to make your "rigid body" the more iterations are needed to converge to a reasonable solution.

Share this post


Link to post
Share on other sites

*nop, indestructible, undeformable joints can't be made by just adding more iterations

*In my app the number of iterations is limited.

*If one particle has many joints it will turn explosive.

*This problem solves the explosiveness too.(and that's actually the principal reason I am using this method, a little bit modified to still have some jiggling)

Edited by lomateron

Share this post


Link to post
Share on other sites

Hello Lomateron,

 

I've been working on the exact same problem, but I haven't solved it entirely yet. I've attached a small windows .exe + full source for a small program that propagates forces trough a chain of interconnected particles. It displays far more rigid behaviour than any iterative solver I know of. My method of doing this is very similar to yours, it seems :-)

The only problem is that it's position based, and does not take velocity and acceleration into consideration. Still working on that...

 

Cheers,

Mike

Edited by h4tt3n

Share this post


Link to post
Share on other sites

If I understand you correctly you have a compound object of 4 elements . You need to compute the new innertia tensor of the compounded object from those colapsed 4 elements. And apply forces over this new inertia tensor.

In case of 2 elements compound object, the innertia tensor of compounded object is (Ait - Bit)*massB/(massA *2) in space of the compound object.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!