////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CustomGear::CustomGear( dFloat gearRatio, const dVector& childPin, const dVector& parentPin, NewtonBody* child, NewtonBody* parent) :NewtonCustomJoint(1, child, parent) { m_gearRatio = gearRatio; // calculate the two local matrix of the pivot point // dVector pivot (0.0f, 0.0f, 0.0f); dMatrix dommyMatrix; // calculate the local matrix for body body0 dMatrix pinAndPivot0 (dgGrammSchmidt(childPin)); // CalculateLocalMatrix (pivot, childPin, m_localMatrix0, dommyMatrix); CalculateLocalMatrix (pinAndPivot0, m_localMatrix0, dommyMatrix); // calculate the local matrix for body body1 dMatrix pinAndPivot1 (dgGrammSchmidt(parentPin)); // CalculateLocalMatrix (pivot, parentPin, dommyMatrix, m_localMatrix1); CalculateLocalMatrix (pinAndPivot1, dommyMatrix, m_localMatrix1); }
////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CustomWormGear::CustomWormGear( dFloat gearRatio, const dVector& rotationalPin, const dVector& linearPin, NewtonBody* rotationalBody, NewtonBody* linearBody) :NewtonCustomJoint(1, rotationalBody, linearBody) { m_gearRatio = gearRatio; // calculate the two local matrix of the pivot point // dVector pivot (0.0f, 0.0f, 0.0f); dMatrix dommyMatrix; // calculate the local matrix for body body0 dMatrix pinAndPivot0 (dgGrammSchmidt (rotationalPin)); // CalculateLocalMatrix (pivot, rotationalPin, m_localMatrix0, dommyMatrix); CalculateLocalMatrix (pinAndPivot0, m_localMatrix0, dommyMatrix); // calculate the local matrix for body body1 // _ASSERTE (0); dMatrix pinAndPivot1 (dgGrammSchmidt(linearPin)); // CalculateLocalMatrix (pivot, linearPin, dommyMatrix, m_localMatrix1); CalculateLocalMatrix (pinAndPivot1, dommyMatrix, m_localMatrix1); }
CustomRackAndPinion::CustomRackAndPinion(dFloat gearRatio, const dVector& rotationalPin, const dVector& linearPin, NewtonBody* rotationalBody, NewtonBody* linearBody) :CustomJoint(1, rotationalBody, linearBody) { m_gearRatio = gearRatio; dMatrix dommyMatrix; dMatrix pinAndPivot0 (dGrammSchmidt (rotationalPin)); CalculateLocalMatrix (pinAndPivot0, m_localMatrix0, dommyMatrix); m_localMatrix0.m_posit = dVector (0.0f, 0.0f, 0.0f, 1.0f); // calculate the local matrix for body body1 dMatrix pinAndPivot1 (dGrammSchmidt(linearPin)); CalculateLocalMatrix (pinAndPivot1, dommyMatrix, m_localMatrix1); m_localMatrix1.m_posit = dVector (0.0f, 0.0f, 0.0f, 1.0f); }
////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CustomPulley::CustomPulley(dFloat gearRatio, const dVector& childPin, const dVector& parentPin, NewtonBody* const child, NewtonBody* const parent) :CustomJoint(1, child, parent) { m_gearRatio = gearRatio; // calculate the two local matrix of the pivot point dMatrix dommyMatrix; // calculate the local matrix for body body0 dMatrix pinAndPivot0 (dGrammSchmidt (childPin)); CalculateLocalMatrix (pinAndPivot0, m_localMatrix0, dommyMatrix); m_localMatrix0.m_posit = dVector (0.0f, 0.0f, 0.0f, 1.0f); // calculate the local matrix for body body1 dMatrix pinAndPivot1 (dGrammSchmidt (parentPin)); CalculateLocalMatrix (pinAndPivot1, dommyMatrix, m_localMatrix1); m_localMatrix1.m_posit = dVector (0.0f, 0.0f, 0.0f, 1.0f); }