ベクトル、頂点、四元数 (Direct3D 9)
Direct3D 全体で、頂点は位置と向きを記述します。 プリミティブ内の各頂点は、その位置、色、テクスチャ座標、およびその向きを与える法線ベクトルを提供するベクターによって記述されます。
四元数は、3 成分ベクトルを定義する [x, y, z] 値に 4 番目の要素を追加します。 四元数は、通常は 3D 回転に使用されるマトリックス メソッドの代わりに使用されます。 四元数は、3D 空間内の軸とその軸の周りの回転を表します。 たとえば、四元数は (1,1,2) 軸と 1 ラジアンの回転を表します。 四元数は貴重な情報を伝達しますが、その真の力は、コンポジションと補間という 2 つの操作から得られます。
四元数に対するコンポジションの実行は、それらを組み合わせるのと似ています。 次の図のように、2 つの四元数の構成が示されています。
四元数表記の
ジオメトリに適用される 2 つの四元数の構成は、"回転によって軸₂ を中心にジオメトリを回転し、次に回転₁ 軸を中心に回転する₁" を意味します。この場合、Q は、ジオメトリに q₂、次に q₁ を適用した結果である 1 つの軸の周りの回転を表します。
四元数補間を使用すると、ある軸と向きから別の軸への滑らかで妥当なパスをアプリケーションで計算できます。 したがって、q₁ と q₂ の間の補間は、ある方向から別の方向にアニメーション化する簡単な方法を提供します。
合成と補間を一緒に使用すると、複雑に見える方法でジオメトリを操作する簡単な方法が提供されます。 たとえば、特定の向きに回転するジオメトリがあるとします。 あなたは、それをr₂軸₂を中心に度を回転し、それをr₁軸₁の周りに度を回転したいが、最終的な四元数がわからないことを知っている。 コンポジションを使用すると、ジオメトリ上の 2 つの回転を組み合わせて、結果となる 1 つの四元数を取得できます。 次に、元の四元数から構成された四元数に補間して、一方から他方へのスムーズな移行を実現できます。
D3DX ユーティリティ ライブラリには、四元数の操作に役立つ関数が含まれています。 たとえば、D3DXQuaternionRotationAxis 関数は、回転軸を定義するベクトルに回転値を追加し、D3DXQUATERNION 構造体によって定義された四元数で結果を返します。 さらに、D3DXQuaternionMultiply 関数は四元数を構成し、D3DXQuaternionSlerp は 2 つの四元数の間で球面線形補間を実行します。
Direct3D アプリケーションでは、次の関数を使用して、四元数を操作するタスクを簡略化できます。
- D3DXQuaternionBaryCentric
- D3DXQuaternionConjugate
- D3DXQuaternionDot
- D3DXQuaternionExp
- D3DXQuaternionIdentity
- D3DXQuaternionInverse
- D3DXQuaternionIsIdentity
- D3DXQuaternionLength
- D3DXQuaternionLengthSq
- D3DXQuaternionLn
- D3DXQuaternionMultiplyの
- D3DXQuaternionNormalize
- D3DXQuaternionRotationAxis
- D3DXQuaternionRotationMatrix
- D3DXQuaternionRotationYawPitchRoll
- D3DXQuaternionSlerp
- D3DXQuaternionSquad
- D3DXQuaternionToAxisAngle
Direct3D アプリケーションでは、次の関数を使用して、3 つのコンポーネント ベクトルを操作するタスクを簡略化できます。
- D3DXVec3Add
- D3DXVec3BaryCentric
- D3DXVec3CatmullRom
- D3DXVec3Cross
- D3DXVec3Dot
- D3DXVec3Hermite
- D3DXVec3Length
- D3DXVec3LengthSq
- D3DXVec3Lerp
- D3DXVec3Maximize
- D3DXVec3Minimize
- D3DXVec3Normalize
- D3DXVec3Project
- D3DXVec3Scale
- D3DXVec3Subtract
- D3DXVec3Transformの
- D3DXVec3TransformCoord
- D3DXVec3TransformNormal
- D3DXVec3Unproject
D3DX ユーティリティ ライブラリによって提供される Math Functions には、2 コンポーネントベクトルと 4 コンポーネント ベクトルを使用してタスクを簡略化する多くの追加関数が含まれています。
関連トピック