Microsoft DirectX 8.0 (C++)

回転

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

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

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

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

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

C++ アプリケーションでは、Direct3DX ユーティリティ ライブラリによって提供される D3DXMatrixRotationX 関数、D3DXMatrixRotationY 関数、および D3DXMatrixRotationZ 関数を使って回転行列を作成する。次のコードは、D3DXMatrixRotationX 関数のコードである。

D3DXMATRIX* WINAPI D3DXMatrixRotationX
    ( D3DXMATRIX *pOut, float angle )
{
#if DBG
    if(!pOut)
        return NULL;
#endif

    float sin, cos;
    sincosf(angle, &sin, &cos);  // 角度の sin と cos を決定する。

    pOut->_11 = 1.0f; pOut->_12 =  0.0f;   pOut->_13 = 0.0f; pOut->_14 = 0.0f;
    pOut->_21 = 0.0f; pOut->_22 =  cos;    pOut->_23 = sin;  pOut->_24 = 0.0f;
    pOut->_31 = 0.0f; pOut->_32 = -sin;    pOut->_33 = cos;  pOut->_34 = 0.0f;
    pOut->_41 = 0.0f; pOut->_42 =  0.0f;   pOut->_43 = 0.0f; pOut->_44 = 1.0f;

    return pOut;
}