비율과 동차좌표의 관계

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

동차좌표 정의

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

(xh,yh,w)(x_h, y_h, w)

여기서,

xh=xwx_h = x \cdot w
yh=ywy_h = y \cdot w

비율과 동차좌표

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

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

(xy1)\begin{pmatrix} x \\ y \\ 1 \end{pmatrix}

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

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

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

v=(xh/wyh/w1)\mathbf{v} = \begin{pmatrix} x_h / w \\ y_h / w \\ 1 \end{pmatrix}
ightarrowv=(xy1)ightarrow \mathbf{v} = \begin{pmatrix} x \\ y \\ 1 \end{pmatrix}

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

u=(xy)=(xhwyhw)=(xh/wyh/w)\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)

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

T=(100tx010ty001tz0001)\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 공간에서의 회전은 각 축에 대한 회전을 따로 고려할 수 있다:

  • X축에 대한 회전

Rx(θ)=(10000cos(θ)sin(θ)00sin(θ)cos(θ)00001)\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}
  • Y축에 대한 회전

Ry(θ)=(cos(θ)0sin(θ)00100sin(θ)0cos(θ)00001)\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}
  • Z축에 대한 회전

Rz(θ)=(cos(θ)sin(θ)00sin(θ)cos(θ)0000100001)\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)

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

S=(sx0000sy0000sz00001)\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 축으로의 스케일 값이다.

동차 좌표 변환의 조합

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

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

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

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


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

Last updated