사원수 계산기 쉽게 이해하기 — 개념과 원리
이 계산기는 사원수의 덧셈, 뺄셈, 곱셈, 나눗셈을 하고, 첫째 사원수의 켤레, 노름, 역원, 단위 사원수와 그것이 나타내는 회전각과 회전축을 구합니다. 3D 그래픽, 게임 개발, 로봇공학, 항공우주 자세 제어, 추상대수 수업에 씁니다.
계산 방법
사원수는 q = w + xi + yj + zk이고 i² = j² = k² = ijk = −1입니다.
- 곱 q₁q₂: w = w₁w₂ − x₁x₂ − y₁y₂ − z₁z₂, x = w₁x₂ + x₁w₂ + y₁z₂ − z₁y₂, y = w₁y₂ − x₁z₂ + y₁w₂ + z₁x₂, z = w₁z₂ + x₁y₂ − y₁x₂ + z₁w₂
- 켤레: w − xi − yj − zk, 노름: |q| = √(w² + x² + y² + z²), 역원: 켤레 ÷ |q|²
- 나눗셈: 오른쪽 q₁q₂⁻¹와 왼쪽 q₂⁻¹q₁은 일반적으로 다릅니다.
- 회전: 단위 사원수 cos(θ/2) + sin(θ/2)(축)은 v′ = q v q⁻¹로 v를 θ만큼 회전합니다.
원리
윌리엄 로언 해밀턴은 1843년, 실수부 하나와 허수부 셋을 가진 수도 곱셈 순서에 따라 결과가 달라지는 것(ij = k, ji = −k)을 허용하면 일관되게 곱할 수 있음을 발견했습니다. 사원수에서는 0이 아닌 모든 원소에 역원이 있고, 곱의 노름은 노름의 곱과 같습니다. 단위 사원수는 오일러 각의 짐벌 잠금 없이 3차원 회전을 나타내며, 두 회전은 곱셈 한 번으로 합쳐집니다. q와 −q가 같은 회전을 주기 때문에 공식에 반각 θ/2가 나타납니다.
예제 풀이
기본값 q₁ = 1 + 2i + 3j + 4k, q₂ = 5 − 6i + 7j + 8k, 연산은 q₁ × q₂입니다.
- w = 5 + 12 − 21 − 32 = −36
- x = 1(−6) + 2(5) + 3(8) − 4(7) = 0
- y = 1(7) − 2(8) + 3(5) + 4(−6) = −18
- z = 1(8) + 2(7) − 3(−6) + 4(5) = 60이므로 결과는 −36 − 18j + 60k입니다.
- 결과의 노름 72.24956747은 |q₁||q₂| = √30 × √174와 같습니다. q₁의 노름은 5.477225575, 회전각은 2·acos(1/√30) ≈ 158.9605302°, 축은 (2, 3, 4)/√29 ≈ (0.371391, 0.557086, 0.742781)입니다.
결과 해석
곱셈은 순서를 바꾸면 대개 답이 달라지므로 쓰려는 곳의 순서와 맞는지 확인하십시오. 많은 그래픽 라이브러리에서 q₂q₁은 'q₁을 먼저, 그다음 q₂'를 뜻합니다. 회전각과 축은 q₁을 정규화한 뒤 읽습니다. 노름이 1이면 순수한 회전을 나타냅니다.
흔한 실수
- q₁q₂ = q₂q₁이라고 가정하는 경우
- 정규화하지 않은 사원수를 회전에 쓰는 경우
- 반각을 잊는 경우(θ 회전에는 cos(θ/2)를 씁니다)
- 실수부를 마지막에 두는 (x, y, z, w) 방식과 처음에 두는 방식을 섞는 경우
자주 묻는 질문
3D 회전에 왜 사원수를 쓰나요?
간결하고, 짐벌 잠금이 없으며, 방향 사이를 부드럽게 보간할 수 있기 때문입니다.
켤레는 어떤 역할을 하나요?
허수부의 부호를 바꾸며, 단위 사원수에서는 역회전을 나타냅니다.
q와 −q는 같은 회전인가요?
네. 둘 다 같은 v′ = q v q⁻¹를 줍니다.
출처: Wolfram MathWorld, "Quaternion" and "Quaternion Rotation"