friction too strong (2d)

Started by
13 comments, last by jjd 18 years, 7 months ago
Quote:Original post by blizzard999
Yes I wrote ie because I dont speak english very well and used it in the worst manner (I used imroperly id est and think I'm italian but we dont use it! [smile]) (I was meaning "for example").


niente [smile]




--www.physicaluncertainty.com
--linkedin
--irc.freenode.net#gdnet

Advertisement
If I was johnnyk right now, I'd be so lost. You guys prolly scared him away.
Wow I really set you guys off it seems :) So a few points:

1) The spring stiffness issues I think are a little beside the point, because I'm only dealing with friction *during a collision*. Since I'm simulating collisions as impulses, the friction is also an impulse. Does the stiff springs issues still apply? I dont think so, but then I havent written any PHDs on them :) Since it's an impulse, they happen instantaneously, unlike springs which apply a constant force.

2) Friction is F = - K * N, where N is the normal impulse. The given F = - K * v is incorrect, friction doesn't depend on velocity (right?)

3) As for my original problem, I found a nice solution that works really well. The way I do it is as follows:

When I get a collision, I calculate the tangential force needed to completely STOP those two points from moving relative to each other. Discovering how to do this was the tricky part, which actually turned out to be excessively easy!

I just use the exact same equation for determining the collision impulse, j, and use a coefficient of resititution (that is, e) of 0 (you all know the equation I'm talking about, right?? Described in Chris Hecker's paper here http://www.d6.com/users/checker/pdfs/gdmphys3.pdf). I have to modify the inputs of the equation a bit so instead of the collision normal i'm sending the collision *tangential*. This will spit out an impulse that will stop the two points relative to each other.

Now, whatever else I calculate, I know that the friction can't possibly be MORE than that, because friction will never cause the points to change direction (it only slows them down relative to each other). So I calcualte the friction I REALLY want by doing N * -k (where N is again the normal impulse of the collision) and make sure that is less then the maximum value I calculated earlier.

Turns out that works really nicely, and makes a lot of sense to me too.. Of course, this only simulates dynamic friction (no static friction) but that makes sense because I'm dealing with friction in a collision, not when the object are at rest (i'll have to tackle that problem later). In practice, the friction works to slow the object down very nicely thanks to lots of tiny collisions happening.

Thanks for all your responses everyone, very appreciated
-John
Quote:Original post by johnnyk
2) Friction is F = - K * N, where N is the normal impulse. The given F = - K * v is incorrect, friction doesn't depend on velocity (right?)

yeah youre completely right, thats a much better model for friction. i was thinking about damping, which is not precisely the same.

the way you found to solve your problem sounds very nice. note that whenever you need to apply you cap, a static contact should appear. or maybe youve already implicitly dealt with static friction this way, as since when the cap is applied, no tangential velocity should be left. how does it work out in practice?
Quote:Original post by johnnyk
Wow I really set you guys off it seems :) So a few points:

1) The spring stiffness issues I think are a little beside the point, because I'm only dealing with friction *during a collision*. Since I'm simulating collisions as impulses, the friction is also an impulse. Does the stiff springs issues still apply? I dont think so, but then I havent written any PHDs on them :) Since it's an impulse, they happen instantaneously, unlike springs which apply a constant force.

2) Friction is F = - K * N, where N is the normal impulse. The given F = - K * v is incorrect, friction doesn't depend on velocity (right?)

3) As for my original problem, I found a nice solution that works really well. The way I do it is as follows:

When I get a collision, I calculate the tangential force needed to completely STOP those two points from moving relative to each other. Discovering how to do this was the tricky part, which actually turned out to be excessively easy!

I just use the exact same equation for determining the collision impulse, j, and use a coefficient of resititution (that is, e) of 0 (you all know the equation I'm talking about, right?? Described in Chris Hecker's paper here http://www.d6.com/users/checker/pdfs/gdmphys3.pdf). I have to modify the inputs of the equation a bit so instead of the collision normal i'm sending the collision *tangential*. This will spit out an impulse that will stop the two points relative to each other.

Now, whatever else I calculate, I know that the friction can't possibly be MORE than that, because friction will never cause the points to change direction (it only slows them down relative to each other). So I calcualte the friction I REALLY want by doing N * -k (where N is again the normal impulse of the collision) and make sure that is less then the maximum value I calculated earlier.

Turns out that works really nicely, and makes a lot of sense to me too.. Of course, this only simulates dynamic friction (no static friction) but that makes sense because I'm dealing with friction in a collision, not when the object are at rest (i'll have to tackle that problem later). In practice, the friction works to slow the object down very nicely thanks to lots of tiny collisions happening.

Thanks for all your responses everyone, very appreciated
-John



Hi John,

you can pretty much ignore everything that is said above because you are using an event driven method. The discussion above refers to continuous integration, which you don't need to worry about. Perhaps it is worth noting that the approach to are using, with the coefficient of restitution, is equivalent to a spring-dashpot model, which is more what we were talking about. However...

Quote:
friction doesn't depend on velocity (right?)


No, the force due to friction depends upon the relative speed of the two surfaces.

Chris' article looks fine to me. Another source of related info is an area called "granular materials" or "granular dynamics". Google that and you'll find more info than you'll know what to do with [smile] In particular, go to Stefan Luding's webpage.


-Josh


--www.physicaluncertainty.com
--linkedin
--irc.freenode.net#gdnet

This topic is closed to new replies.

Advertisement