2차원 동차좌표계(homogeneous coordinate system)는 컴퓨터 그래픽스와 다른 응용 분야에서 변환을 보다 쉽게 처리하는 중요한 도구 중 하나이다. 평면 내의 한 점을 동차좌표로 표현하면 보다 복잡한 변환을 간단히 매트릭스 연산으로 해결할 수 있다.
동차좌표계의 정의
우리가 흔히 알고 있는 데카르트 좌표계에서는 2차원 공간의 어떤 점 $(x, y)$를 $\mathbf{p} = \begin{bmatrix} x \ y \end{bmatrix}$로 나타낸다. 그러나 동차좌표계에서는 이와 같은 점을 3개의 요소로 확장하여 $\mathbf{p} = \begin{bmatrix} x \ y \ w \end{bmatrix}$로 나타낸다. 여기서 몇 가지 중요한 규칙이 따른다:
$w \neq 0$이어야 한다.
동차좌표 $\mathbf{p} = \begin{bmatrix} x \ y \ w \end{bmatrix}$는 데카르트 좌표 $\begin{bmatrix} x \ y \end{bmatrix}$에 의해 다음과 같이 대응된다:
[xy]=[wxwy]
즉, 동차좌표계에서의 점 $\mathbf{p}$는 스칼라 $w$를 나눈 좌표값으로 데카르트 좌표계의 한 점을 표현하게 된다.
동차좌표의 변환
이제 동차좌표를 이용하여 2차원 평면의 점을 변환해보겠다. 2차원의 다양한 변환 (예: 평행이동, 스케일링, 회전)들은 동차좌표계에서 행렬 곱셈으로 간단히 표현할 수 있다.
평행이동 (Translation)
점 $(x, y)$를 $(x', y')$로 평행이동 하는 동차좌표 변환 행렬은 다음과 같다:
T=100010txty1
여기서 $t_x$와 $t_y$는 각각 x축과 y축 방향으로의 이동량이다. 어떤 점 $\mathbf{p} = \begin{bmatrix} x \ y \ 1 \end{bmatrix}$에 이 변환을 적용하면 이동된 점 $\mathbf{p'}$는 다음과 같이 계산된다:
p′=Tp=100010txty1xy1=x+txy+ty1
스케일링 (Scaling)
점 $(x, y)$를 $(sx, sy)$로 스케일링하는 동차좌표 변환 행렬은 다음과 같다:
S=sx000sy0001
여기서 $s_x$와 $s_y$는 각각 x축과 y축 방향으로의 스케일링 팩터이다. 어떤 점 $\mathbf{p} = \begin{bmatrix} x \ y \ 1 \end{bmatrix}$에 이 변환을 적용하면 스케일링된 점 $\mathbf{p'}$는 다음과 같이 계산된다:
p′=Sp=sx000sy0001xy1=sx⋅xsy⋅y1
회전 (Rotation)
점 $(x, y)$를 원점 중심으로 $\theta$만큼 회전시키는 동차좌표 변환 행렬은 다음과 같다:
R=cosθsinθ0−sinθcosθ0001
어떤 점 $\mathbf{p} = \begin{bmatrix} x \ y \ 1 \end{bmatrix}$에 이 변환을 적용하면 회전된 점 $\mathbf{p'}$는 다음과 같이 계산된다: