GetQuaternion (SIMatrix3)
Introduced
3.5
Description
Returns the rotation quaternion representation of this matrix3.
Scripting Syntax
SIMatrix3.GetQuaternion( q )
C# Syntax
SIMatrix3.GetQuaternion( SIQuaternion out_pVal );Parameters
|
Parameter |
Type |
Description |
|
q [in/out] |
The rotation quaternion containing the new matrix3 values. |
Examples
JScript Example
/* This example illustrates how to get the orientation of one object relative to another. */ // CREATE OBJECTS A & B var A = ActiveSceneRoot.AddNull("A"); var B = ActiveSceneRoot.AddNull("B"); // GET GLOBAL TRANSFORM OF A & B var gksA = A.Kinematics.Global; var gksB = B.Kinematics.Global; var tgA = gksA.Transform; var tgB = gksB.Transform; // TRANSLATE & ROTATE A var vA = XSIMath.CreateVector3(2, 2, 0); tgA.SetTranslation(vA); var rA = XSIMath.CreateRotation( 0, 0, XSIMath.DegreesToRadians(45) ); tgA.SetRotation(rA); gksA.Transform = tgA; // GET LOCAL TRANSFORM OF B RELATIVE TO A var mA = XSIMath.CreateMatrix3(); var mB = XSIMath.CreateMatrix3(); tgA.GetRotationMatrix3(mA); tgB.GetRotationMatrix3(mB); mA.TransposeInPlace(); mB.MulInPlace(mA); // GET ORIENTATION OF B RELATIVE TO A AS A QUATERNION var qB = XSIMath.CreateQuaternion(); mB.GetQuaternion(qB); // LOG RESULT Application.LogMessage("Q(" + qB.w + "," + qB.x + "," + qB.y + "," + qB.z); // Verify result by creating a child on A and transform it to // have the same orientation as B var oChild = A.AddNull("Child"); var lksChild = oChild.Kinematics.Local; var tlChild = XSIMath.CreateTransform(); tlChild.SetRotationFromQuaternion(qB); lksChild.Transform = tlChild; // Expected results: // INFO : Q(0.9238795325112867,0,0,-0.3826834323650898
See Also
Autodesk Softimage v7.5