変換行列を使って Light を回転する

DirectX の変換行列を使って Light を回転しながら描画します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. Light を回転しながら描画する では自作の関数を使いましたが、 今回は DirectX の変換行列を使って Light を回転しながら描画してみましょう。
    プログラムは「Light を回転しながら描画する」とほとんど同じなので、こちらを参照して下さい。
    ライトの座標は、次のように設定します。
        D3DXVECTOR3     vLight(2,-3,2);     // ライトの座標
    
        light.Direction = vLight;
        g_pDEV->SetLight(0,&light);
        
  2. 変換行列を使って、Y軸を中心に回転する MatRotate() 関数です。
    *Vect で渡された座標を、Y軸を中心にして rt(ラジアン角)度回転します。
    座標計算の詳細は Windwos Guid の回転座標の計算 を参照して下さい。
        void  MatRotate(D3DXVECTOR3 *Vect,float rt)
        {  D3DXMATRIX   mat;
           // 変換マトリックスの作成
           D3DXMatrixIdentity(&mat);
           mat._11 = cos(rt);   mat._13 = -sin(rt);
           mat._31 = sin(rt);   mat._33 = cos(rt);
           D3DXVec3TransformNormal(Vect, Vect, &mat);
        }
        

前田稔(Maeda Minoru)の超初心者のプログラム入門

超初心者のプログラム入門(DirectX9 game program)

超初心者のプログラム入門(DirectX10 game program)