# 투영 변환과 동차좌표

### 투영 변환

투영 변환(projection transformation)은 3차원 객체를 2차원 평면에 투영하는 과정으로, 컴퓨터 그래픽스에서 매우 중요한 과정이다. 투영 변환은 주로 두 가지 유형이 있다: 평행 투영(parallel projection)과 원근 투영(perspective projection). 이 장에서는 주요 투영 기법들을 다룬다.

#### 평행 투영

평행 투영에서는 모든 투영선이 평행하며, 보통 객체의 형태와 상관 없이 크기가 동일하게 유지된다. 그 주요 형태로는 직교 투영(orthographic projection)이 있다.

**직교 투영**

직교 투영은 투영선이 투영면에 대해 수직인 경우를 말한다. 이는 주로 기술 도면에 많이 사용되며, 객체의 실제 크기를 왜곡없이 보여주는 특징이 있다. 직교 투영은 다음의 행렬을 사용하여 표현할 수 있다:

$$
\mathbf{M}\_\text{orthographic} = \begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 0 & 0 \ 0 & 0 & 0 & 1 \end{bmatrix}
$$

이 행렬은 3차원 점 $\mathbf{P} = (x, y, z)$를 2차원 평면에 투영하여 $\mathbf{P'} = (x, y, 0)$로 변환한다.

#### 원근 투영

원근 투영은 깊이에 따라 객체 크기가 변화하여 더 현실감 있는 이미지를 생성한다. 원근 투영의 기본 행렬은 다음과 같다:

$$
\mathbf{M}\_\text{perspective} = \begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 1 & 0 \ 0 & 0 & \frac{1}{d} & 0 \end{bmatrix}
$$

여기서 $d$는 카메라와 투영면 사이의 거리이다. 3차원 점 $\mathbf{P} = (x, y, z)$는 원근 투영을 거쳐 $\mathbf{P'} = (\frac{x}{z}, \frac{y}{z}, 1)$로 변환된다.

### 동차좌표계

동차좌표계(homogeneous coordinates)는 3차원 공간에서 투영 변환 및 기타 선형 변환을 보다 쉽게 처리하기 위해 사용된다. 동차좌표계는 각 점을 4차원 공간으로 확장하는 개념이다. 예를 들어, 3차원 점 $(x, y, z)$는 동차좌표계에서 $(x, y, z, 1)$로 나타낼 수 있다.

이를 통해 이동, 회전, 확대/축소 변환을 하나의 행렬 연산으로 표현할 수 있다. 예를 들어, 3차원 이동 변환은 다음과 같은 4x4 행렬로 표현된다:

$$
\mathbf{M}\_\text{translation} = \begin{bmatrix} 1 & 0 & 0 & t\_x \ 0 & 1 & 0 & t\_y \ 0 & 0 & 1 & t\_z \ 0 & 0 & 0 & 1 \end{bmatrix}
$$

여기서 $t\_x$, $t\_y$, $t\_z$는 이동 벡터의 성분이다.

동차좌표계를 사용하면, 투영 변환 또한 동일한 행렬 연산으로 취급할 수 있게 되며, 이는 매우 효율적이다.
