앞의 포스팅에서 Quaternion의 기본 이론을 살펴보았다.
실제로는 어떻게 $\mathbb{E}^3$에서의 벡터를 어떻게 계산해 회전시키는지 확인해보고자 한다.
계산식은 앞에서 본 것 처럼
$$ \mathbf{q x q}^{-1}=\mathbf{q x \overline{q}} $$
이고, $\mathbf{q}$는 $\mathbf{q} \overline{\mathbf{q}} = 1$을 만족하는 단위사원수이다. 그러므로
$$\mathbf{q}= \cos \theta + \mathbf{u} \sin \theta$$
라고 쓸 수 있었는데
$\mathbf{u}$는 회전축
($\mathbf{u}=q_1 \mathbf{i}+q_2 \mathbf{j}+q_3 \mathbf{k}, \; q_1 ^2 +q_2 ^2+q_3 ^2 =1 $로 표현되는 순단위사원수)
$2 \theta$가 회전각이었다.
따라서 축이 되는 벡터 $\vec{u}$를 길이가 1이 되도록 잡고,
$2{\theta}$를 회전하고 싶은 각도로 잡으면 된다.(회전방향은 반시계방향이다.)
$$\mathbf{u}= \vec{u} = (q_1, q_2, q_3), \; q_1 ^2 +q_2 ^2+q_3 ^2 =1 $$
이때 길이가 1 아니더라도 축으로 만들고 싶은 임의의 벡터 $$\vec{a} = (a, b, c) $$에 대해
$$\frac{\vec{a}}{|\vec{a}|}=\vec{u}, \; |\vec{a}|=\sqrt{a^2+b^2+c^2}$$
으로 놓으면 된다.*(아래 추가자료의 구면좌표계를 이용할 수도 있다.)
다음은 $ \mathbf{q^{-1}}$ 인데 $\mathbf{q}$가 단위사원수이기 때문에 켤레사원수랑 같다. 즉,
$$ \mathbf{q^{-1}} = \overline{\mathbf{q}} = \cos \theta - \vec{u} \sin \theta $$
이제 사원수 곱셈 $ \mathbf{q x} \overline{\mathbf{q}} $만 하면 된다.
이동시킬 좌표 $\mathbf{x} = (0, x_0, y_0, z_0) = \vec{x},$ 에
$\mathbf{q}= \cos \theta + \sin \theta \, \vec{u} $ 을 앞에 곱하면
(편의상 $\vec{u} \cdot \vec{x} = x_0 q_1 + y_0 q_2 +z_0 q_3 = k$ 라 하자.)
$$ \mathbf{q x}= \cos \theta \, \vec{x}+ \sin \theta \, \vec{u} \times \vec{x} $$
$ \overline{\mathbf{q}} = \cos \theta - \sin \theta \, \vec{u}$ 을 뒤에 곱하면
(앞의 포스트에서 상수항의 결과는 처음과 같으므로 계산할 필요없이 0이다.)
$$ \mathbf{q x} \overline{\mathbf{q}} = k \sin^2 \theta \, \vec{u} + \cos^2 \theta \, \vec{x} + \cos \theta \sin \theta \, \vec{u} \times \vec{x} - \sin \theta (\cos \theta \, \vec{x}+ \sin \theta \, \vec{u} \times \vec{x}) \times \vec{u} $$
편의상 $\vec{u} \times \vec{x} = \vec {v}$라 하고,
외적의 성질에 의해
$ \vec{u} \times \vec{x} = - \vec{x} \times \vec{u}$ 인 것과
$\vec{u} \cdot \vec{u}= 1$ 이므로 $(\vec{u} \times \vec{x}) \times \vec{u}= -(\vec{u} \cdot \vec{x})\vec{u} + ( \vec{u} \cdot \vec{u})\vec{x} = -k \vec{u} + \vec{x}$ 인 것을 이용하자.
위의 식을 정리하면,
$$ 2k \sin^2 \theta \, \vec{u} + ( \cos^2 \theta - \sin^2 \theta) \, \vec{x} + 2 \sin \theta \cos \theta \, \vec{v} $$
삼각함수의 덧셈정리를 사용하면 결과적으로
$$ \mathbf{q x} \overline{\mathbf{q}} = 2k \sin^2 \theta \, \vec{u} + \cos 2 \theta \, \vec{x} + \sin 2 \theta \, \vec{v} $$
이다. (단, $\vec{u} \times \vec{x} = \vec {v}$, $k = \vec{u} \cdot \vec{x}$)
예제: 점$(1,1,1)$을 축 $(0,0,1)$로 반시계방향으로 $90^\circ$만큼 회전시키기.
$\vec{x}=(1,1,1)$, $\vec{u}=(0,0,1)$, $\theta = 45^\circ$으로 두고 대입하면
$ k = \vec{u} \cdot \vec{x}= 1$
$ \vec{v} = \vec{u} \times \vec{x} = \begin{vmatrix}\mathbf{i}&\mathbf{j} &\mathbf{k} \\0 & 0 & 1 \\1 & 1 & 1 \end{vmatrix} = (-1, 1, 0) $
$\sin \theta = \frac{1}{\sqrt{2}}, \sin 2 \theta = 1, \cos \theta = 0$
$$ \mathbf{q x} \overline{\mathbf{q}} = (0,0,1)+ 0 \vec{x} + (-1, 1, 0) = (-1,1,1) $$
- 시각화 자료: 여기서 실제로 쿼터니언 회전이 무엇인지 관찰해보자.
쿼터니언 회전1
쿼터니언 회전2
- 이것을 이용하면 $\vec{u}$를 진행방향 벡터로 잡고 회전할 경우 오일러 회전에서 생기는 짐벌락 현상도 막고 매우 직관적으로 회전이 가능하다.
*추가자료: 구면좌표계를 이용한 단위벡터 설정
단위벡터로 원하는 축을 만들고 싶다면 삼각함수를 사용하여 다음처럼 설정할 수 있다. $xy$평면 위에서 각 $\theta$, $z$축과의 각$\phi$라고 하면
$$ \vec{u} = (\cos \theta \sin \phi, \sin \theta \sin \phi, \cos \phi) $$
이 된다. (이미지 참고)
'수학 > 수학 논문 정리' 카테고리의 다른 글
A Fresh Approach to the Singular Value Decomposition 마지막 (0) | 2020.11.12 |
---|---|
A Fresh Approach to the Singular Value Decomposition 두 번째 (0) | 2020.11.11 |
A Fresh Approach to the Singular Value Decomposition 첫 번째 (0) | 2020.11.11 |
Quaternions and Rotations in $\mathbb{E}^4$ 두 번째 (0) | 2020.11.08 |
Quaternions and Rotations in $\mathbb{E}^4$ 첫 번째 (2) | 2020.11.08 |