투영 변환

투영 변환(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는 이동 벡터의 성분이다.

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