1. 좌표 변환
공간상에 어떤 점이 있다고 하자. 이 점들을 다른 좌표계에서 보고 싶다면 회전 변환을 이용할 수 있을 것이다. 그러나 회전변환은 회전축을 고려해야 하는 점이 머리가 아프다. 특히 회전각이 크다면 회전 순서에 따라 그 결과 또한 달라지기 때문에 좌표계를 어떻게 회전해야 할지 머리를 조금 써야 한다. 거기에 90도 회전하면서 다른 축과 종속되면 김벌 잠금(gimbal lock)에 빠져서 제자리에서 도는 상태가 되고 만다.
2. 내적
우리는 내적을 공부하면서 내적의 의미를 생각해본 적이 있다. 내적은 단순한 연산이 아니라 두 벡터가 얼마나 닮았는지를 알려주는 도구였다. 예를 들어 어떤 벡터 $\bf{a}$가 있을 때 다른 단위 벡터 $\bf{n}$과 내적하면 $\bf{n}$ 방향에 해당하는 $\bf{a}$ 성분의 크기를 알려준다. $\bf{a}$의 성분 중에 $\bf{n}$과 닮은 정도만을 남겨주기 때문이다.
3. 내적을 이용한 좌표 변환
이 내적을 이용하면 쉽고 빠른 좌표 변환이 가능하다. 목표 좌표계의 기저 벡터를 안다면 기저 벡터와 내적만 해주면 그만이기 때문이다. 목표 좌표계의 기저 벡터가 $\bf{e_1}, \bf{e_2},$ 그리고 $\bf{e_3}$라고 해보자. 그럼 $e$ 좌표계에서 $a$를 보면 다음과 같이 나타낼 수 있다.
$$ \bf{a'} = \langle \bf{a}, \bf{e_1} \rangle \bf{e_1} + \langle \bf{a}, \bf{e_2} \rangle \bf{e_2} + \langle \bf{a}, \bf{e_3} \rangle \bf{e_3} $$
참 쉽죠? 이것을 행렬의 형태로 쓰면 다음과 같다.
$$ \bf{a'} = \begin{bmatrix} \bf{e_1} & \bf{e_2} & \bf{e_3} \end{bmatrix}^{\intercal} \bf{a} $$
4. 예제
공간상에 어떤 점 또는 벡터들이 $x$축에 대해 45도 기울어진 평면 위에 있다. 이 점들을 산점도로 도시하고 싶으나 $x-y$ 평면에 투영하면 $y$축 방향으로 수축된 형태를 보이게 된다. 기울어진 평면을 정면에서 바라보는 방향에서 산점도를 도시하려면 어떻게 해야 할까.
점들을 행렬로 표현한 것을 $\bf{P}$라고 하자. 이 행렬의 행은 순서대로 $x, y, $ 그리고 $z$ 좌표에 해당하며 열은 각 점을 나타낸다. 다시 말해 열 방향으로 점들의 좌표를 나열한 행렬이다.
먼저 평면의 법선 벡터를 찾는다. x축에 대해 45도 회전되어 있으므로 법선 벡터는 다음과 같다.
$$\textbf{n} = \{ 0, -\frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}} \}$$
평면의 첫 번째 축은 초기 좌표계의 $x$축과 동일하다.
$$\textbf{e}_1 = \{1, 0, 0 \}$$
평면의 두 번째 축은 법선 벡터와 $e_1$의 외적으로 구할 수 있다.
\begin{align} \textbf{e}_2 &= \textbf{e_1} \times \textbf{n} \\ &= \{0, \frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}}\} \end{align}
평면의 세 번째 축은 법선 벡터이지만 우리는 2차원 산점도를 그릴 것이므로 사실 세 번째 기저벡터는 필요가 없다.
그렇지만 이번에는 다 써보자. 변환된 행렬은 다음과 같다.
$$ \textbf{P'} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cfrac{1}{\sqrt{2}} & \cfrac{1}{\sqrt{2}} \\ 0 & -\cfrac{1}{\sqrt{2}} & \cfrac{1}{\sqrt{2}} \end{bmatrix} \textbf{P} $$
변환 행렬이 무엇인지 한눈에 알아볼 수 있다. 좌표계의 회전 공식과 비교해 보자. x축에 대해 45도 회전하는 것과 완전히 동일한 것을 알 수 있다.
$$ \textbf{T}_x = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos{\theta} & \sin{\theta} \\ 0 & -\sin{\theta} & \cos{\theta} \\ \end{bmatrix} $$
이번에는 단순한 회전과 동일한 예제를 다뤘지만 임의의 방향으로 돌아가있는 좌표계에 대해서도 쉽게 적용이 가능하다.
최근댓글