13. 쿼터니언
13.1 쿼터니언의 역사와 동기
쿼터니언(Quaternion)은 1843년 아일랜드의 수학자 윌리엄 로완 해밀턴(William Rowan Hamilton)이 발견한 수 체계입니다[6]. 복소수를 3차원으로 확장하려는 시도에서 탄생했으며, 현대 로봇공학, 컴퓨터 그래픽스, 항공우주 분야에서 회전을 표현하는 가장 효율적인 방법 중 하나로 자리잡았습니다.
왜 쿼터니언을 사용하는가?
오일러 각의 문제점들을 해결하기 위해:
- ✅ 짐벌 락 없음: 특이점이 존재하지 않음
- ✅ 효율적인 보간: 매끄러운 회전 경로 생성 (SLERP)
- ✅ 수치 안정성: 정규화만으로 유효성 유지
- ✅ 계산 효율: 회전 합성이 빠름 (행렬보다 효율적)
- ✅ 메모리 효율: 4개 파라미터 (vs 9개 행렬 원소)
13.2 쿼터니언의 정의
쿼터니언은 1개의 실수부와 3개의 허수부로 구성된 4차원 수입니다:
$$ \mathbf{q} = q_0 + q_1 i + q_2 j + q_3 k $$
또는 스칼라-벡터 형태로:
$$ \mathbf{q} = [q_0, \mathbf{q}_v] = [q_0, q_1, q_2, q_3] $$
여기서:
- $q_0 \in \mathbb{R}$: 스칼라부(Scalar Part) 또는 실수부
- $\mathbf{q}_v = \begin{bmatrix} q_1 & q_2 & q_3 \end{bmatrix}^T \in \mathbb{R}^3$: 벡터부(Vector Part) 또는 허수부
- $i, j, k$: 허수 단위(Imaginary Units)
허수 단위의 성질: $$ \begin{align} i^2 &= j^2 = k^2 = ijk = -1 \\ ij &= k, \quad jk = i, \quad ki = j \\ ji &= -k, \quad kj = -i, \quad ik = -j \end{align} $$
이는 비가환(Non-commutative) 대수입니다: $ij \neq ji$
13.3 쿼터니언의 기본 연산
(1) 덧셈과 뺄셈
(2) 스칼라 곱셈
$$ \lambda \mathbf{q} = [\lambda q_0, \lambda \mathbf{q}_v] $$
(3) 쿼터니언 곱셈 (해밀턴 곱)
가장 중요한 연산으로, 회전의 합성에 사용됩니다:
스칼라부:
벡터부:
전체 형태:
⚠️ 주의: $\mathbf{q}_1 \otimes \mathbf{q}_2 \neq \mathbf{q}_2 \otimes \mathbf{q}_1$ (비가환)
(4) 켤레(Conjugate)
$$ \mathbf{q}^* = [q_0, -\mathbf{q}_v] = [q_0, -q_1, -q_2, -q_3] $$
– $(\mathbf{q}^*)^* = \mathbf{q}$
(5) 노름(Norm)
$$ |\mathbf{q}| = \sqrt{q_0^2 + q_1^2 + q_2^2 + q_3^2} = \sqrt{\mathbf{q} \otimes \mathbf{q}^*} $$
(6) 정규화(Normalization)
$$ \hat{\mathbf{q}} = \frac{\mathbf{q}}{|\mathbf{q}|} $$
단위 쿼터니언(Unit Quaternion): $|\mathbf{q}| = 1$
회전을 표현하는 쿼터니언은 항상 단위 쿼터니언이어야 합니다.
(7) 역원(Inverse)
$$ \mathbf{q}^{-1} = \frac{\mathbf{q}^*}{|\mathbf{q}|^2} $$
단위 쿼터니언의 경우: $$ \mathbf{q}^{-1} = \mathbf{q}^* $$
검증: $\mathbf{q} \otimes \mathbf{q}^{-1} = \mathbf{q}^{-1} \otimes \mathbf{q} = [1, \mathbf{0}]$ (항등원)
13.4 회전 쿼터니언
축-각에서 쿼터니언으로
회전축 $\mathbf{u} = \begin{bmatrix} u_x & u_y & u_z \end{bmatrix}^T$ (단위 벡터, $|\mathbf{u}| = 1$)를 중심으로 각도 $\theta$만큼 회전하는 쿼터니언:
$$ \mathbf{q}(\mathbf{u}, \theta) = \begin{bmatrix} \cos\frac{\theta}{2} \\ u_x \sin\frac{\theta}{2} \\ u_y \sin\frac{\theta}{2} \\ u_z \sin\frac{\theta}{2} \end{bmatrix} = \left[\cos\frac{\theta}{2}, \mathbf{u} \sin\frac{\theta}{2}\right] $$

