동차좌표 시스템

동차좌표(homogeneous coordinate) 시스템은 기존의 유클리드 좌표를 확장한 것이다. 2차원 동차좌표는 일반적으로 (x, y, w)의 형태로 표현되며, 여기서 w는 동차 좌표의 스케일 인수이다. 유클리드 좌표 (x, y)는 동차좌표 (x, y, 1)로 변환될 수 있다.

동차좌표의 정의

동차좌표는 기본적으로 다음과 같이 정의된다:

\mathbf{p}_h = \begin{bmatrix} x \\ y \\ w \end{bmatrix}

여기서 xy는 점의 유클리드 좌표이고 w는 동차 인수이다. 유클리드 좌표계에서의 점 (x_e, y_e)는 다음과 같이 동차좌표로 표현될 수 있다:

\mathbf{p}_h = \begin{bmatrix} x_e \\ y_e \\ 1 \end{bmatrix}

아핀 변환

아핀 변환(affine transformation)은 점, 직선, 그리고 평면 등의 기하학적 객체를 변환하는데 사용된다. 이러한 변환에는 회전, 이동, 축소 및 확대 등이 포함된다. 아핀 변환은 선형 변환을 포함하며, 이는 다음과 같은 일반적인 형태로 표현될 수 있다:

\mathbf{p}_h' = \mathbf{A} \cdot \mathbf{p}_h

행렬 표현

2차원 아핀 변환은 3 \times 3 행렬 \mathbf{A}를 사용하여 나타낼 수 있다:

\mathbf{A} = \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ 0 & 0 & 1 \end{bmatrix}

변환된 동차좌표 \mathbf{p_H}'는 다음과 같이 계산된다:

\mathbf{p}_h' = \mathbf{A} \cdot \mathbf{p}_h

여기서,

\mathbf{p}_h = \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}

예를 들어, 좌표 (x, y)가 아핀 변환 행렬 \mathbf{A}에 의해 변환되는 과정은 다음과 같다:

\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}

이는 이렇게 전개될 수 있다:

x' = a_{11} x + a_{12} y + a_{13}
y' = a_{21} x + a_{22} y + a_{23}

특성 및 응용

아핀 변환의 유용한 속성 중 하나는 선형성과 평행성의 보존이다. 이는 아핀 변환이 적용되는 동안 직선은 여전히 직선으로 유지되고, 평행한 직선을 그대로 평행함을 유지한다는 것을 의미한다.

다양한 그래픽 응용 프로그램에서 아핀 변환은 객체의 회전, 이동, 축소 및 확대를 수행하는 데 사용된다.

아핀 변환의 주요 유형

아핀 변환은 몇 가지 기본적인 변환을 포함한다. 이들 변환은 개별적으로 또는 조합하여 사용될 수 있다.

1. 이동 변환 (Translation)

이동 변환은 좌표를 평행하게 이동시키는 변환이다. 이동 변환의 동차 좌표 행렬은 다음과 같이 표현된다:

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

여기서 t_xt_y는 각각 x축 및 y축 방향으로의 이동 거리이다.

2. 축척 변환 (Scaling)

축척 변환은 좌표를 크기 조정하는 변환이다. 동차 좌표 행렬은 다음과 같다:

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

여기서 s_xs_y는 각각 x축 및 y축 방향의 스케일 인수이다.

3. 회전 변환 (Rotation)

회전 변환은 좌표를 회전시키는 변환이다. 다음과 같이 표현된다:

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

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

4. 반사 변환 (Reflection)

반사 변환은 좌표를 대칭 축을 기준으로 반사시키는 변환이다. 예를 들어, x축을 기준으로 반사시키는 행렬은 다음과 같다:

\mathbf{M}_x = \begin{bmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

5. 전단 변환 (Shear)

전단 변환은 한 축에 대해 좌표를 기울이는 변환이다. y축에 대한 전단 변환 행렬은 다음과 같다:

\mathbf{H}_y = \begin{bmatrix} 1 & h & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

여기서 h는 전단 인수이다.

아핀 변환 행렬의 결합

다수의 아핀 변환을 연속적으로 적용하려면 각 변환의 동차 좌표 행렬을 곱하여 하나의 행렬로 결합할 수 있다. 예를 들어, 이동 변환 \mathbf{T}, 축척 변환 \mathbf{S}, 및 회전 변환 \mathbf{R}의 결합은 다음과 같이 계산된다:

\mathbf{A} = \mathbf{T} \cdot \mathbf{S} \cdot \mathbf{R}

이처럼 결합된 행렬 \mathbf{A}는 단일 단계의 아핀 변환으로 동일한 결과를 적용할 수 있게 한다.