KH_C++
Yaw Pitch Roll(요, 피치, 롤), Gimbal Lock(짐벌락), Quaternion(쿼터니언) 본문
[ Yaw Pitch Roll (요, 피치, 롤) ]
Yaw, Pitch, Roll 은 모두 회적축과 관련되어있다.
왼손좌표계를 사용하고있으며 아래 그림처럼 항공기가 수평한 땅에 놓여져 있다고 생각해보자.
우선, 축을 설정하는데 항공기 머리부터 꼬리까지 잇는 종축(longitudinal axis)을 x축 오른날개에서 왼날개까지 잇는 횡축(lateral axis)를 y축 항공기 중심과 수평면까지 잇는 수직축(vertical axis)를 z축 이라고 하자.
Roll, 롤 : x축(종축)을 중심으로 회전하는 것.
Pich, 피치 : y축(횡축)을 중심으로 회전하는 것.
Yaw, 요: z축(수직축)을 중심으로 회전하는 것.
x축은 바라보고 있는 방향,
y축은 관자놀이를 통과하는 방향,
z축은 정수리를 통과하는 방향으로 설정하자.
이 축을 마치 철봉처럼 고정시켰다고 상상하고
고개를 돌려보자
Z축 회전각 : Yaw
도리도리하는걸 생각하시면 조금 더 편하다.
Y축 회전각 : Pitch
끄덕끄덕하는걸 생각하시면 편하다.
X축 회전각 : Roll
갸우뚱 갸우뚱하는걸 생각하면 좋다.
출처:
https://happy8earth.tistory.com/492
[ Gimbal Lock(짐벌락) ]
Gimbal
- 하나의 축을 중심으로 물체가 회전할 수 있도록 만들어진 구조물
- 자이로스코프, 나침판, 난로 등에서 수평을 이루도록 사용됨
- 세 축은 roll / pitch / yaw의 자유도를 가짐
Gimbal Lock
1. 각각의 고리는 고유한 축을 기준으로 회전하는데 이는 가장 바깥쪽 고리만 해당할 뿐 안쪽 고리들은 여러 방향으로 회전함을 알 수 있다.
2. 안쪽 고리가 여러 방향으로 회전하는 이유는 고리가 종속 관계를 형성하기 때문이다. 즉 한 고리의 회전이 안쪽 고리의 회전에 영향을 주며 고리의 회전으로 인해 의도치 않게 두 개 이상의 고리가 겹치게 되면 한 축의 회전각이 소실되는데 우리는 이것을 짐벌락이라 한다.
3. 녹색 고리의 회전으로 인해 분홍색 고리와 파란색 고리가 겹치게 되면 두 고리의 회전은 동일한 결과를 낳게 되면서 자연스럽게 한 축의 회전은 소실된다.
- 오일러각을 이용한 회전 과정에서 두 개 혹은 세 개의 축이 겹쳐서 축이 자유도를 잃어, 같은 방향으로 오브젝트의; 회전 축이 겹치는 현상
- 짐벌락이 일어나면, 겹친 축을 원하는 방향으로 회전시키는것이 불가능함
- 회피[완전회피는 불가능]
- 회전 범위가 큰 축을 첫 회전 축으로 놓고, 작은 축을 뒤에 놓는 방식으로 회피가 가능
- Axis라는 임의의 축 회전을 사용
출처:
https://merry-nightmare.tistory.com/253
https://kangworld.tistory.com/185
[ Quaternion(쿼터니언) ]
쿼터니언은 행렬에 비해 연산 속도가 빠르고, 차지하는 메모리의 양도 적으며, 결과의 질에 있어 오류가 날 확률이 적다.
3개의 축에 대한 회전 연산을 동시에 적용하는 경우에 행렬을 사용하면 한 축이 소실되는 짐벌락 현상이 발행할 수 있는데, 쿼터니언을 사용하면 이 현상을 막을 수 있다.
쿼터니언은 4차원 복소수 공간(Complex Space)의 벡터로서 다음과 같이 나타낸다.
- 쿼터니언을 q = s + v 형태로 쓰기도 하는데, 여기서 s 는 q의 w 성분에 해당하는 스칼라(Scalar) 값이고, v는 q의 x, y, z 성분에 해당하는 벡터(Vector) 부분이다.
- 쿼터니언은 복소수를 확장한 x, y, z, w 성분을 갖는 4차원 벡터로 세 개의 축을 동시에 회전시켜 축에 대한 종속 관계를 없앴으며 하나의 축이 소실되는 문제점을 방지할 수 있다.
- 쿼터니언의 장점
- 짐벌락 문제가 발생하지 않는다.
- 계산 비용이 적다.
- 쿼터니언의 한계점
- 직관적이지 않다.
- 원리를 이해하지 못하면 쿼터니언을 사용할 수 없다.
- 회전을 하나의 방향에서 다른 방향으로 측정하기 때문에 180도 보다 큰 회전을 표현할 수 없다.
출처:
https://kangworld.tistory.com/185
https://www.stechstar.com/user/zbxe/MultiFGame/44222
'공부' 카테고리의 다른 글
레이 캐스트(Ray Cast), 레이 트레이싱(Ray Tracing) (2) | 2023.06.01 |
---|---|
함수 포인터 (0) | 2023.05.25 |
가비지 컬렉션, 메모리 단편화, 메모리 풀, 댕글링 포인터 (0) | 2023.05.04 |
동적할당, 동적할당해제, 스마트 포인터, 메모리 누수 (0) | 2023.05.04 |
DFS, BFS (0) | 2023.04.28 |