그림 15. 축-각 표현과 쿼터니언
중요한 특징:
- 각도가 $\frac{\theta}{2}$인 이유: 쿼터니언 회전은 이중 커버링(Double Covering)
- $\mathbf{q}$와 $-\mathbf{q}$는 같은 회전을 나타냄
- $|\mathbf{q}| = \cos^2\frac{\theta}{2} + \sin^2\frac{\theta}{2}(\mathbf{u} \cdot \mathbf{u}) = 1$ ✓
특수한 회전 쿼터니언
항등 회전 (회전 없음): $$ \mathbf{q}_{identity} = [1, 0, 0, 0] $$
X축 중심 회전: $$ \mathbf{q}_x(\alpha) = \left[\cos\frac{\alpha}{2}, \sin\frac{\alpha}{2}, 0, 0\right] $$
Y축 중심 회전: $$ \mathbf{q}_y(\beta) = \left[\cos\frac{\beta}{2}, 0, \sin\frac{\beta}{2}, 0\right] $$
Z축 중심 회전: $$ \mathbf{q}_z(\gamma) = \left[\cos\frac{\gamma}{2}, 0, 0, \sin\frac{\gamma}{2}\right] $$
180° 회전: $$ \mathbf{q}(\mathbf{u}, \pi) = [0, u_x, u_y, u_z] $$
13.5 쿼터니언을 이용한 점의 회전
3D 점 $\mathbf{p} = \begin{bmatrix} x & y & z \end{bmatrix}^T$를 회전시키는 방법:
(1) 점을 순수 쿼터니언으로 변환
$$ \mathbf{p}_q = [0, \mathbf{p}] = [0, x, y, z] $$
(2) 샌드위치 곱(Sandwich Product) 적용
$$ \mathbf{p}_q’ = \mathbf{q} \otimes \mathbf{p}_q \otimes \mathbf{q}^* $$
여기서:
- $\mathbf{q}$: 회전을 나타내는 단위 쿼터니언
- $\mathbf{q}^*$: $\mathbf{q}$의 켤레
- $\otimes$: 쿼터니언 곱셈
(3) 결과에서 벡터부 추출
$$ \mathbf{p}’ = \mathbf{p}_q'[1:3] $$
예제: Z축 중심 90° 회전
$$ \mathbf{q} = \left[\cos 45°, 0, 0, \sin 45°\right] = \left[\frac{\sqrt{2}}{2}, 0, 0, \frac{\sqrt{2}}{2}\right] $$
점 $(1, 0, 0)$을 회전:
$$ \mathbf{p}_q = [0, 1, 0, 0] $$
$$ \mathbf{p}_q’ = \mathbf{q} \otimes \mathbf{p}_q \otimes \mathbf{q}^* = [0, 0, 1, 0] $$
결과: $(0, 1, 0)$ ✓
13.6 쿼터니언과 회전 행렬 변환
쿼터니언 → 회전 행렬
단위 쿼터니언 $\mathbf{q} = [q_0, q_1, q_2, q_3]$에 대응하는 회전 행렬:
간략 형태 (외적 행렬 사용):
회전 행렬 → 쿼터니언
회전 행렬 $\mathbf{R}$에서 쿼터니언을 추출하는 방법 (Shepperd’s Method)[7]:
트레이스(Trace) 계산:
(Case 3, 4도 유사하게 $q_2$ 또는 $q_3$를 먼저 계산)
13.7 쿼터니언과 오일러 각 변환
ZYX 오일러 각 → 쿼터니언
Roll($\phi$), Pitch($\theta$), Yaw($\psi$):
$$ \mathbf{q} = \mathbf{q}_x(\phi) \otimes \mathbf{q}_y(\theta) \otimes \mathbf{q}_z(\psi) $$
직접 계산: $$ \begin{bmatrix} q_0 \\ q_1 \\ q_2 \\ q_3 \end{bmatrix} = \begin{bmatrix} \cos\frac{\phi}{2}\cos\frac{\theta}{2}\cos\frac{\psi}{2} + \sin\frac{\phi}{2}\sin\frac{\theta}{2}\sin\frac{\psi}{2} \\ \sin\frac{\phi}{2}\cos\frac{\theta}{2}\cos\frac{\psi}{2} – \cos\frac{\phi}{2}\sin\frac{\theta}{2}\sin\frac{\psi}{2} \\ \cos\frac{\phi}{2}\sin\frac{\theta}{2}\cos\frac{\psi}{2} + \sin\frac{\phi}{2}\cos\frac{\theta}{2}\sin\frac{\psi}{2} \\ \cos\frac{\phi}{2}\cos\frac{\theta}{2}\sin\frac{\psi}{2} – \sin\frac{\phi}{2}\sin\frac{\theta}{2}\cos\frac{\psi}{2} \end{bmatrix} $$
쿼터니언 → ZYX 오일러 각
$$ \begin{align} \phi &= \arctan2\left(2(q_0 q_1 + q_2 q_3), 1 – 2(q_1^2 + q_2^2)\right) \\ \theta &= \arcsin\left(2(q_0 q_2 – q_3 q_1)\right) \\ \psi &= \arctan2\left(2(q_0 q_3 + q_1 q_2), 1 – 2(q_2^2 + q_3^2)\right) \end{align} $$
13.8 쿼터니언 회전의 합성
두 회전 $\mathbf{q}_1$, $\mathbf{q}_2$를 연속 적용:
$$ \mathbf{q}_{total} = \mathbf{q}_2 \otimes \mathbf{q}_1 $$
⚠️ 순서 주의: 먼저 적용할 회전이 오른쪽!
예제: Z축 30° 회전 후 X축 45° 회전
$$ \mathbf{q}_1 = \mathbf{q}_z(30°), \quad \mathbf{q}_2 = \mathbf{q}_x(45°) $$
$$ \mathbf{q}_{total} = \mathbf{q}_x(45°) \otimes \mathbf{q}_z(30°) $$
장점:
- 행렬 곱셈 (27번)보다 쿼터니언 곱셈 (16번)이 빠름
- 자동으로 정규화 유지 가능
13.9 쿼터니언 보간 (SLERP)
SLERP (Spherical Linear Interpolation)는 두 쿼터니언 사이를 구면을 따라 균일하게 보간하는 방법입니다[8].
$$ \text{SLERP}(\mathbf{q}_1, \mathbf{q}_2, t) = \frac{\sin((1-t)\omega)}{\sin\omega} \mathbf{q}_1 + \frac{\sin(t\omega)}{\sin\omega} \mathbf{q}_2 $$
여기서:
-
$t \in [0, 1]$: 보간 파라미터 ($t=0$이면 $\mathbf{q}_1$, $t=1$이면 $\mathbf{q}_2$)
-
$\omega = \arccos(\mathbf{q}_1 \cdot \mathbf{q}_2)$: 두 쿼터니언 사이의 각도
-

