벡터 공간과 동차좌표

벡터 공간(vector space)에서 동차좌표(homogeneous coordinates)는 2차원이나 3차원 공간에 새로운 차원을 추가하여 벡터들을 더 쉽게 표현하고 변환할 수 있게 해준다. 예를 들어, 2차원 공간에서 점 (x, y)는 동차좌표계를 사용하면 (x, y, 1)로 표현된다.

2차원에서의 동차좌표

2차원에서의 동차좌표는 (x, y) 벡터를 (x, y, 1)로 변환한다. 이를 일반적으로 다음과 같이 나타낸다:

\mathbf{v} = \begin{pmatrix} x \\ y \end{pmatrix} \rightarrow \mathbf{v_h} = \begin{pmatrix} x \\ y \\ 1 \end{pmatrix}

여기서 \mathbf{v_h}는 동차 좌표 벡터(homogeneous vector)를 의미한다.

3차원에서의 동차좌표

3차원에서는 각 벡터에 한 차원을 추가하여 (x, y, z) 벡터를 (x, y, z, 1)로 변환한다. 이는 다음과 같다:

\mathbf{v} = \begin{pmatrix} x \\ y \\ z \end{pmatrix} \rightarrow \mathbf{v_h} = \begin{pmatrix} x \\ y \\ z \\ 1 \end{pmatrix}

동차좌표의 주요 특징

비례 관계

동차좌표 벡터는 비례 관계를 유지한다. 예를 들어, (kx, ky, k)(x, y, 1)는 동일한 점을 나타낸다. 즉, 다음과 같다:

\begin{pmatrix} kx \\ ky \\ k \end{pmatrix} \sim \begin{pmatrix} x \\ y \\ 1 \end{pmatrix}

무한대 표현

동차좌표는 무한대를 표현하는 데도 사용된다. 점이 무한대에 있을 때, 마지막 원소가 0이 된다. 예를 들어, (x, y, 0)는 무한대에 있는 점을 나타낸다.

행렬 변환에서의 동차좌표

동차좌표를 사용하면 행렬 변환(matrix transformation)이 더 편리하다. 회전, 평행 이동, 스케일링 등의 변환을 행렬 곱셈으로 표현할 수 있다.

2차원 변환

2차원에서의 변환은 3 \times 3 행렬로 표현된다. 예를 들어, 평행 이동(transformation) 행렬 \mathbf{T}는 다음과 같다:

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

이 행렬을 동차좌표 벡터에 곱셈하면 평행 이동이 이루어진다.

3차원 변환

3차원에서의 변환은 4 \times 4 행렬로 표현된다. 예를 들어, 다음과 같은 평행 이동 행렬 \mathbf{T}가 있을 때:

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

이를 동차좌표 벡터에 곱셈하면 3차원 공간에서 평행 이동이 이루어진다.

변환 예시

2차원 변환 예시

평행 이동

동차좌표 벡터에 평행 이동 행렬을 적용해보자. 점 (x, y)를 평행 이동 시키는 식은 다음과 같다:

\begin{pmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} x + t_x \\ y + t_y \\ 1 \end{pmatrix}

즉, 점 (x, y)(x + t_x, y + t_y)로 이동된다.

회전

회전 행렬은 다음과 같다 (회전 각도 \theta):

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

이를 적용하면 점 (x, y)는 회전된 점 (x', y')로 변환된다:

\begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} x\cos\theta - y\sin\theta \\ x\sin\theta + y\cos\theta \\ 1 \end{pmatrix}

즉, 점 (x, y)는 회전 변환 후 (x\cos\theta - y\sin\theta, x\sin\theta + y\cos\theta)로 바뀐다.

3차원 변환 예시

평행 이동

3차원 공간에서의 평행 이동 행렬을 적용해보자:

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

이를 동차좌표 벡터에 곱하면:

\begin{pmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ z \\ 1 \end{pmatrix} = \begin{pmatrix} x + t_x \\ y + t_y \\ z + t_z \\ 1 \end{pmatrix}

따라서 점 (x, y, z)(x + tx, y + ty, z + tz)로 변경된다.

회전

3차원 공간에서의 회전 행렬도 세 종류가 있다: x축, y축, z축을 기준으로 한 회전. 예를 들어 z축을 기준으로 하는 회전 행렬은 다음과 같다:

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

이를 동차좌표 벡터에 적용하면:

\begin{pmatrix} \cos\theta & -\sin\theta & 0 & 0 \\ \sin\theta & \cos\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ z \\ 1 \end{pmatrix} = \begin{pmatrix} x\cos\theta - y\sin\theta \\ x\sin\theta + y\cos\theta \\ z \\ 1 \end{pmatrix}

이와 같이 점 (x, y, z)는 회전 변환 후 (x\cos\theta - y\sin\theta, x\sin\theta + y\cos\theta, z)로 변화된다.