resolveSingleBilateral method
double
resolveSingleBilateral(
- Body body1,
- Vector3 pos1,
- Body body2,
- Vector3 pos2,
- Vector3 normal,
)
Implementation
double resolveSingleBilateral(Body body1,Vector3 pos1,Body body2,Vector3 pos2,Vector3 normal){
final normalLenSqr = normal.length2;
if (normalLenSqr > 1.1) {
return 0 ; // no impulse
}
// final rel_pos1 = Vector3.zero();
// final rel_pos2 = Vector3.zero();
// pos1.vsub(body1.position, rel_pos1);
// pos2.vsub(body2.position, rel_pos2);
final vel1 = _resolveSingleBilateralVel1;
final vel2 = _resolveSingleBilateralVel2;
final vel = _resolveSingleBilateralVel;
body1.getVelocityAtWorldPoint(pos1, vel1);
body2.getVelocityAtWorldPoint(pos2, vel2);
vel1.sub2(vel2, vel);
final relVel = normal.dot(vel);
const contactDamping = 0.2;
final massTerm = 1 / (body1.invMass + body2.invMass);
final impulse = -contactDamping * relVel * massTerm;
return impulse;
}