# 동차좌표계의 정의

### 정의

동차좌표계(Homogeneous Coordinate System)는 컴퓨터 그래픽과 기하학에서 활용되는 좌표 표현 방식 중 하나로, 주로 2D 또는 3D 공간에서의 변환(Transformation)을 쉽게 처리하기 위해 사용된다. 일반적인 직교 좌표계에서 동차좌표계는 추가적인 차원을 도입하여 변환 행렬을 통해 직선 변환을 수행할 수 있게 한다. 2D 공간의 경우에는 좌표 $(x, y)$가 $(x, y, 1)$로, 3D 공간의 경우에는 좌표 $(x, y, z)$가 $(x, y, z, 1)$로 표현된다.

이러한 좌표 변환은 아핀 변환(Affine Transformation)과 투영 변환(Projective Transformation)을 포함한 다양한 변환을 다루기 쉽게 해준다. 동차좌표계는 주로 3차원 그래픽스에서 이동, 회전, 스케일링 등의 변환을 행렬로 표현할 때 유용하게 사용된다.

### 수학적 표현

동차좌표계는 기존의 직교 좌표계에 1차원을 추가하여 표현한다. 예를 들어, 2차원 좌표 $(x, y)$는 동차좌표계에서 아래와 같이 표현된다.

$$
(x, y) \rightarrow (x, y, 1)
$$

3차원 좌표 $(x, y, z)$는 동차좌표계에서 아래와 같이 표현된다.

$$
(x, y, z) \rightarrow (x, y, z, 1)
$$

동차좌표를 사용하면 원래의 좌표를 변환하는 프로세스가 보다 간결하고 일관되게 된다. 예를 들어 2차원 평면의 경우 아래와 같은 3x3 변환 행렬 $\mathbf{T}$를 사용하여 변환이 이루어진다.

$$
\mathbf{T} =
\begin{bmatrix}
t\_{11} & t\_{12} & t\_{13} \\
t\_{21} & t\_{22} & t\_{23} \\
0 & 0 & 1
\end{bmatrix}
$$

### 동차좌표계의 기본 개념과 원리

동차좌표계는 컴퓨터 그래픽스뿐만 아니라 컴퓨터 비전, 로보틱스 및 기계 학습 등 다양한 응용 분야에서 사용된다. 이 좌표계의 강력함은 주로 이질적인 다양한 변환들을 단일 형식으로 처리할 수 있다는 데에 있다.

#### 기본 개념

동차좌표계에서는 2차원 공간의 점도 3차원 벡터로, 3차원 공간의 점은 4차원 벡터로 표현된다. 예를 들어, 2차원에서의 점 $(x, y)$는 동차좌표계에서 $(x, y, 1)$로 표현된다. 여기서 마지막의 '1'은 동차적 좌표의 세 번째 성분으로, 주어진 좌표가 유클리드 공간의 점임을 나타낸다. 이 좌표는 벡터 형식으로 나타낼 수 있으며, 선형 변환을 쉽게 표현할 수 있게 한다.

#### 선형 변환

동차좌표계에서는 회전, 이동, 스케일링 등의 변환을 행렬 곱셈을 통해 표현할 수 있다. 이 과정은 매우 직관적이며, 컴퓨터 그래픽스 애니메이션이나 삼차원 모델링에서 특히 유용하다.

회전 변환의 예를 들어보겠다. 2차원에서의 회전 변환은 동차좌표계에서 다음과 같은 $3 \times 3$ 행렬로 표현된다:

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

따라서, 점 $\mathbf{p} = (x, y, 1)$을 $\theta$만큼 회전시키기 위해서는 다음과 같은 행렬 곱셈을 수행한다:

$$
\mathbf{p'} = \mathbf{R} \cdot \mathbf{p} = \begin{pmatrix}
\cos\theta & -\sin\theta & 0 \\
\sin\theta & \cos\theta & 0 \\
0 & 0 & 1
\end{pmatrix} \begin{pmatrix}
x \\
y \\
1
\end{pmatrix}
$$

이외에도 평행이동, 스케일링, 반사 등의 다양한 변환을 동차좌표계를 통해 쉽게 표현할 수 있다.

#### 3차원 공간의 동차좌표계

3차원 공간에서의 동차좌표계는 4차원 벡터를 사용한다. 점 $(x, y, z)$는 동차좌표계에서 $(x, y, z, 1)$로 표현된다. 3차원 변환 행렬은 $4 \times 4$ 크기의 행렬이며, 이 행렬을 통해 동일한 방식으로 다양한 선형 변환이 수행된다.

예를 들어, 3차원 회전 변환 행렬은 다음과 같은 형태를 가질 수 있다:

$$
\mathbf{R}\_{x}(\theta) = \begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & \cos\theta & -\sin\theta & 0 \\
0 & \sin\theta & \cos\theta & 0 \\
0 & 0 & 0 & 1
\end{pmatrix}
$$

이는 $x$ 축을 기준으로 한 회전 변환 행렬로, 동일한 방법으로 $y$ 축과 $z$ 축을 기준으로 한 회전 변환 행렬 역시 정의할 수 있다.

동차좌표계를 통해 다양한 변환 행렬을 결합하는 것도 가능한다. 예를 들어, 회전 후 평행이동을 수행하거나, 스케일링 후 회전하는 등의 복합 변환을 연속된 행렬 곱셈으로 간단하게 계산할 수 있다.

#### 실용적인 응용

동차좌표계는 실제로 다양한 응용 분야에서 사용된다. 특히 컴퓨터 그래픽스에서는 객체의 변환과 카메라 뷰 변환을 구현하는 데 필수적이다. 또한 컴퓨터 비전에서는 이미지의 기하학적 왜곡을 교정하거나, 로보틱스에서는 로봇 팔의 움직임을 제어하는 데 사용된다.

### 동차좌표계의 장점

1. **편의성**: 이동, 회전, 스케일링 같은 변환을 행렬 곱셈으로 표현하여 연산이 간편하다.
2. **일관성**: 여러 변환을 일관된 방식으로 결합하여 하나의 변환으로 적용할 수 있다.
3. **효율성**: 행렬 연산을 사용함으로써 하드웨어 가속을 이용한 성능 최적화가 가능하다.

***

동차좌표계는 컴퓨터 그래픽스와 기하 변환에 있어 강력한 도구로 사용된다. 행렬 연산을 통해 여러 종류의 변환을 효율적이고 일관되게 처리할 수 있다. 이를 통해 다양한 시각적 효과와 기하학적 조작을 구현할 수 있으며, 특히 실시간 애플리케이션(예: 3D 게임, 시뮬레이션)에서 매우 유용하다.
