ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • pitch, yaw, roll 에 관해서
    Programing/DirectX 2008. 5. 17. 18:34

    //////////////////////////////////////////////////////////////////////////
    // 우향 벡터기준으로 회전(피치)
    //////////////////////////////////////////////////////////////////////////

    pitch(float angle)
    {
     D3DMATRIX T;
     D3DXMatrixRotationAxis(&T, &_right, angle);

     // _right를 기준으로 _up과 _look을 회전한다.
     D3DXVec3TransformCoord(&_up, &_up, &T);
     D3DXVec3TransformCoord(&_look, &_look, &T);
    }

    //////////////////////////////////////////////////////////////////////////
    // 상향 벡터기준으로 회전(야)
    //////////////////////////////////////////////////////////////////////////

    yaw(float angle)
    {
     D3DMATRIX T;
     D3DXMatrixRotationAxis(&T, &_up, angle);

     // _right를 기준으로 _up과 _look을 회전한다.
     D3DXVec3TransformCoord(&_right, &_right, &T);
     D3DXVec3TransformCoord(&_look, &_look, &T);
    }

    //////////////////////////////////////////////////////////////////////////
    // 전방 벡터기준으로 회전(롤)
    //////////////////////////////////////////////////////////////////////////

    roll(float angle)
    {
     D3DMATRIX T;
     D3DXMatrixRotationAxis(&T, &_look, angle);

     // _right를 기준으로 _up과 _look을 회전한다.
     D3DXVec3TransformCoord(&_up, &_up, &T);
     D3DXVec3TransformCoord(&_right, &_right, &T);
    }


    pitch,  yaw, roll는  카메라 회전 기법인데 각각 어느축을 기준으로 회전이 이뤄지는가에 따라 구분된다.
    위의 소스를 보면 다음의 두가지 함수가 사용되어졌다.
    D3DXMatrixRotationAxis
    D3DXVec3TransformCoord

    D3DXMatrixRotationAxis 의 구문

    D3DXMATRIX *D3DXMatrixRotationAxis(      

        D3DXMATRIX *pOut,    
    CONST D3DXVECTOR3 *pV,    
    FLOAT Angle );

    D3DXMatrixRotationAxis 의 첫번째 인자는 연산결과의 포인터, 두번째는 축이 될 벡터, 세번째 인자는 회전할 각도를 나타낸다.
    이외에도
    D3DXMatrixRotationX
    D3DXMatrixRotationY
    D3DXMatrixRotationZ
    함수가 있는데 이는 결과포인터와 각도의 두 인자만을 받게 된다.


    D3DXVec3TransformCoord 의 구문

    D3DXVECTOR3 *WINAPI D3DXVec3TransformCoord(      

        D3DXVECTOR3 *pOut,    
    CONST D3DXVECTOR3 *pV,    
    CONST D3DXMATRIX *pM );

    첫번째 인자는 결과, 두번재는 변환할 포인트, 세번째는 변환 행렬이다.
    D3DXVec3TransformCoord 은 포인트 변환을 하는 함수로 벡터의 네번재 성분이 1로 인식된다고 가정한다.
    이에반해 D3DXVec3TransformNormal은 벡터를 변환하며 벡터의 네번째 성분이 0으로 인식된다고 가정하는 함수이다.



Designed by Tistory.