Platform SDK: DirectX

回転

ここでは、左手座標系のトランスフォームについて説明する。したがって、これまでのトランスフォーム行列とは異なる場合もある。詳細については、「3D 座標系」を参照すること。

次のトランスフォームは、点 (x, y, z) を x 軸 を中心に回転して新しい点 (x', y', z') を生成する。

次のトランスフォームは、点を y 軸を中心に回転する。

次のトランスフォームは、点を z 軸を中心に回転する。

これらの行列の例では、ギリシャ文字シータ (θ) は、回転角度をラジアン単位で表している。角度は、回転軸を中心にして原点方向を向いた時計回りで測定したものである。

[C++]

C++ アプリケーションでは、D3dutil.cpp ファイル内の D3DUtil_SetRotateXMatrixD3DUtil_SetRotateYMatrix、および D3DUtil_SetRotateZMatrix ヘルパー関数を使用して回転行列を作成する (D3dutil.cpp ファイルはこの SDK に付属している)。次は、D3DUtil_SetRotateXMatrix ヘルパー関数のサンプル コードである。

VOID D3DUtil_SetRotateXMatrix( D3DMATRIX& mat, FLOAT fRads )
{
D3DUtil_SetIdentityMatrix( mat );
mat._22 =  cosf( fRads );
mat._23 =  sinf( fRads );
mat._32 = -sinf( fRads );
mat._33 =  cosf( fRads );
}v
[Visual Basic]

Visual Basic アプリケーションでは、DirectX7.RotateXMatrixDirectX7.RotateYMatrix、および DirectX7.RotateZMatrix メソッドを使用して回転行列を作成できる。

たとえば、x 軸を中心に回転する行列を手動で作成する場合は、次のようなソース コードになる。

Sub CreateXRotation(ret As D3DMATRIX, rads As Single)
    Dim cosine As Single
    Dim sine As Single
    cosine = Cos(rads)
    sine = Sin(rads)
    
    Call dx.IdentityMatrix(ret) ' DirectX7 オブジェクトのメソッド。
    
    ret.rc22 = cosine
    ret.rc23 = sine
    ret.rc32 = -sine
    ret.rc33 = cosine
End Sub