preSolve method
Prepare for solving the constraint
Implementation
@override
void preSolve(double timeStep,double invTimeStep ) {
updateAnchorPoints();
ax1..setFrom(localAxis1)..applyMatrix3Transpose(body1!.rotation);
an1..setFrom(localAngle1)..applyMatrix3Transpose(body1!.rotation);
ax2..setFrom(localAxis2)..applyMatrix3Transpose(body2!.rotation);
an2..setFrom(localAngle2)..applyMatrix3Transpose(body2!.rotation);
r3.limitMotor1.angle = Math.dotVectors(ax1, ax2);
var limite = Math.dotVectors(an1, ax2);
if( Math.dotVectors(ax1, tmp.cross2(an1, ax2)) < 0){
rotationalLimitMotor1.angle = -limite;
}
else{
rotationalLimitMotor1.angle = limite;
}
limite = Math.dotVectors(an2, ax1);
if(Math.dotVectors(ax2, tmp.cross2(an2, ax1)) < 0 ){
rotationalLimitMotor2.angle = -limite;
}
else{
rotationalLimitMotor2.angle = limite;
}
nor.cross2( ax1, ax2 ).normalize();
tan.cross2( nor, ax2 ).normalize();
bin.cross2( nor, ax1 ).normalize();
r3.preSolve(timeStep,invTimeStep);
t3.preSolve(timeStep,invTimeStep);
}