## SIMatrix3.GetQuaternion

v3.5

### 詳細

matrix3の回転のクォータニオン表現を戻します。

### C#構文

 `SIMatrix3.GetQuaternion( SIQuaternion out_pVal );`

### スクリプト構文

 `SIMatrix3.GetQuaternion( q );`

### パラメータ

パラメータ タイプ 説明
q SIQuaternion 新しい 3x3 行列の値を含む、回転のクォータニオン

### 例

#### JScript の例

 ```/* 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```

### 関連項目

SIMatrix3.SetFromQuaternion