디지털 블리자드
2022. 7. 27. 02:07
Yaw Pitch Roll (오일러회전) , 짐벌락(김벌락), 사원수 (쿼터니언) 정리하세요
Yaw Pitch Roll (오일러회전)
Yaw Pitch Roll은 상대적인 회전축입니다.
얼리얼 엔진처럼 Z 축이 Up일 때
Roll : X축 , pitch : Y축 , Yaw : Z축 입니다.
Direct X에서 처럼 Y 축이 Up일 때
Pitch : X축 , Yaw : Y축 , Roll : Z축 입니다.
Yaw Pitch Roll를 회전 공식으로 만들면 다음과 같습니다.
Z축이 Up일 때는 Z축 -> Y축 -> X축 순서로 곱해주게 됩니다.
직접 그림
Y축이 Up일 때는 Y축 -> X축 -> Z축 순서로 곱합니다.
직접그림
아래 그림 처럼 항공기가 수평한 땅에 놓여져 있다고 합시다.
출처 - https://gammabeta.tistory.com/1761
항공기 머리부터 꼬리까지 가로지르는 종축(longitudinal axis)을 X축
오른날개에서 왼날개까지 가로지르는 횡축(lateral axis)를 Y축
항공기 중심과 수평면까지 내려가는 수직축(vertical axis)를 Z축
이라고 합시다.
Roll : x축(종축)을 중심으로 회전하는 것.
Pich : y축(횡축)을 중심으로 회전하는 것.
Yaw : z축(수직축)을 중심으로 회전하는 것.
아래 그림을 보면 이하기 쉽습니다.
출처 - https://happy8earth.tistory.com/492
|
짐벌락(김벌락)
짐벌(김벌)이란 단일 축에 대한 물체의 회전을 허용하는 것으로 수평 유지 장치를 말합니다.
짐벌락(김벌락)이란 오일러 각에서 회전 순서에 따라서 회전에 영향을 받는 축이 바뀌기 때문에 3차원 공간 상에서 두 축이 겹쳐서 한 축이 소실되는 현상을 말합니다.
아래 그림을 보면 쉽게 이해할 수 있습니다.
출처 - https://showmiso.tistory.com/55
그림의 짐벌에서 초록색은 y축, 분홍색은 x축, 파란색은 z축을 의미합니다.
y를 회전하면 x와 z에 영향을 줍니다.
x를 회전하면 z에만 영향을 줍니다.
만약 x축을 90도 회전하여 z축과 y축이 일치하게 되면, 한 축이 소실되는 현상이 나타나는데 이것이 짐벌락(김벌락)이라고 합니다.
|
사원수(Quaternion : 쿼터니언)
3차원 그래픽에서 회전을 표현할 때, 행렬 대신 사용하는 수학적 개념으로 4개의 값으로 이루어진 복소수(Complex Number) 체계입니다.
복소수란 가장 큰 범위의 수로 실수부와 허수부의 합으로 구성된 수입니다.
사원수의 장점
출처 - https://showmiso.tistory.com/57
-사원수는 행렬에 비해 연산 속도가 빠르고, 차지하는 메모리의 양도 적으며, 결과의 질에 있어 오류가 날 확률이 적습니다.
-3개의 축에 대한 회전 연산을 동시에 적용하는 경우에 행렬을 사용하면 한 축이 소실되는 짐벌락 현상이 발행할 수 있는데, 사원수를 사용하면 이 현상을 막을 수 있습니다.
사원수의 단점
-공식이 어렵습니다.
사원수의 정의
사원수는 4차원 복소수 공간(Complex Space)의 벡터로서 다음과 같이 나타낸다.
q = <w, x, y, z> = w + xi + yj + zk = (w , (x, y, z))
사원수를 q = s + v 형태로 쓰기도 하는데, 여기서 s 는 q의 w 성분에 해당하는 스칼라(Scalar) 값이고, v는 q의 x, y, z 성분에 해당하는 벡터(Vector) 부분입니다.
q = s + v
사원수의 특징
-사원수의 곱은 일반적인 분배법칙을 따르며 허수 성분인 i, j, k는 다음과 같은 특징을 갖습니다.
출처 - https://showmiso.tistory.com/57
-사원수는 곱셈의 교환법칙이 성립하지 않습니다.
출처 - https://showmiso.tistory.com/57
위와 같은 두 사원수 q1,q2가 있을 때, 두 사원수의 곱q1q2는 다음과 같습니다.
출처 - https://showmiso.tistory.com/57
사원수를 스칼라, 벡터 형태로 표기하여 간단하게 표현하면 다음과 같습니다.
출처 - https://showmiso.tistory.com/57
- 사원수는 켤레(Conjugate)를 갖습니다.
출처 - https://showmiso.tistory.com/57
- 사원수는 역수를 갖습니다.
출처 - https://showmiso.tistory.com/57
단위 쿼터니언을 갖는다. q = [1, (0, 0, 0)]
출처 - https://showmiso.tistory.com/57
단위 쿼터니언은 3D 공간에서 오일러, Axis 대신 방향을 표현합니다.
쿼터니언으로 방향을 표현하려면 쿼터니언을 행렬로 변환하거나, 행렬을 쿼터니언으로 변환할 필요가 있습니다.
사원수의 회전 사원수를 행렬로 변환하면, 아래와 같습니다.
출처 - https://showmiso.tistory.com/57
사원수의 보간
보간(interpolation)이란 처음과 끝의 값을 가지고 중간의 값을 계산하는 것입니다.
물체의 애니메이션을 수행할 때, 보간을 통해 계산된 키프레임 사이의 중간 방향을 생성합니다.
가장 간단한 보간은 선형보간(linear interpolation)으로 두 개의 값을 점으로 생각하고 두 개의 점을 이어주는 직선의 방정식으로부터 값을 얻어내는 방법입니다.
두 사원수 q1,q2에 대해, 선형 보간된 사원수 q(t)에 정규화 해줍니다.
식은 다음과 같습니다.
출처 - https://showmiso.tistory.com/57
그림은 2차원 단면이나, 실제로는 4차원 단위 초구면 상의 경로를 따라갑니다.
출처 - https://showmiso.tistory.com/57
이러한 선형 보간은 간단하고, 효과적이나 오차가 발생하는 문제가 있습니다.
오차를 줄이기 위해서 구면 선형보간(spherical linear interpolation : slerp)을 사용하게 됩니다.
출처 - https://showmiso.tistory.com/57
|