내일배움캠프/TIL

TIL260504 - Quaternion

옆집히드라 2026. 5. 4. 12:22

1. 핵심 개념


오늘은 사원수에 대해 공부해보았다. 우선 사원수를 공부하기에 앞서 외적, 회전행렬, 오일러 공식를 리마인드하고 사원수를 학습하겠다.

  • 외적(Cross product/Outer product)
  • 회전 행렬
  • 오일러 공식
  • 짐벌락(Gimbal Lock): 오일러 각(Euler angle)을 사용하는 경우 특정한 상황에서 회전 움직임에 제한이 발생하는 현상(짐벌에서 회전 시 두 개 이상의 회전 축이 겹쳐져 어느 순간 회전이 발생해도 회전 표현이 안됨)
  • 사원수(quaternion)

2. 상세 내용


2.1. 외적(Cross product/Outer product)

왼손 좌표계, 오른손 좌표계 둘 중 어느 좌표계를 사용하냐에 따라 외적의 방향이 결정된다.

$$\mathbf{a} \times \mathbf{b} = \begin{vmatrix} a_2 & a_3 \ b_2 & b_3 \end{vmatrix} \mathbf{i} - \begin{vmatrix} a_1 & a_3 \ b_1 & b_3 \end{vmatrix} \mathbf{j} + \begin{vmatrix} a_1 & a_2 \ b_1 & b_2 \end{vmatrix} \mathbf{k} \tag{0.1}$$
식 0.1은 외적의 행렬식 형태다.

$$|\mathbf{a} \times \mathbf{b}| = |\mathbf{a}| |\mathbf{b}| \sin \theta \tag{0.2}$$
식 0.2는 외적의 기하학적 정의이다.

2.2. 회전 행렬

z축이 forwad 방향인 왼손 좌표계를 기준으로 x회전(pitch), y회전(yaw), z회전(roll)에 대응되는 회전 행렬은 위 이미지와 같다.

물론 공식이 필요할 때마다 찾아보는게 더 실용적이지만 학습을 위해 빠르게 공식을 유도하는 방법을 찾아보겠다.

[!Definition] 사전 정의

  1. z축이 forward인 왼손 좌표계를 기준으로 함(유니티 기준)
  2. 회전 행렬은 비가환 연산이므로 연산 순서를 명시해야 한다. 여기서는 x -> y -> z 순으로 회전 변환을 실행한다.

아핀 행렬에서의 회전변환은 선형변환이다. 따라서 3차원 유클리드 공간을 기준으로 했을 때 기저벡터 x, y, z에 각각 pitch, yaw, roll을 한 뒤 결과를 유도하는 식으로 회전 행렬을 유도해보겠다.

위 이미지와 같이 2개 축을 $\theta$만큼 반시계 방향으로 회전한 경우 가로 축 기저벡터는 $(cos\theta, sin\theta)$이 되고 세로 축 기저벡터는 $(-sin\theta, cos\theta)$가 된다. 이때 반시계 방향은 $R_x$의 경우 y->z, $R_y$의 경우 z->x, $R_z$의 경우 x->y 방향이 된다.

![[일러스트11.png]]

유도할 때도 위 이미지와 같이 기준축의 회전방향을 신경쓰면서 회전변환 행렬을 구하면 된다.

