DirectX Graphics 프로그래밍 가이드 고정 기능 파이프라인 변환 행렬 회전 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
여기에서는, 왼손 좌표계의 변환에 대해 설명한다. 따라서, 다른 곳에서 본 변환 행렬과는 다른 경우도 있다. 더 자세한 정보는, 「3D 좌표계」를 참조할것.
다음의 변환은, 점 (x, y, z)을 x 축을 중심으로 회전해 새로운 점 (x', y', z')을 생성한다.
다음의 변환은, 점을 y 축을 중심으로 회전한다.
다음의 변환은, 점을 z 축을 중심으로 회전한다.
이러한 행렬의 예에서는, 그리스 문자 시타 (θ)는, 회전 각도를 라디안 단위로 나타내고 있다. 각도는, 회전축을 중심으로 해 원점 방향을 향한 시계회전으로 측정한 것이다.
C++ 애플리케이션에서는, Direct3D extension (D3DX) 유틸리티 라이브러리가 제공하는 D3DXMatrixRotationX 함수,D3DXMatrixRotationY 함수,D3DXMatrixRotationZ 함수를 사용해 회전 행렬을 생성 한다. 다음 코드는,D3DXMatrixRotationX 함수의 코드이다.
D3DXMATRIX* WINAPI D3DXMatrixRotationX ( D3DXMATRIX *pOut, float angle ) { #if DBG if(! pOut) return NULL; #endif float sin, cos; sincosf(angle, &sin, &cos); // Determine sin and cos of angle. pOut->_11 = 1.0f; pOut->_12 = 0.0f; pOut->_13 = 0.0f; pOut->_14 = 0.0f; pOut->_21 = 0.0f; pOut->_22 = cos; pOut->_23 = sin; pOut->_24 = 0.0f; pOut->_31 = 0.0f; pOut->_32 = -sin; pOut->_33 = cos; pOut->_34 = 0.0f; pOut->_41 = 0.0f; pOut->_42 = 0.0f; pOut->_43 = 0.0f; pOut->_44 = 1.0f; return pOut; }