Microsoft DirectX 8.0 (C++)

3D トランスフォームについて

3D グラフィックスを処理するアプリケーションでは、ジオメトリ トランスフォームを使用して次のことができる。

4 × 4 行列を使用すると、任意のポイントを別のポイントにトランスフォームできる。次の例では、行列を使用してポイント (x, y, z) を再度トランスフォームし、新しいポイント (x', y', z') を生成する。

(x, y, z) に対する次の操作と行列を実行してポイント (x', y', z') を生成する。

最も一般的なトランスフォームは、平行移動、回転、およびスケーリングである。これらの効果を生成する行列を組み合わせて単一の行列を作成し、いくつかのトランスフォームを同時に計算できる。たとえば、一連の点を平行移動して回転させる単一の行列を作成できる。詳細については、「行列連結」を参照すること。

行列は、行と列の順序で記述する。頂点を各軸に対して均一にスケーリングする (一様なスケーリングと呼ばれる) 行列は、数学的には次のように表記される。

C++ の場合、Microsoft® Direct3D® では、D3DMATRIX 構造体を使用して行列を 2 次元配列として宣言する。次の例は、一様なスケーリングを行う行列として機能するように D3DMATRIX 構造体を初期化する方法を示している。

// この例では、s は float 型の変数である

D3DMATRIX scale = {
    s,               0.0f,            0.0f,            0.0f,
    0.0f,            s,               0.0f,            0.0f,
    0.0f,            0.0f,            s,               0.0f,
    0.0f,            0.0f,            0.0f,            1.0f
};