solveVelocityConstraints method
void
solveVelocityConstraints(
- SolverData data
)
override
Implementation
@override
void solveVelocityConstraints(SolverData data) {
final vA = data.velocities[_indexA].v;
var wA = data.velocities[_indexA].w;
final vB = data.velocities[_indexB].v;
var wB = data.velocities[_indexB].w;
final vpA = Vector2.zero();
final vpB = Vector2.zero();
final pA = Vector2.zero();
final pB = Vector2.zero();
_rA.scaleOrthogonalInto(wA, vpA);
vpA.add(vA);
_rB.scaleOrthogonalInto(wB, vpB);
vpB.add(vB);
final cDot = -_uA.dot(vpA) - _ratio * _uB.dot(vpB);
final impulse = -_mass * cDot;
_impulse += impulse;
pA
..setFrom(_uA)
..scale(-impulse);
pB
..setFrom(_uB)
..scale(-_ratio * impulse);
vA.x += _invMassA * pA.x;
vA.y += _invMassA * pA.y;
wA += _invIA * _rA.cross(pA);
vB.x += _invMassB * pB.x;
vB.y += _invMassB * pB.y;
wB += _invIB * _rB.cross(pB);
data.velocities[_indexA].w = wA;
data.velocities[_indexB].w = wB;
}