그림 16. SLERP 보간
SLERP의 장점:
- ✅ 일정한 각속도 유지
- ✅ 최단 경로 회전
- ✅ 짐벌 락 없음
- ✅ 매끄러운 애니메이션
간소화된 알고리즘 ($\omega$가 작을 때):
def slerp(q1, q2, t):
dot = q1.dot(q2)
# 최단 경로 보장
if dot < 0:
q2 = -q2
dot = -dot
# 거의 같은 경우
if dot > 0.9995:
return normalize(q1 + t * (q2 - q1))
# 일반적인 경우
omega = arccos(dot)
return (sin((1-t)*omega) * q1 + sin(t*omega) * q2) / sin(omega)
13.10 쿼터니언의 미분과 각속도
쿼터니언의 시간 미분은 각속도(Angular Velocity)와 관련됩니다:
$$ \dot{\mathbf{q}}(t) = \frac{1}{2} \boldsymbol{\omega}(t) \otimes \mathbf{q}(t) $$
여기서:
- $\boldsymbol{\omega}(t) = [0, \omega_x, \omega_y, \omega_z]$: 각속도 쿼터니언 (순수 쿼터니언)
- $\mathbf{q}(t)$: 시간에 따른 자세
각속도에서 쿼터니언 업데이트 (오일러 적분):
$$ \mathbf{q}(t + \Delta t) = \mathbf{q}(t) + \dot{\mathbf{q}}(t) \Delta t $$
정규화: $$ \mathbf{q}(t + \Delta t) \leftarrow \frac{\mathbf{q}(t + \Delta t)}{|\mathbf{q}(t + \Delta t)|} $$
13.11 쿼터니언 실전 예제
예제 1: 축-각에서 쿼터니언 생성
문제: 벡터 $(1, 1, 1)$ 방향 축을 중심으로 120° 회전하는 쿼터니언은?
풀이:
회전축 정규화: $$ \mathbf{u} = \frac{1}{\sqrt{3}} \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} $$
쿼터니언: $$ \mathbf{q} = \left[\cos 60°, \frac{1}{\sqrt{3}}\sin 60°, \frac{1}{\sqrt{3}}\sin 60°, \frac{1}{\sqrt{3}}\sin 60°\right] $$
$$ = \left[0.5, \frac{\sqrt{3}/2}{\sqrt{3}}, \frac{\sqrt{3}/2}{\sqrt{3}}, \frac{\sqrt{3}/2}{\sqrt{3}}\right] = \begin{bmatrix} 0.5 \\ 0.5 \\ 0.5 \\ 0.5 \end{bmatrix} $$
검증: $|\mathbf{q}| = \sqrt{0.25 + 0.25 + 0.25 + 0.25} = 1$ ✓
예제 2: 쿼터니언 곱셈
문제: $\mathbf{q}_1 = [0.7071, 0.7071, 0, 0]$ (X축 90°)와 $\mathbf{q}_2 = [0.7071, 0, 0.7071, 0]$ (Y축 90°)의 곱은?
풀이:
$$ \mathbf{q} = \mathbf{q}_2 \otimes \mathbf{q}_1 $$
스칼라부: $$ q_0 = 0.7071 \times 0.7071 – (0.7071 \times 0 + 0.7071 \times 0 + 0 \times 0) = 0.5 $$
벡터부:
답: $\mathbf{q} = [0.5, 0.5, 0.5, 0.5]$ (위의 예제 1과 동일!)
예제 3: 쿼터니언으로 점 회전
문제: 쿼터니언 $\mathbf{q} = [0.7071, 0, 0, 0.7071]$ (Z축 90°)로 점 $(1, 0, 0)$ 회전
풀이:
$$ \mathbf{p}_q = [0, 1, 0, 0] $$
$$ \mathbf{q}^* = [0.7071, 0, 0, -0.7071] $$
$$ \mathbf{p}_q’ = \mathbf{q} \otimes \mathbf{p}_q \otimes \mathbf{q}^* $$
중간 계산: $$ \mathbf{q} \otimes \mathbf{p}_q = [0, 0.7071, 0.7071, 0.7071] $$
$$ \mathbf{p}_q’ = [0, 0.7071, 0.7071, 0.7071] \otimes [0.7071, 0, 0, -0.7071] = [0, 0, 1, 0] $$
답: $(0, 1, 0)$ ✓
예제 4: 쿼터니언에서 회전 행렬
문제: $\mathbf{q} = [0.7071, 0.7071, 0, 0]$에 대응하는 회전 행렬은?
풀이:
$$ \mathbf{R} = \begin{bmatrix} 1 – 2(0^2 + 0^2) & 2(0.7071 \times 0 – 0.7071 \times 0) & 2(0.7071 \times 0 + 0.7071 \times 0) \\ 2(0.7071 \times 0 + 0.7071 \times 0) & 1 – 2(0.7071^2 + 0^2) & 2(0 \times 0 – 0.7071 \times 0.7071) \\ 2(0.7071 \times 0 – 0.7071 \times 0) & 2(0 \times 0 + 0.7071 \times 0.7071) & 1 – 2(0.7071^2 + 0^2) \end{bmatrix} $$
$$ = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & -1 \\ 0 & 1 & 0 \end{bmatrix} $$
이는 X축 중심 90° 회전 행렬입니다. ✓
예제 5: SLERP 보간
문제: $\mathbf{q}_1 = [1, 0, 0, 0]$ (회전 없음)와 $\mathbf{q}_2 = [0.7071, 0, 0, 0.7071]$ (Z축 90°) 사이를 $t=0.5$로 보간
풀이:
$$ \omega = \arccos(\mathbf{q}_1 \cdot \mathbf{q}_2) = \arccos(0.7071) = 45° = \frac{\pi}{4} $$
$$ \mathbf{q}(0.5) = \frac{\sin(22.5°)}{\sin(45°)} \mathbf{q}_1 + \frac{\sin(22.5°)}{\sin(45°)} \mathbf{q}_2 $$
$$ = \frac{0.3827}{0.7071} [1, 0, 0, 0] + \frac{0.3827}{0.7071} [0.7071, 0, 0, 0.7071] $$
$$ = [0.5412, 0, 0, 0] + [0.3827, 0, 0, 0.3827] = [0.9239, 0, 0, 0.3827] $$
검증: 이는 Z축 중심 약 45° 회전 (90°의 절반) ✓
13.12 쿼터니언 장단점 요약
장점:
- ✅ 짐벌 락 없음
- ✅ 효율적인 메모리 사용 (4개)
- ✅ 빠른 회전 합성
- ✅ 안정적인 수치 계산
- ✅ 매끄러운 보간 (SLERP)
- ✅ 각속도 적분 용이
단점:
- ❌ 직관적이지 않음
- ❌ 4개 파라미터, 1개 제약 (정규화 필요)
- ❌ $\mathbf{q}$와 $-\mathbf{q}$ 중복성
- ❌ 시각화 어려움
- ❌ 학습 곡선 높음
14. 축-각 표현과 로드리게스 공식
14.1 축-각 표현(Axis-Angle Representation)
축-각 표현은 회전을 회전축 벡터와 회전 각도로 표현하는 가장 기하학적이고 직관적인 방법입니다[9].
표현 방식:
$$ \mathbf{r} = \theta \mathbf{u} $$
여기서:
- $\mathbf{u} \in \mathbb{R}^3$: 단위 회전축 벡터 ($|\mathbf{u}| = 1$)
- $\theta \in [0, \pi]$: 회전 각도
- $\mathbf{r} \in \mathbb{R}^3$: 회전 벡터(Rotation Vector) 또는 축-각 벡터
기하학적 의미:
- 벡터의 방향: 회전축
- 벡터의 크기: 회전 각도

