동차좌표(homogeneous coordinates)는 컴퓨터 그래픽스와 기하학 변환에서 주요한 역할을 한다. 동차좌표를 사용하면 이차원 평면에서 선형 변환과 이동 변환을 행렬곱으로 통합적으로 표현할 수 있다. 이 장에서는 동차좌표계를 이용한 전단 변환의 개념과 수학적 표현에 대해 자세히 설명한다.

동차좌표의 개념

동차좌표는 일반적인 데카르트 좌표 (x, y)를 확장하여 3차원 벡터 (x', y', w)로 표현한 것이다. 이때 w \neq 0이며, 일반적으로 w = 1로 취급한다. 이를 통해 다음과 같은 관계를 갖는다.

(x, y) \rightarrow (x', y', w)
x' = w \cdot x, \quad y' = w \cdot y, \quad w \neq 0

이를 이용하면 평면상의 점을 3차원 벡터 공간으로 확장하여 다양한 변환을 행렬 연산으로 쉽게 수행할 수 있다.

전단 변환의 개념

전단 변환(shear transformation)은 좌표축 방향으로 객체를 평행이동시키지 않고, 다른 방향으로 밀어서 일종의 "평행 이동"을 유발하는 변환이다. 예를 들어 x축 방향 전단 변환은 수직(세로)선을 y축 방향으로, y축 방향 전단 변환은 수평(가로)선을 x축 방향으로 기울게 만든다.

동차좌표를 이용한 전단 변환 행렬

동차좌표계를 이용하여 전단 변환을 수학적으로 표현할 수 있다. 전단 변환 행렬은 다음과 같이 표현된다.

x축 방향 전단 변환

x축 방향으로 전단 변환을 수행하려면 y 좌표에 비례하여 x 좌표를 변화시킨다. 이 변환은 다음 행렬로 표현할 수 있다.

\mathbf{M}_\text{x-shear} = \begin{bmatrix} 1 & k & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

여기서 k는 전단 계수로, y축 방향으로 x좌표가 얼마나 영향을 받는지를 나타낸다. 변환된 좌표 (x', y')는 행렬곱을 통해 다음과 같이 구할 수 있다.

\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} 1 & k & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \begin{bmatrix} x + ky \\ y \\ 1 \end{bmatrix}

y축 방향 전단 변환

y축 방향으로 전단 변환을 수행하려면 x 좌표에 비례하여 y 좌표를 변화시킨다. 이 변환은 다음 행렬로 표현할 수 있다.

\mathbf{M}_\text{y-shear} = \begin{bmatrix} 1 & 0 & 0 \\ k & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

여기서 k는 전단 계수로, x축 방향으로 y좌표가 얼마나 영향을 받는지를 나타낸다. 변환된 좌표 (x', y')는 행렬곱을 통해 다음과 같이 구할 수 있다.

\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 \\ k & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \begin{bmatrix} x \\ kx + y \\ 1 \end{bmatrix}

예제

목표: 점 (x, y) = (2, 3)에 x축 방향 전단 변환을 적용하여 결과를 계산한다. 전단 계수 k = 1로 설정한다.


\mathbf{M}_\text{x-shear} = \begin{bmatrix} 1 & 1 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}
\mathbf{P} = \begin{bmatrix} 2 \\ 3 \\ 1 \end{bmatrix}

변환된 좌표를 구하면:

\mathbf{P'} = \mathbf{M}_\text{x-shear} \cdot \mathbf{P} = \begin{bmatrix} 1 & 1 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \\ 1 \end{bmatrix} = \begin{bmatrix} 2 + 3 \\ 3 \\ 1 \end{bmatrix} = \begin{bmatrix} 5 \\ 3 \\ 1 \end{bmatrix}

따라서 전단 변환 후의 점은 (x', y') = (5, 3)가 된다.

동차좌표계의 장점

동차좌표계를 사용하는 주요 장점은 여러 유형의 기하학적 변환을 하나의 일관된 형태로 표현할 수 있다는 점이다. 이를 통해 변환들을 쉽게 결합(콤포지션)할 수 있다. 예를 들어, 회전, 스케일링, 이동, 전단 등 서로 다른 변환들을 순차적으로 곱하면 복합적인 변환을 쉽게 계산할 수 있다. 이는 컴퓨터 그래픽스에서 특히 유용하다.

다양한 기하학적 변환 조합

동차좌표계를 사용하면 여러 기하학적 변환을 하나의 행렬에 결합하여 일괄적으로 처리할 수 있다. 예를 들어, 한 점에 대해 회전 변환을 적용한 다음 전단 변환을 적용하려면 각각의 변환 행렬을 곱한 단일 변환 행렬을 만들 수 있다.

예제: 회전 변환 후 전단 변환

  1. 회전 변환 행렬 (θ각도 만큼 회전):
\mathbf{M}_\text{rotation} = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}
  1. x축 방향 전단 변환 행렬:
\mathbf{M}_\text{x-shear} = \begin{bmatrix} 1 & k & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}
  1. 결합된 변환 행렬:
\mathbf{M}_\text{combined} = \mathbf{M}_\text{x-shear} \cdot \mathbf{M}_\text{rotation}

이를 통해 변환된 점을 한 번의 행렬곱 연산으로 얻을 수 있다.


동차좌표계는 다양한 기하학적 변환을 단일 행렬 연산으로 표현하고 결합할 수 있어 매우 강력한 도구이다. 이를 통해 변환 작업을 효율적이고 체계적으로 수행할 수 있다.