preSolve method

  1. @override
void preSolve(
  1. double timeStep,
  2. double invTimeStep
)
override

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);
}