// 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?


















