동차좌표와 아핀 변환

동차좌표 시스템

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

동차좌표의 정의

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

ph=[xyw]\mathbf{p}_h = \begin{bmatrix} x \\ y \\ w \end{bmatrix}

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

ph=[xeye1]\mathbf{p}_h = \begin{bmatrix} x_e \\ y_e \\ 1 \end{bmatrix}

아핀 변환

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

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

행렬 표현

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

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

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

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

여기서,

ph=[xy1]\mathbf{p}_h = \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}

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

[xy1]=[a11a12a13a21a22a23001][xy1]\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=a11x+a12y+a13x' = a_{11} x + a_{12} y + a_{13}
y=a21x+a22y+a23y' = a_{21} x + a_{22} y + a_{23}

특성 및 응용

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

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

아핀 변환의 주요 유형

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

1. 이동 변환 (Translation)

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

T=[10tx01ty001]\mathbf{T} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix}

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

2. 축척 변환 (Scaling)

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

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

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

3. 회전 변환 (Rotation)

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

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

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

4. 반사 변환 (Reflection)

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

Mx=[100010001]\mathbf{M}_x = \begin{bmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

5. 전단 변환 (Shear)

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

Hy=[1h0010001]\mathbf{H}_y = \begin{bmatrix} 1 & h & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

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

아핀 변환 행렬의 결합

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

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

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

Last updated