동차 좌표계(homogeneous coordinate system)는 유클리드 좌표계의 확장을 통해 3D 그래픽 및 컴퓨터 시각화에서 중요한 역할을 한다. 이 좌표계는 변환, 특히 3D에서의 회전, 평행 이동, 스케일링 등을 보다 간단하고 일관되게 표현할 수 있게 해준다.

동차좌표 정의

기본적으로, 동차 좌표계에서는 (x, y, z)라는 유클리드 좌표를 (x, y, z, w)로 확장하는데, 여기서 w는 비축척(homogeneous) 좌표이다. 예를 들어, 2D 좌표 (x, y)는 다음과 같이 표현된다:

(x_h, y_h, w)

여기서,

x_h = x \cdot w
y_h = y \cdot w

비율과 동차좌표

동차 좌표계에서는 실제 좌표 값을 의미하는 w와의 비율이 중요한데, 이는 다음과 같은 동차식을 통해 나타낼 수 있다.

유클리드 좌표 (x, y)를 동차 좌표로 변환하려면,

\begin{pmatrix} x \\ y \\ 1 \end{pmatrix}

위와 같이 표현된다. 여기서 비율은 다음과 같이 사용된다. 동차 좌표계에서,

\mathbf{v} = \begin{pmatrix} x_h \\ y_h \\ w \end{pmatrix}

이 경우, 실제 유클리드 좌표를 얻기 위해 w로 나눠야 하며,

\mathbf{v} = \begin{pmatrix} x_h / w \\ y_h / w \\ 1 \end{pmatrix}
\Rightarrow \mathbf{v} = \begin{pmatrix} x \\ y \\ 1 \end{pmatrix}

따라서 동차 좌표 \mathbf{v}와 유클리드 좌표 \mathbf{u} 사이의 관계는 다음과 같다:

\mathbf{u} = \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} \frac{x_h}{w} \\ \frac{y_h}{w} \end{pmatrix} = \begin{pmatrix} x_h / w \\ y_h / w \end{pmatrix}

비율의 본질적 이해

동차 좌표에서 비율은 각 변환의 크기와 방향을 나타내는 중요한 지표가 된다. 이 비율을 통해 우리는 3D 공간에서 객체를 확장하고 축소할 수 있다.

동차 좌표의 변환

동차 좌표계에서 변환은 행렬 연산을 통해 쉽게 다룰 수 있다. 기본적인 변환은 회전, 평행 이동, 스케일 변환 등이 있으며 모두 일관된 방법으로 처리된다.

평행 이동 (Translation)

평행 이동은 객체를 어떤 방향으로 일정 거리만큼 이동시키는 변환이다. 동차 좌표에서는 다음과 같이 표현된다:

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

여기서 t_x, t_y, t_z는 각각 x, y, z 축으로의 이동 거리이다.

회전 (Rotation)

3D 공간에서의 회전은 각 축에 대한 회전을 따로 고려할 수 있다:

\mathbf{R}_x(\theta) = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos(\theta) & -\sin(\theta) & 0 \\ 0 & \sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}
\mathbf{R}_y(\theta) = \begin{pmatrix} \cos(\theta) & 0 & \sin(\theta) & 0 \\ 0 & 1 & 0 & 0 \\ -\\sin(\theta) & 0 & \cos(\theta) & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}
\mathbf{R}_z(\theta) = \begin{pmatrix} \cos(\theta) & -\sin(\theta) & 0 & 0 \\ \sin(\theta) & \cos(\theta) & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}

스케일 변환 (Scaling)

객체의 크기를 변경하는 변환이다. 동차 좌표에서는 다음과 같이 표현된다:

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

여기서 s_x, s_y, s_z는 각각 x, y, z 축으로의 스케일 값이다.

동차 좌표 변환의 조합

동차 좌표계에서 여러 변환을 조합하여 하나의 변환 행렬을 만들 수 있다. 이것은 각 변환을 순서대로 곱셈하는 방식으로 이루어진다.

예를 들어, 먼저 평행 이동 후 회전을 수행하는 경우,

\mathbf{M} = \mathbf{T} \cdot \mathbf{R}

이렇게 행렬 곱셈을 통해 복합 변환을 구현할 수 있다.


동차 좌표계를 이해하고 활용하는 것은 3D 그래픽에서 객체 변환을 보다 효율적으로 수행하고, 일관된 방법으로 공간 좌표를 다룰 수 있게 해준다. 행렬 연산을 통해 다양한 변환을 조합하고 적용할 수 있으며, 이는 컴퓨터 그래픽, 로보틱스, 물리 시뮬레이션 등 많은 분야에서 기본적인 도구가 된다.