WheelJoint constructor
WheelJoint(
- 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);
}