728x90
회전 함수에도 두종류로 나뉘어 지는데
1. 오일러 회전
D3DXMatrixScaling(); //크기
D3DXMatrixTranslation(); //위치
D3DXMatrixRotationX(); // x축 회전
D3DXMatrixRotationY(); // y축 회전
D3DXMatrixRotationZ(); // z축 회전
D3DXMatrixRotationYawPitchRoll() // 3개의 축 회전
D3DXMatrixRotationAxis() // 임의축 기준을 잡고 회전
여기서 문제는 이 회전 함수들은 하나의 축을 계산하기 때문에 '짐벌락' 현상이 일어난다.
짐벌락 현상 이란?
더보기



정상적인 각도

90도 회전 각도 (짐벌락 현상)
간단히 애기하면 하나의 3개의 축을 돌리는게 아닌 하나의 축으로 돌리기 떄문에 어느 시점에서 축과 축이 만나서 다른축의 계산을 못해서 생기는 현상이라고 생각하면 편함.
D3DXMatrixRotationYawPitchRoll, D3DXMatrixRotationAxis 함수들은 3개의 축을 한번에 회전 시킬수 있는데 그렇다고
해서 짐벌락 현상이 없어지는건 아님 밑에는 D3DXMatrixRotationAxis 기준으로 사용 방법
보면 D3DXMatrixRotationX Y, Z를 한번에 사용해서 회전 시키는거와 동일한 방법.
2. 쿼터니온 함수
쿼터니온 함수는 4원수라고 불리면 3D 좌표 회전에서 많이 사용 하는 함수 이다.
D3DXQuaternionRotationMatrix
D3DXQuaternionRotationAxis
D3DXQuaternionRotationYawPitchRoll
D3DXQuaternionNormalize
D3DXMatrixRotationQuaternion
아직 2D게임쪽으로 사용하기 때문에 이쪽 함수들은 추후에 조사해서 사용할 예정이고 알아두기만 하자
오일러와 쿼터니온 함수중 어느게 좋냐 하면 쿼터니온 함수가 더 좋다
오일러는 하나의 축을 계산한다면 쿼터니온 함수는 한번에 곱셈으로 통해서 회전 하기 때문에 짐벌락 현상도 없고
또한 회전 계산속도가 쿼터니온 쪽이 빠르기 때문에 메모리 도 절약 할 수 있다.
'DirectX > 보충' 카테고리의 다른 글
DirectX 11 렌더링 파이프 라인 (0) | 2021.06.28 |
---|---|
Matrix (회전, 크기, 위치 ) (0) | 2020.12.21 |
Vertex 좌표, Texture좌표(UV 좌표) (0) | 2020.12.20 |