좌표 변환의 기본 개념

좌표 변환은 그래픽스나 기하학에서 객체를 이동, 회전, 크기 조정 등의 다양한 변환을 위해 사용된다. 기본적인 2D 변환은 다음과 같다:

  1. 이동 (Translation)
  2. 회전 (Rotation)
  3. 확대/축소 (Scaling)
  4. 대칭 (Reflection)
  5. 전단 (Shearing)

각각의 변환은 행렬로 표현할 수 있으며, 복합 변환은 여러 개의 변환 행렬을 곱셈으로 결합하여 한 번의 적용으로 처리할 수 있다.

이동 변환 (Translation)

이동 변환은 객체를 지정된 거리만큼 평행 이동시키는 것이다. 이는 다음과 같은 형태의 행렬로 표현된다:

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

여기서 t_xt_y 는 이동할 거리이다.

회전 변환 (Rotation)

회전 변환은 특정한 각도만큼 객체를 회전시키는 것이다. 원점을 기준으로 회전하는 경우, 회전 변환 행렬은 다음과 같다:

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

여기서 \theta 는 회전할 각도이다.

확대/축소 변환 (Scaling)

확대/축소 변환은 객체의 크기를 변경하는 것이다. 이는 다음과 같은 형태의 행렬로 표현된다:

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

여기서 s_xs_y 는 각각 x축과 y축 방향의 스케일링 인자이다.

대칭 변환 (Reflection)

대칭 변환은 객체를 특정 축에 대해 반사시키는 것이다. 예를 들어, y축에 대한 대칭 변환 행렬은 다음과 같다:

\mathbf{M_{y}} = \begin{bmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

전단 변환 (Shearing)

전단 변환은 객체를 특정 방향으로 기울이는 변환이다. x축 방향 전단 변환 행렬은 다음과 같다:

\mathbf{H_x} = \begin{bmatrix} 1 & sh_x & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

여기서 sh_x 는 x 방향 기울기이다.

복합 변환

복합 변환은 여러 변환을 순차적으로 적용한 결과이다. 이는 개별 변환 행렬을 곱하여 하나의 변환 행렬로 결합할 수 있다. 이를 통해 다중 변환을 한 번에 적용할 수 있다.

예를 들어, 객체를 회전하고 이동(transform matrix for rotation and translation)시키려면 다음과 같이 변환 행렬을 곱하면 된다:

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

결과적으로, 두 행렬을 곱한 복합 변환 행렬은 다음과 같다:

\begin{aligned} \mathbf{T} \mathbf{R}(\theta) &= \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{bmatrix} \\ &= \begin{bmatrix} 1 \cdot \cos \theta + 0 \cdot \sin \theta & 1 \cdot (-\sin \theta) + 0 \cdot \cos \theta & 1 \cdot 0 + t_x \\ 0 \cdot \cos \theta + 1 \cdot \sin \theta & 0 \cdot (-\sin \theta) + 1 \cdot \cos \theta & 0 \cdot 0 + t_y \\ 0 \cdot \cos \theta + 0 \cdot \sin \theta & 0 \cdot (-\sin \theta) + 0 \cdot \cos \theta & 0 \cdot 0 + 1 \end{bmatrix} \\ &= \begin{bmatrix} \cos \theta & -\sin \theta & t_x \\ \sin \theta & \cos \theta & t_y \\ 0 & 0 & 1 \end{bmatrix} \end{aligned}

이 복합 변환 행렬은 객체를 먼저 회전시키고, 이후 이동시키는 과정을 하나의 단일 행렬로 표현한 것이다.

변환의 순서

변환의 순서는 결과에 크게 영향을 미치므로 주의가 필요하다. 예를 들어, 회전 이후에 이동한 결과는 이동 이후에 회전한 결과와 다를 수 있다.

순서를 고려한 예시

\mathbf{T} \mathbf{R}(\theta)
\mathbf{R}(\theta) \mathbf{T}

각 변환의 순서에 따라 달라지는 결과를 이해하는 것은 중요한 기초 개념이다.

행렬의 곱셈 순서

행렬 곱셈은 결합 법칙에 따라 자주 사용되지만, 교환 법칙은 적용되지 않는다. 즉, 다음이 성립하지 않는다:

\mathbf{A} \mathbf{B} \neq \mathbf{B} \mathbf{A}

따라서, 복합 변환을 구성할 때 행렬의 곱셈 순서를 정확하게 이해하고 적용하는 것이 매우 중요하다.


여러 변환을 결합하여 복합 변환을 구성할 때 행렬의 곱셈을 통해 이를 수학적으로 간단히 표현할 수 있다. 이를 통해 복잡한 변환을 단순하게 처리하고 계산할 수 있다. 변환 순서를 지정하면 결과를 예측하고 조절하는 데 도움이 된다. 이를 활용한 예시는 다양한 컴퓨터 그래픽스와 물리 시뮬레이션에서 실제로 적용되고 있다.