Programming/DirectX

방향넣으면 각도 출력하는 함수

어둠을 가르는 카리스마 2009. 11. 6. 17:05

float CalAngle(D3DXVECTOR3 vDrt)
{
     D3DXVECTOR3   vP1, vP2;
     D3DXVECTOR3   vCrossResult;
     float    fDotResult;
     vP1 = D3DXVECTOR3(-1, 0, 0);
     vDrt = -1.0f * vDrt;

     //노말라이즈
     D3DXVec3Normalize(&vP2, &vDrt);
     // 외적구해서 내적 방향3을 정한다.
     D3DXVec3Cross(&vCrossResult, &vP1, &vP2);  
     // 내적구해서 각도를 구한다
     fDotResult = D3DXVec3Dot(&vP1, &vP2);

     if(vCrossResult.y > 0)
          return acosf(fDotResult);
     else if(vCrossResult.y < 0.0f)
     {
          return D3DX_PI * 2 - acosf(fDotResult);
     }

     return acosf(fDotResult);
}