그림 17. 축-각 표현
14.2 로드리게스 공식(Rodrigues’ Formula)
로드리게스 공식은 축-각 표현에서 회전 행렬로 직접 변환하는 공식입니다[10].
단위 벡터 $\mathbf{u}$를 축으로 각도 $\theta$만큼 회전:
여기서 $[\mathbf{u}]_\times$는 $\mathbf{u}$의 외적 행렬(Skew-symmetric Matrix):
$$ [\mathbf{u}]_\times = \begin{bmatrix} 0 & -u_z & u_y \\ u_z & 0 & -u_x \\ -u_y & u_x & 0 \end{bmatrix} $$
성질:
– $[\mathbf{u}]_\times^T = -[\mathbf{u}]_\times$ (반대칭)
– $[\mathbf{u}]_\times^2 = \mathbf{u}\mathbf{u}^T – \mathbf{I}$ (Rodrigues 전개에 사용)
전개 형태:
$$ \mathbf{R}(\mathbf{u}, \theta) = \cos\theta \mathbf{I} + (1 – \cos\theta) \mathbf{u}\mathbf{u}^T + \sin\theta [\mathbf{u}]_\times $$
14.3 로드리게스 공식의 유도
테일러 급수 전개를 이용한 유도:
회전 행렬의 지수 표현:
지수 함수의 테일러 급수:
핵심 성질:
이를 이용하여 정리하면:
짝수 항:
홀수 항:
따라서:
14.4 회전 행렬에서 축-각 추출
회전 행렬 $\mathbf{R}$에서 축-각을 추출:
(1) 회전 각도
트레이스 이용: $$ \theta = \arccos\left(\frac{\text{tr}(\mathbf{R}) – 1}{2}\right) $$
유도: $$ \text{tr}(\mathbf{R}) = 1 + 2\cos\theta $$
(2) 회전축
$\theta \neq 0, \pi$일 때:
특수한 경우:
$\theta = 0$ (항등 회전):
- 회전축 임의 (보통 $(0, 0, 1)$ 선택)
$\theta = \pi$ (180° 회전):
- $\mathbf{u}$는 $\mathbf{R} + \mathbf{I}$의 고유벡터 (고유값 2)
- 실용적 방법: 대각 원소가 최대인 행/열에서 추출

