Jump to content



Impulse based friction on line segment

  • You cannot reply to this topic
1 reply to this topic

#1 celloe   Members   -  Reputation: 100

Like
0Likes
Like

Posted 24 February 2012 - 04:30 PM

Trying to figure out the friction impulse to apply on a circle rolling down a line segment, I've read a lot of other threads and it seems like it's kind of similar to the elastic impulse:

// nx & ny = contact normal
// fE = elastic impulse
// dx & dy = distance from center of mass to contact point

var tx = -ny;
var ty = nx;

var tCross = dx*ty-dy*tx;

var friction = .5;

var fF = tx*c.vx+ty*c.vy;
fF /= (c.inverseMass+(tCross*tCross)/c.momentOfInertia);

var fx = (fE*nx)+(friction*fF*tx);
var fy = (fE*ny)+(friction*fF*ty);

// xy velocity + angular

c.vx -= fx*c.inverseMass;
c.vy -= fy*c.inverseMass;

c.av -= (dx*fy-dy*fx)/c.momentOfInertia;

This is following the same sort of "pattern" adapted for the angular force as the usual
j = -(1 + e)rV . n / (n . n(iM1) + (pv1 . n)^2 / I1)

However when it came to the implementation, the behaviour of it's a little.. strange. Here's a demo - http://www.fileize.c...w/9137d063-58a/
I've tried clamping the friction to be a limit based on the elastic impulse but that didn't really do much. Could anybody enlighten me as to where I've slipped up?

Ad:

#2 celloe   Members   -  Reputation: 100

Like
0Likes
Like

Posted 27 February 2012 - 06:26 PM

Just as an update I figured out the cause of the problem, I was using the center of mass velocity as opposed to the contact point velocity.. silly. All fixed now!






We are working on generating results for this topic
PARTNERS