physics force problem

Started by
7 comments, last by JohnnyCode 10 years, 10 months ago

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

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

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.

"Net the distribution"

This can mean lots of things, describe that more, plz

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.

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni

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

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.

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni

*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)

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

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.

This topic is closed to new replies.

Advertisement