2.3. 오일러 공식(Euler's formula)

오일러 공식은 삼각함수와 지수함수에 대한 관계를 나타낼 때 사용하는 식이다. 여기서 각 $\theta$는 실수부와 허수부 사이의 각이다.

$$e^{i\theta} = \cos\theta + i\sin\theta \tag{1.1}$$
식 1.1은 오일러 공식이다. 오일러 공식을 유도하기 위해 삼각함수와 지수함수의 도함수를 구하는 법과 비 판정법에 대한 지식이 선행되어야 한다.

2.2.1. 비판정법(Ratio test)

멱급수의 항의 계수가 일정한 규칙으로 전개되는 경우 식 1.2의 L의 값으로 급수의 수렴 여부를 판정하는 비판정법을 사용한다.
$$L = \lim_{n \to \infty} \left| \frac{a_{n+1}}{a_{n}} \right| \tag{1.2}$$

  • L의 값이 1보다 작으면 급수는 언제나 수렴한다.
  • L의 값이 1과 같으면 급수는 수렴할 수도, 발산할 수도 있다.
  • L의 값이 1보다 크면 급수는 언제나 발산한다.

$$L = \lim_{n \to \infty} \left| \frac{a \cdot r^{n+1}}{a \cdot r^n} \right| = |r| \tag{1.3}$$
식 1.3은 기하급수에 비판정법을 적용한 모습이다. $L = |r| < 1$의 경우 기하급수는 수렴하는데 이때 범위의 절반을 수렴반경(Radius of convergence)이라고 한다.

$$L = \lim_{n \to \infty} \left| \frac{c_{n+1} (x-a)^{n+1}}{c_n (x-a)^n} \right| = |x-a| \cdot \lim_{n \to \infty} \left| \frac{c_{n+1}}{c_n} \right| \tag{1.4}$$
$$ |x-a| \cdot \lim_{n \to \infty} \left| \frac{c_{n+1}}{c_n} \right|<1 \tag{1.5}$$
$$ |x-a| <\frac{1}{\lim_{n \to \infty} \left| \frac{c_{n+1}}{c_n} \right|} \tag{1.6}$$
$$ |x-a| <\lim_{n \to \infty} \left| \frac{c_{n}}{c_{n+1}} \right| \tag{1.7}$$
식 1.4는 멱급수에 비판정법을 적용한 모습이다. 식 1.5와 같이 1보다 작을 때 급수는 수렴하며, 식 1.6과 같이 이항한 뒤에 극한의 성질을 이용하여 식 1.7과 같이 전개하면 수렴반경은 $R = \lim_{n \to \infty} \left| \frac{c_n}{c_{n+1}} \right|$와 같이 구해진다.

위 결과를 바탕으로 $\sum_{n=1}^{\infty}\frac{r^n}{n}$과 같은 멱급수의 수렴조건을 구하면 아래에 식 1.8과 같다.
$$L = |r| \cdot \lim_{n \to \infty} \frac{n}{n+1}=|r| \cdot \lim_{n \to \infty} \frac{(n+1)-1}{n+1}=|r|-|r| \cdot \lim_{n \to \infty} \frac{1}{n+1}=|r| \tag{1.8}$$
위 멱급수는 수렴반경이 기하급수와 동일한 것을 알 수 있다.

2.2.2. 매클로린 급수(Maclaurin series)

매클로린 급수는 식 2.1의 테일러 급수의 중심점 a가 0인 특수한 경우이다.
$$f(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n!} (x-a)^n \tag{2.1}$$

자연지수 함수, 사인 함수, 코사인 함수의 매클로린 전개식은 각각 식 2.2, 2.3, 2.4와 같으며 2.2.1의 비판정법을 사용하면 L값이 모두 0으로 수렴하는 것을 알 수 있다.

$$e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!} = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \dots \tag{2.2}$$
$$\sin x = \sum_{n=0}^{\infty} \frac{(-1)^n x^{2n+1}}{(2n+1)!} = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + \dots \tag{2.3}$$
$$\cos x = \sum_{n=0}^{\infty} \frac{(-1)^n x^{2n}}{(2n)!} = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \frac{x^6}{6!} + \dots \tag{2.4}$$

2.2.3. 오일러 공식 유도

사인 함수와 코사인 함수의 합을 식 2.3, 2.4에서 구한 매클로린 전개식으로 표현하면 식 3.1와 같다.
$$\cos x + \sin x = 1 + x - \frac{x^2}{2!} - \frac{x^3}{3!} + \frac{x^4}{4!} + \frac{x^5}{5!} - \frac{x^6}{6!} - \frac{x^7}{7!} + \dots \tag{3.1}$$

자연지수 함수에 x에 허수 i를 곱한 뒤 식 2.2와 같이 매클로린 전개식으로 표현하면 식 3.2와 같다.
$$e^{ix} = 1 + ix - \frac {1}{2!} x^2 - \frac {i}{2!} x^3 + \frac {1}{4!} x^4 + \frac {i}{5!} x^5 - \frac {1}{6!} x^6 - \frac {i}{7!} x^7 + \dots \tag{3.2}$$

이때 식 3.2에 우변항은 식 3.1에서 $\sin x$에 허수 i를 곱한 결과와 같다. 따라서 식 1.1의 오일러 공식이 유도됨을 알 수 있다.

2.3. 사원수(Quaternion)

사원수는 4차원의 수집합으로서, 2차원의 복소평면을 4차원으로 확장한 것과 같다. 따라서 사원수는 실수부 1개, 허부수 3개(i, j, k)를 가진다.

사원수간 곱셈 결과는 아래 표와 같다.

x 1 i j k
1 1 i j k
i i -1 k -j
j j -k -1 i
k k j -i -1

