Microsoft DirectX 8.0 (Visual Basic)

行列連結

行列を使用する利点の 1 つは、複数の行列を乗算してそれらのエフェクトを組み合わせることができるということである。つまり、モデルを回転し、次に別の位置座標に平行移動する場合、2 つの行列を適用する必要はない。その代わり、回転行列と平行移動行列を乗算して、すべてのエフェクトを持つ合成行列を生成する。この処理は行列連結と呼ばれ、次の公式で記述できる。

この公式では、C は作成する合成行列で、M1Mn は行列 C に含まれる個々のトランスフォームである。ほとんどの場合、2 つまたは 3 つの行列を連結するが、数に制限はない。

D3DXMatrixMultiply 関数を使って、行列の乗算を実行する。

行列の乗算が実行される順序は重要である。上の公式は、行列連結の "左から右" 規則を反映している。つまり、合成行列を作成するために使用する行列の視覚エフェクトは、左から右の順で現われる。一般的なワールド トランスフォーム行列の例を次に示す。お決まりの "空飛ぶ円盤" 用のワールド トランスフォーム行列を作成すると仮定する。この空飛ぶ円盤を中心 (モデル空間 の y 軸) を軸に回転させ、シーン内の別の場所に平行移動したいとする。この効果を実現するには、次の式のように、まず回転行列を作成し、次にこの行列を平行移動行列で乗じる。

この公式では、Ry は y 軸を中心に回転する行列で、Tw はワールド座標の任意の位置座標への平行移動である。

これらの行列を乗算する順序は重要である。2 つのスカラー値を乗算する場合とは異なり、行列の乗算は可換的ではない。平行移動行列と回転行列を逆の順序で乗算すると、空飛ぶ円盤がワールド空間位置座標に移動してから、ワールド座標の原点を中心に回転するというエフェクトが生じてしまう。

どのような行列を作成する場合でも、期待どおりのエフェクトを実現するためには "左から右" 規則を忘れてはならない。