동차좌표계와 이동 변환에 대해 설명하기 위해 기본 개념부터 설명하겠다. 이동 변환에서는 점의 위치를 표현하는 방법이 중요하며, 이는 동차좌표를 사용하여 간단하게 표현할 수 있다.

동차좌표

동차좌표(|Homogeneous Coordinates|)는 유클리드 공간의 점을 \textit{n}차원 벡터로 표현하는 방법이다. 2차원 평면의 점 \mathbf{p} = (x, y)를 동차좌표로 표현하면, 추가적인 차원 (일반적으로 1)으로 표현된다. 이를 통해 다음과 같은 형태로 변형할 수 있다:

\mathbf{p_h} = \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}

여기서, \mathbf{p_h}는 점 \mathbf{p}의 동차좌표이다. 동차좌표의 장점 중 하나는 점을 선형 변환 행렬로 쉽게 변환할 수 있다는 점이다.

이동 변환

이동 변환(|Translation Transformation|)은 좌표계에서 점의 위치를 일정한 값을 더하거나 빼서 변경하는 변환이다. 2차원 평면에서 점 \mathbf{p} = (x, y)(t_x, t_y)만큼 이동하면, 새로운 점 \mathbf{p'}는 다음과 같이 표현할 수 있다:

\mathbf{p'} = \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} x + t_x \\ y + t_y \\ 1 \end{bmatrix}

이 식을 동차좌표 변환 행렬로 나타내면 더욱 간단해진다. 동차좌표계를 사용하여 이동 변환은 다음과 같은 행렬 곱셈으로 표현할 수 있다:

\mathbf{T} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix}

이를 통해 점 \mathbf{p}의 동차좌표 \mathbf{p_h}를 변환하면 다음과 같다:

\mathbf{p'_h} = \mathbf{T} \cdot \mathbf{p_h}
\mathbf{p'_h} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \begin{bmatrix} x + t_x \\ y + t_y \\ 1 \end{bmatrix}

여기서 변환된 점 \mathbf{p'}는 원래의 점 \mathbf{p}에서 (t_x, t_y)만큼 이동된 위치를 나타낸다. 이를 통해 이동 변환을 행렬 연산으로 직관적이고 일관되게 처리할 수 있게 된다.

예시

이제 구체적인 예를 통해 이동 변환을 적용해 보자.

예를 들어, 2차원 평면상의 점 (3, 4)(2, -1)만큼 이동시키고 싶다고 가정하자. 이 점을 동차좌표로 표현하면 다음과 같다:

\mathbf{p} = \begin{bmatrix} 3 \\ 4 \\ 1 \end{bmatrix}

이동 변환 행렬 \mathbf{T}는 다음과 같이 된다:

\mathbf{T} = \begin{bmatrix} 1 & 0 & 2 \\ 0 & 1 & -1 \\ 0 & 0 & 1 \end{bmatrix}

이제 이동 변환을 점 \mathbf{p}에 적용하면:

\mathbf{p'_h} = \mathbf{T} \cdot \mathbf{p_h}
\begin{bmatrix} 1 & 0 & 2 \\ 0 & 1 & -1 \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} 3 \\ 4 \\ 1 \end{bmatrix} = \begin{bmatrix} 1 \cdot 3 + 0 \cdot 4 + 2 \cdot 1 \\ 0 \cdot 3 + 1 \cdot 4 + (-1) \cdot 1 \\ 0 \cdot 3 + 0 \cdot 4 + 1 \cdot 1 \end{bmatrix} = \begin{bmatrix} 3 + 2 \\ 4 - 1 \\ 1 \end{bmatrix} = \begin{bmatrix} 5 \\ 3 \\ 1 \end{bmatrix}

따라서 새로운 점 \mathbf{p'}(5, 3)가 된다. 이는 원래 점 (3, 4)에서 (2, -1)만큼 이동한 결과이다.

일반적인 2D 변환

동차 좌표계를 사용하면 이동 변환 외에도 회전, 축소, 확대 등의 변환을 같은 방식으로 행렬 연산으로 표현할 수 있어 매우 유용하다.

회전 변환

각도 \theta만큼 회전하는 변환 행렬은 다음과 같다:

\mathbf{R}(\theta) = \begin{bmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{bmatrix}

축소/확대 변환

각 축을 따라 축소 또는 확대하는 변환 행렬은 다음과 같다:

\mathbf{S}(s_x, s_y) = \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix}

이들 변환을 조합하여 다양한 복합 변환을 쉽게 수행할 수 있다.


동차 좌표계를 사용하면 2D 평면에서의 이동, 회전, 확대/축소 등 다양한 변환을 단일한 행렬 연산으로 통합하여 처리할 수 있다. 이를 통해 복잡한 변환을 간단하고 효율적으로 계산할 수 있다. 이러한 특성 덕분에 동차 좌표계는 컴퓨터 그래픽스, 이미지 처리, 로보틱스 등 다양한 분야에서 널리 사용된다.