-
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으로 인식된다고 가정하는 함수이다.'Programing > DirectX' 카테고리의 다른 글
C# 으로 DirectX (0) 2008.07.22 Mesh에 관한 기초 내용 정리 (10) 2008.05.23 X 파일 읽고 렌더링하기 (0) 2008.05.23 메쉬 관련 ID3DXBuffer (0) 2008.05.23 ID3DXFont 사용하여 문자 출력하기 (0) 2008.05.19 다이렉트3D 카메라에 응용되는 벡터 함수 (1) 2008.05.17 용책 다이렉트 초기화 정리 (0) 2008.05.09 Direct3D에서 지원하는 광원들 (0) 2008.05.08 SDK 튜토 2번 정점 만들기 (0) 2008.05.08 정점 버퍼 생성하기 (0) 2008.05.08