14.5 축-각과 쿼터니언 관계
축-각 $(\mathbf{u}, \theta)$와 쿼터니언의 관계는 앞에서 다루었습니다:
$$ \mathbf{q} = \left[\cos\frac{\theta}{2}, \mathbf{u}\sin\frac{\theta}{2}\right] $$
역변환: $$ \theta = 2\arccos(q_0), \quad \mathbf{u} = \frac{\mathbf{q}_v}{|\mathbf{q}_v|} = \frac{\mathbf{q}_v}{\sin\frac{\theta}{2}} $$
14.6 축-각 실전 예제
예제 1: 로드리게스 공식 적용
문제: Z축 $(0, 0, 1)$을 중심으로 90° 회전하는 회전 행렬을 로드리게스 공식으로 구하라.
풀이:
$$ \mathbf{u} = \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}, \quad \theta = 90° = \frac{\pi}{2} $$
$$ [\mathbf{u}]_\times = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} $$
$$ [\mathbf{u}]_\times^2 = \begin{bmatrix} -1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 0 \end{bmatrix} $$
$$ = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} + \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} + \begin{bmatrix} -1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 0 \end{bmatrix} $$
$$ = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} $$
이는 $\mathbf{R}_z(90°)$와 일치합니다. ✓
예제 2: 임의 축 회전
문제: 벡터 $(1, 1, 0)$ 방향 축을 중심으로 60° 회전
풀이:
단위 벡터: $$ \mathbf{u} = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 \\ 1 \\ 0 \end{bmatrix} $$
$$ [\mathbf{u}]_\times = \frac{1}{\sqrt{2}} \begin{bmatrix} 0 & 0 & 1 \\ 0 & 0 & -1 \\ -1 & 1 & 0 \end{bmatrix} $$
로드리게스 공식 적용 (계산 생략):
$$ \mathbf{R} \approx \begin{bmatrix} 0.75 & -0.433 & 0.5 \\ 0.433 & 0.75 & -0.5 \\ -0.5 & 0.5 & 0.866 \end{bmatrix} $$
15. 회전 표현 방법 비교
15.1 종합 비교표
| 특성 | 회전 행렬 | 오일러 각 | 축-각 | 쿼터니언 |
|---|---|---|---|---|
| 파라미터 수 | 9 (6 제약) | 3 | 4 (1 제약) | 4 (1 제약) |
| 자유도 | 3 | 3 | 3 | 3 |
| 중복성 | 없음 | 있음 (12종류) | 있음 ($\pm\mathbf{r}$) | 있음 ($\pm\mathbf{q}$) |
| 특이점 | 없음 | 있음 (짐벌 락) | 없음 | 없음 |
| 직관성 | 낮음 | 높음 | 중간 | 낮음 |
| 계산 효율 | 낮음 (27곱) | 높음 | 중간 | 높음 (16곱) |
| 메모리 | 36 bytes | 12 bytes | 16 bytes | 16 bytes |
| 보간 | 어려움 | 어려움 | 가능 | 우수 (SLERP) |
| 합성 | 행렬 곱 | 복잡 | 복잡 | 쿼터니언 곱 |
| 정규화 | 재직교화 필요 | 불필요 | 불필요 | 간단 |
| 역변환 | 전치 | 부호 반전 | 부호/축 반전 | 켤레 |
15.2 응용 분야별 추천
컴퓨터 그래픽스 & 게임
- 추천: 쿼터니언
- 이유: SLERP, 계산 효율, 짐벌 락 없음
로봇 제어
- 추천: 회전 행렬 또는 쿼터니언
- 이유: 안정성, 선형 대수 활용
항공우주
- 추천: 쿼터니언 (주) + 오일러 각 (보조)
- 이유: 짐벌 락 회피, 인간 이해를 위한 오일러 각 변환
컴퓨터 비전
- 추천: 회전 행렬 또는 축-각 (로드리게스)
- 이유: 카메라 보정, 최적화에 적합
교육용
- 추천: 오일러 각 → 회전 행렬 → 쿼터니언 순서
- 이유: 점진적 난이도 상승
15.3 변환 요약 다이어그램
Euler Angles
↕
Rotation Matrix ←→ Quaternion
↕ ↕
Axis-Angle ← →
모든 표현은 상호 변환 가능하며, 각각의 장단점이 있습니다.
15.4 실무 권장사항
- 내부 계산: 쿼터니언 또는 회전 행렬
- 사용자 인터페이스: 오일러 각
- 데이터 저장: 쿼터니언 (메모리 효율)
- 애니메이션: 쿼터니언 (SLERP)
- 수학적 분석: 축-각 또는 회전 행렬
