동차 변환(Homogeneous Transformations)

 동차 변환(Homogeneous Transformaions)이란

벡터의 회전과 평행이동을 하나의 행렬 곱셈으로 연산하는 방법이다.



1. 위치 표현(Representing Positions)


벡터 표현에 대한 notation은 다음과 같다.

$$p^a$$

위 표기는 $a$번 좌표계를 기준으로 한 $p$ 벡터를 의미한다.


위 그림에서 0번 좌표계를 기준으로 한 p점까지의 벡터는 $p^0$이고
1번 좌표계를 기준으로 한 벡터는 $p^1$이라 표현한다.

또한 좌표계의 원점과 원점 사이의 벡터를 표현할 때에는
0번 좌표계에서 1번좌표계의 원점까지의 벡터는 $o_1^0$, 
1번 좌표계에서 0번 좌표계의 원점까지의 벡터는 $o_0^1$
과 같이 표현한다.

만약 1번 좌표계에서 $v_1$을 표현할때에는
$v_1$의 시작점이 1번 좌표계의 원점으로 평행이동했다 생각하여 $v_1^1$과 같이 표기한다.

쉽게 생각하자면, 벡터의 시작점은 superscript로 표기하고

끝점은 subscript로 표기한다 생각하면 된다.



2. 회전 변환(Representing Rotations)



위 그림에서 각각 좌표축을 크기가 1인 단위벡터라 생각하자.

이때 Rotation matrix는 다음과 같이 정의한다.
$$\begin{matrix}R_1^0 &=& \left[ x_1^0 \mid y_1^0 \right] \\ &=& \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} \end{matrix}$$
이는 0번 좌표계에서 바라본 $\theta$만큼 회전한 좌표계의 좌표이다.
위 식에서 행 또는 열은 크기가 1이며 서로 수직 관계라는것을 알 수 있다.

이를 내적의 형태로 표현할 수도 있다.
$$R_1^0 = \begin{bmatrix} x_1 \cdot x_0 & y_1 \cdot x_0 \\ x_1 \cdot y_0 & y_1 \cdot y_0 \end{bmatrix}$$

내적에는 교환 법칙이 성립하기 때문에

$$R_1^0 = (R_0^1)^T = (R_0^1)^{-1}$$

이 성립한다.

이러한 성질들이 더 n차의 차원에서 성립하게 된다면

그것을 Special Orthogonal group of order n(SO(n))라 한다.

보다 자세한 정의는 다음과 같다.

$$SO(n) = \left\{ R \in \mathbb{R}^{n \times n} \mid R^TR = I and \det R = \pm 1 \right\}$$

1. $R^T = R^{-1}$

2. 모든 행 또는 열은 크기가 1인 단위벡터이다.

3. 모든 행 또는 열은 서로 수직이다.

4. 행렬식은 1이다.


이를 3차원으로 확장해보자.

아래와 같은 3차원 공간에서 z축 기준으로 $\theta$만큼 회전시켜보자.

$$R_1^0 = \begin{bmatrix} x_1 \cdot x_0 & y_1 \cdot x_0 & z_1 \cdot x_0 \\ x_1 \cdot y_0 & y_1 \cdot y_0 & z_1 \cdot y_0 \\ x_1 \cdot z_0 & y_1 \cdot z_0 & z_1 \cdot z_0 \end{bmatrix}$$
에서 $z_1 \cdot z_0$을 제외한 z가 들어간 모든 항은 0이 된다.
나머지 항은 2차원에서와 마찬가지이므로 다음과 같다.
$$R_1^0 = \begin{bmatrix} \cos \theta  & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{bmatrix}$$
일반적으로 위와 같은 상황에서 $R_1^0$보다는 $R_{z, \theta}$로 표기한다.
만약 $-\theta$만큼 회전한 경우에는 단순히 전치 혹은 역행렬을 구해주면 된다.

이와 마찬가지 방법으로 x축 회전과 y축 회전에 대한 식을 구해보자.

$$R_{x, \theta} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos \theta  & -\sin \theta \\ 0 & \sin \theta & \cos \theta \end{bmatrix}, R_{y, \theta} = \begin{bmatrix} \cos \theta & 0 & \sin \theta \\ 0 & 1 & 0 \\ -\sin \theta & 0 & \cos \theta \end{bmatrix}$$


위 그림에서 강체 S에 대한 1번 좌표계 기준의 좌표가 주어졌을 때,
$$\begin{matrix} P^1 &=& \left[ u, v, w \right]^T \\ &=& u x_1 + v y_1 + w z_1 \end{matrix}$$
이를 0번 좌표계로 표현하려면 각각의 좌표에 내적을 취하면 된다.
$$\begin{matrix} P^0 &=& \begin{bmatrix} P^1 \cdot x_0 \\ P^1 \cdot y_0 \\ P^1 \cdot z_0 \end{bmatrix} \\ &=&\begin{bmatrix} (u x_1 + v y_1 + w z_1) \cdot x_0 \\ (u x_1 + v y_1 + w z_1) \cdot y_0 \\ (u x_1 + v y_1 + w z_1) \cdot z_0 \end{bmatrix} \\ &=& \begin{bmatrix} x_1x_0 & y_1x_0 & z_1x_0 \\ x_1y_0 & y_1y_0 & z_1y_0 \\ x_1z_0 & y_1z_0 & z_1z_0 \end{bmatrix} \begin{bmatrix} u \\ v \\ w \end{bmatrix} \\ &=& R_1^0 P^1\end{matrix}$$
식을 한단계씩 정리하면 위와 같다.
즉, Rotation matrix는 단순히 좌표계의 방향을 나타내는 것이 아닌
특정 벡터의 기준좌표계를 변경하는 용도로도 사용할 수 있다.
또한 하나의 좌표계에서 회전시에도 같은 방식으로 적용할 수 있다.
 
이러한 변환 행렬의 기준 좌표계를 바꾸는것도 가능하다.
이 과정을 유사 변환(similarity transformation)이라 한다.
$A$라는 변환 행렬이 0번 좌표계에서 변환을 표현하고
이 행렬을 1번 좌표계예서의 변환행렬 $B$ 로 표현하는 식은 다음과 같다.
$B = (R_1^0)^{-1} A R_1^0$

이를 활용하여 복합 회전 변환을 할 수 있다.
우선, 현제 좌표축을 기준으로 회전하는 상황에서
$$p^0 = R_1^0 p^1 \\ p^1 = R_2^1 p^2 \\ p^0 = R_2^0 p^2 \\ \rightarrow p^0 = R_1^0 R_2^1 p^2 \\ \rightarrow R_2^0 = R_1^0 R_2^1$$

Comments