WheelJoint constructor

WheelJoint(
  1. JointConfig config
)

Implementation

WheelJoint (JointConfig config):super(config){
  type = JointType.wheel;

  localAxis1 = config.localAxis1.clone()..normalize();
  localAxis2 = config.localAxis2.clone()..normalize();

  dot = Math.dotVectors(localAxis1, localAxis2);

  if( dot > -1 && dot < 1 ){
    localAngle1..setValues(
      localAxis2.x - dot*localAxis1.x,
      localAxis2.y - dot*localAxis1.y,
      localAxis2.z - dot*localAxis1.z
    )..normalize();

    localAngle2..setValues(
      localAxis1.x - dot*localAxis2.x,
      localAxis1.y - dot*localAxis2.y,
      localAxis1.z - dot*localAxis2.z
    )..normalize();
  }
  else {
    Matrix3 arc = Matrix3.identity().setQuat( Quaternion(0,0,0,1).setFromUnitVectors(localAxis1, localAxis2));
    localAngle1.tangent(localAxis1).normalize();
    localAngle2 = localAngle1.clone()..applyMatrix3Transpose(arc);
  }

  translationalLimitMotor = LimitMotor(tan,true);
  translationalLimitMotor.frequency = 8;
  translationalLimitMotor.dampingRatio = 1;

  rotationalLimitMotor1 = LimitMotor( tan, false );
  // The second rotational limit and motor information of the joint.
  rotationalLimitMotor2 = LimitMotor( bin, false );

  t3 = Translational3Constraint( this, LimitMotor(nor, true),translationalLimitMotor,LimitMotor(bin, true));
  t3.weight = 1;
  r3 = Rotational3Constraint(this,LimitMotor(nor, true),rotationalLimitMotor1,rotationalLimitMotor2);
}