2.2. 회전행렬 파트에서 사전 정의한 회전순서와 유사하게 사원수에서도 x->y->z->x처럼 i->j->k->i 순서에 따라 두 허수의에 따라 다른 허수의 값이 나온다.

개인적으로 임의의 허수의 제곱 또는 세 허수의 곱은 -1; i->j->k->i 순에 따라 두 허수의 곱은 다른 허수, 만약 인접하지 않은 경우는 음수가 붙은다른 허수가 나오는 것으로 외웠다.

2.3.1. 사원수의 대수적 성질

복수수와 동일하게 동일한 실수부, 허수부끼리 연산을 한다.

  • 덧셈에 대해 닫혀 있다.
  • 덧셈에 대한 교환법칙, 결합법칙이 성립한다.
  • 덧셈에 대한 항등원, 역원이 존재한다.
  • 곱셈에 대해 닫혀 있다.
  • 곱셈에 대해 결합법칙이 성립하나, 교환법칙은 성립하지 않는다.
  • 곱셈에 대해 항등원, 역원(켤레)이 존재한다.
  • 덧셈과 곱셈에 대한 분배법칙이 성립한다.

위의 성질로 봤을 때 사원수는 체(field)에 대해서 교환법칙만 성립하지 않는 것을 알 수 있다.(유사체(Skew field)라고 함) 따라서 사원수를 스칼라로 사용하는 벡터공간을 구성한다면 곱셈에 대한 교환법칙이 불가능하기 때문에 기존과 똑같은 사용이 불가능해 보인다.

사원수를 복소수와 유사하게 식 4.1과 같이 표현하겠다.
$$q = a + bi + cj + dk \tag{4.1}$$

사원수의 크기인 노름(Norm)은 식 4.2과 같이 구한다.
$$|q|=\sqrt{a^2 + b^2 + c^2 + d^2} \tag{4.1}$$

사원수의 켤레 사원수는 식 4.3과 같이 구한다.
$$q^* = a - ( bi + cj + dk ) \tag{4.3}$$

임의의 사원수에 그 켤레를 곱하면 크기의 제곱 값이 나온다.
$$q^* q = a^2 + b^2 + c^2 + d^2 = |q|^2 \tag{4.4}$$

이외에도 사원수는 식 4.5와 같은 성질을 만족한다.
$$(q^)^ = q; (pq)^* = q^* p^* \tag{4.5}$$

사원수를 벡터로 표기할 때는 실수와 3차원 벡터(각 허수부를 축으로)로 식 4.6과 같이 표기한다. 이때 실수부 w가 0인 경우 특별히 순허수 사원수(Pure imaginary quaternion)이라고 부른다.
$$q = w + xi + yj + zk = (w, \vec{v}) \tag{4.6}$$

두 사원수의 합은 식 4.6과 같다.
$$q_1 + q_2 = (w_1 + w_2, \vec{v_1} + \vec{v_2}) \tag{4.7}$$

두 사원수의 곱은 식 4.7과 같다. 사원수의 곱에 교환법칙이 성립하지 않는 연산인 외적이 들어간 것으로 사원수의 곱이 교환법칙을 성립하지 않음을 확인할 수 있다.
$$q_1 \cdot q_2 = (w_1w_2 - (\vec{v_1} \cdot \vec{v_2}), w_1\vec{v_2} + w_2\vec{v_1} + \vec{v_1} \times \vec{v_2}) \tag{4.8}$$

두 순허수 사원수의 곱은 식 4.9와 같다.
$$q_1 \cdot q_2 = (-\vec{v_1} \cdot \vec{v_2}, \vec{v_1} \times \vec{v_2}) \tag{4.8}$$

3. 질문 및 해결 (Q&A)


4. 관련 문서 (Links)


[외적 이미지 출처](file:right_left_hand_system_magnetica_png [ Encyclopedia Magnetica™ ])
[회전행렬](회전 행렬(Rotation matrix)의 유도 - tantk land)
[아핀 변환 파트 참고](이득우의 게임 수학)
[짐벌락](짐벌락(Gimbal LocK) 현상이란? : 네이버 블로그)
[이득우의 게임수학](이득우의 게임 수학 | 이득우 | 알라딘)

'내일배움캠프 > TIL' 카테고리의 다른 글

TIL260507 - Quaternion  (0) 2026.05.07
TIL260506 - Quaternion  (0) 2026.05.06
TIL260430 - CPP  (0) 2026.04.30
TIL260429 - CPP  (0) 2026.04.29
TIL260428 - Unreal  (0) 2026.04.28