10.3 쿼터니언의 수학적 정의와 표기법
1. 쿼터니언의 형식적 정의
쿼터니언(quaternion)은 다음의 형태를 가지는 4차원 수이다.
\mathbf{q} = q_w + q_x i + q_y j + q_z k
여기서
- q_w, q_x, q_y, q_z \in \mathbb{R}: 4개의 실수 성분
- i, j, k: 허수 단위들이며 다음의 곱셈 관계를 만족함
i^2 = j^2 = k^2 = ijk = -1
이 단순한 정의로부터 쿼터니언의 모든 대수적 성질이 도출된다.
2. 쿼터니언의 집합 표기
모든 쿼터니언의 집합은 \mathbb{H}로 표기한다. 이는 해밀턴(Hamilton)의 H에서 유래하며, 그를 기리는 표기이다.
\mathbb{H} = \{q_w + q_x i + q_y j + q_z k : q_w, q_x, q_y, q_z \in \mathbb{R}\}
\mathbb{H}는 \mathbb{R}^4와 일대일 대응되며, 4차원 벡터 공간으로 볼 수 있다.
3. 다양한 표기법
쿼터니언은 응용에 따라 여러 가지 표기법으로 표현된다.
3.1 해밀턴 표기
\mathbf{q} = q_w + q_x i + q_y j + q_z k
원래 해밀턴이 사용한 표기이며, i, j, k가 명시적으로 표시된다. 수학적 분석에서 자주 사용된다.
3.2 4-튜플 표기
\mathbf{q} = (q_w, q_x, q_y, q_z)
또는
\mathbf{q} = \begin{bmatrix}q_w \\ q_x \\ q_y \\ q_z\end{bmatrix}
4차원 벡터로 표기하며, 컴퓨터 구현과 행렬 연산에서 편리하다.
3.3 스칼라-벡터 표기
\mathbf{q} = (q_w, \mathbf{q}_v)
또는
\mathbf{q} = q_w + \mathbf{q}_v
여기서 \mathbf{q}_v = (q_x, q_y, q_z) \in \mathbb{R}^3는 벡터 부분이다. 이 표기는 회전 표현과 자세 추정에서 자주 사용되며, 쿼터니언의 기하학적 의미를 강조한다.
3.4 실수부와 허수부 표기
\mathbf{q} = \mathrm{Re}(\mathbf{q}) + \mathrm{Im}(\mathbf{q})
여기서 \mathrm{Re}(\mathbf{q}) = q_w는 스칼라 부분, \mathrm{Im}(\mathbf{q}) = \mathbf{q}_v는 벡터 부분이다. 복소수와의 유사성을 강조한다.
4. 성분의 명명 관례
쿼터니언의 4개 성분을 어떻게 명명할지에 대한 관례는 분야에 따라 다르다.
4.1 w, x, y, z 관례
\mathbf{q} = (w, x, y, z) = w + xi + yj + zk
스칼라 부분을 w로 표기한다. ROS, Eigen 등의 라이브러리에서 흔히 사용된다.
4.2 0, 1, 2, 3 관례
\mathbf{q} = (q_0, q_1, q_2, q_3)
스칼라 부분을 q_0로 표기한다. 우주 항공 분야와 일부 수학 문헌에서 사용된다.
4.3 그리스 문자 관례
\mathbf{q} = \eta + \boldsymbol{\epsilon} = \eta + \epsilon_1 i + \epsilon_2 j + \epsilon_3 k
스칼라 부분을 \eta, 벡터 부분을 \boldsymbol{\epsilon}으로 표기한다. 일부 수학 문헌과 자세 동역학에서 사용된다.
4.4 명명 관례의 혼동
다양한 명명 관례가 존재하므로, 문서나 코드에서 어느 관례를 사용하는지 명시해야 한다. 특히 쿼터니언을 4-튜플로 직렬화할 때 스칼라가 처음인지 마지막인지가 자주 혼동의 원인이 된다.
5. 스칼라 순서의 두 관례
쿼터니언을 4-튜플 또는 배열로 저장할 때 두 가지 순서가 사용된다.
5.1 스칼라 우선 (Scalar-first)
\mathbf{q} = (q_w, q_x, q_y, q_z) = (w, x, y, z)
스칼라 부분이 첫 번째이다. 수학 문헌과 일부 소프트웨어(예: ROS의 일부 메시지)에서 사용된다.
5.2 스칼라 후순 (Scalar-last)
\mathbf{q} = (q_x, q_y, q_z, q_w) = (x, y, z, w)
스칼라 부분이 마지막이다. ROS의 geometry_msgs와 Eigen의 일부 함수에서 사용된다.
5.3 혼동의 위험
두 관례가 모두 사용되므로, 직렬화/역직렬화에서 혼동이 흔히 발생한다. 한 라이브러리의 출력을 다른 라이브러리에 입력할 때 주의해야 한다.
6. 특수한 쿼터니언
6.1 영원소
\mathbf{0} = 0 + 0i + 0j + 0k
모든 성분이 0인 쿼터니언이다. 덧셈의 항등원이다.
6.2 단위원소
\mathbf{1} = 1 + 0i + 0j + 0k
스칼라 부분만 1이고 나머지는 0인 쿼터니언이다. 곱셈의 항등원이다.
6.3 순수 스칼라 쿼터니언
\mathbf{q} = q_w + 0i + 0j + 0k = q_w
스칼라 부분만 있는 쿼터니언은 실수와 같다. 따라서 실수 \mathbb{R}은 쿼터니언 \mathbb{H}의 부분 집합이다.
6.4 순수 벡터 쿼터니언 (순수 쿼터니언)
\mathbf{q} = 0 + q_x i + q_y j + q_z k = \mathbf{q}_v
스칼라 부분이 0인 쿼터니언이다. 3차원 벡터와 동일시될 수 있으며, 회전 변환에서 벡터를 표현하는 데 사용된다.
6.5 단위 쿼터니언 (Unit quaternion)
\lVert \mathbf{q} \rVert = \sqrt{q_w^2 + q_x^2 + q_y^2 + q_z^2} = 1
노름이 1인 쿼터니언이다. 모든 단위 쿼터니언의 집합은 4차원 단위 구면 S^3이다. 단위 쿼터니언이 3차원 회전을 표현한다.
7. 쿼터니언의 부분
7.1 스칼라 부분 (실수 부분)
\mathrm{Re}(\mathbf{q}) = q_w
또는 \mathrm{Sc}(\mathbf{q}) = q_w로 표기한다.
7.2 벡터 부분 (허수 부분)
\mathrm{Im}(\mathbf{q}) = \mathbf{q}_v = (q_x, q_y, q_z)
또는 \mathrm{Vec}(\mathbf{q}) = \mathbf{q}_v로 표기한다.
8. 쿼터니언의 켤레
쿼터니언 \mathbf{q} = q_w + q_x i + q_y j + q_z k의 켤레(conjugate)는 다음과 같이 정의된다.
\mathbf{q}^* = q_w - q_x i - q_y j - q_z k
스칼라-벡터 표기로
\mathbf{q}^* = (q_w, -\mathbf{q}_v)
켤레는 벡터 부분의 부호를 반전시키는 연산이다. 이는 복소수의 켤레 (\overline{a + bi} = a - bi)의 일반화이다.
8.1 켤레의 성질
- (\mathbf{q}^*)^* = \mathbf{q}
- (\mathbf{q}_1 + \mathbf{q}_2)^* = \mathbf{q}_1^* + \mathbf{q}_2^*
- (\mathbf{q}_1\mathbf{q}_2)^* = \mathbf{q}_2^*\mathbf{q}_1^* (순서 반전)
마지막 성질은 곱의 켤레가 켤레의 곱의 역순이라는 점에서 행렬의 전치와 비슷하다.
9. 쿼터니언의 노름
쿼터니언의 노름은 4차원 유클리드 노름이다.
\lVert \mathbf{q} \rVert = \sqrt{q_w^2 + q_x^2 + q_y^2 + q_z^2}
또는 켤레를 이용하여
\lVert \mathbf{q} \rVert^2 = \mathbf{q}\mathbf{q}^* = \mathbf{q}^*\mathbf{q}
이 성질이 쿼터니언이 노름 대수(normed algebra)임을 보여준다.
10. 쿼터니언의 역원
영이 아닌 쿼터니언의 역원은 다음과 같이 계산된다.
\mathbf{q}^{-1} = \frac{\mathbf{q}^*}{\lVert \mathbf{q} \rVert^2}
이는 \mathbf{q}\mathbf{q}^{-1} = \mathbf{q}^{-1}\mathbf{q} = 1을 만족한다.
단위 쿼터니언(\lVert \mathbf{q} \rVert = 1)의 경우 역원이 켤레와 같다.
\mathbf{q}^{-1} = \mathbf{q}^* \quad \text{(단위 쿼터니언)}
11. 쿼터니언의 다른 정의
쿼터니언은 다른 방식으로도 정의될 수 있다.
11.1 2 \times 2 복소 행렬
쿼터니언을 다음의 2 \times 2 복소 행렬로 표현할 수 있다.
\mathbf{q} = q_w + q_x i + q_y j + q_z k \leftrightarrow \begin{bmatrix}q_w + q_x i & q_y + q_z i \\ -q_y + q_z i & q_w - q_x i\end{bmatrix}
이 표현에서 쿼터니언 곱은 행렬 곱과 일치하며, 켤레는 에르미트 켤레와 같다.
11.2 4 \times 4 실 행렬
쿼터니언은 다음의 4 \times 4 실 행렬로도 표현된다.
\mathbf{q} \leftrightarrow \begin{bmatrix}q_w & -q_x & -q_y & -q_z \\ q_x & q_w & -q_z & q_y \\ q_y & q_z & q_w & -q_x \\ q_z & -q_y & q_x & q_w\end{bmatrix}
이 행렬은 다른 쿼터니언에 곱했을 때 쿼터니언 곱을 산출한다. 즉, 쿼터니언을 행렬로 표현하면 곱셈이 행렬 곱이 된다.
12. 표기법 선택의 권장
문서 작성과 코드 구현에서 일관된 표기법을 사용해야 한다. 권장되는 관례는 다음과 같다.
12.1 학술 문서
스칼라-벡터 표기 (q_w, \mathbf{q}_v)가 기하학적 의미를 명확히 보여주므로 권장된다.
12.2 코드 구현
스칼라 우선 또는 스칼라 후순 중 사용하는 라이브러리의 관례를 따른다. 함수의 매개변수와 반환값에서 명확히 표시한다.
12.3 직렬화
JSON, YAML 등의 직렬화에서는 명명된 필드(예: {"w": 1, "x": 0, "y": 0, "z": 0})를 사용하여 순서 모호성을 제거한다.
13. 참고 문헌
- Hamilton, W. R. (1844). “On Quaternions; or on a New System of Imaginaries in Algebra.” Philosophical Magazine, Vol. 25, 489–495.
- Conway, J. H., & Smith, D. A. (2003). On Quaternions and Octonions: Their Geometry, Arithmetic, and Symmetry. A K Peters.
- Kuipers, J. B. (1999). Quaternions and Rotation Sequences. Princeton University Press.
- Sola, J. (2017). “Quaternion Kinematics for the Error-State Kalman Filter.” arXiv:1711.02508.
- Diebel, J. (2006). “Representing Attitude: Euler Angles, Unit Quaternions, and Rotation Vectors.” Stanford University Technical Report.
version: 1.0