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);
}
'Programming > DirectX' 카테고리의 다른 글
애니메이션 1 (0) | 2009.11.09 |
---|---|
애니메이션 2 (0) | 2009.11.09 |
애니메이션 3 (0) | 2009.11.09 |
애니메이션 4 (0) | 2009.11.09 |
내적(dot product) 외적(cross product) 이용 (0) | 2009.11.06 |