2D 회전 변환

2D 공간에서의 회전 변환은 주로 회전 행렬을 사용하여 수행된다. 이는 일반적으로 원점 기준으로 점을 회전시키는데, 특정 \theta 라디안만큼 회전하는 변환을 정의한다.

회전 행렬

임의의 점 \mathbf{p} = [x, y]\theta 라디안만큼 회전시키려면, 회전 행렬 \mathbf{R}을 사용하여 다음과 같이 계산한다:

\mathbf{R} = \begin{bmatrix} \cos{\theta} & -\sin{\theta} \\ \sin{\theta} & \cos{\theta} \end{bmatrix}
회전 변환 적용

이를 사용하여 점 \mathbf{p} = [x, y]에 회전 변환을 적용하면:

\mathbf{p}' = \mathbf{R} \mathbf{p}

즉, $$ \begin{bmatrix} x' \ y' \end{bmatrix} = \begin{bmatrix} \cos{\theta} & -\sin{\theta} \ \sin{\theta} & \cos{\theta} \end{bmatrix} \begin{bmatrix} x \ y \end{bmatrix} $$

따라서, 회전된 점 \mathbf{p}' = [x', y']의 좌표는 다음과 같다:

x' = x \cos{\theta} - y \sin{\theta}
y' = x \sin{\theta} + y \cos{\theta}

3D 회전 변환

3D 공간에서의 회전 변환은 축(axis) 주변의 회전으로 정의된다. 3D 회전에 필요한 주요 회전 행렬은 x축, y축, z축에 대한 각각의 회전 행렬로 구분된다.

X축에 대한 회전

\theta 라디안만큼 X축을 중심으로 회전하는 행렬 \mathbf{R_x}는 다음과 같이 표현된다:

\mathbf{R_x} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos{\theta} & -\sin{\theta} \\ 0 & \sin{\theta} & \cos{\theta} \end{bmatrix}

Y축에 대한 회전

\theta 라디안만큼 Y축을 중심으로 회전하는 행렬 \mathbf{R_y}는 다음과 같이 표현된다:

\mathbf{R_y} = \begin{bmatrix} \cos{\theta} & 0 & \sin{\theta} \\ 0 & 1 & 0 \\ -\sin{\theta} & 0 & \cos{\theta} \end{bmatrix}

Z축에 대한 회전

\theta 라디안만큼 Z축을 중심으로 회전하는 행렬 \mathbf{R_z}는 다음과 같이 표현된다:

\mathbf{R_z} = \begin{bmatrix} \cos{\theta} & -\sin{\theta} & 0 \\ \sin{\theta} & \cos{\theta} & 0 \\ 0 & 0 & 1 \end{bmatrix}
회전 변환 적용

3D 공간의 점 \mathbf{p} = [x, y, z]에 대한 회전 변환은 다음과 같이 표현된다:

\mathbf{p}' = \mathbf{R} \mathbf{p}

여기서 \mathbf{R}은 원하는 축에 대한 회전 행렬 (예: \mathbf{R_x}, \mathbf{R_y}, \mathbf{R_z})이 될 수 있다.

3D 회전은 종종 여러 축에 대해 순차적으로 회전 변환을 적용해야 하며, 이러한 경우 회전 기하와 관련된 복합 변환(matrix multiplication)을 사용한다.

동차좌표계 (Homogeneous Coordinates)

동차 좌표계는 통상적인 Cartesian 좌표계를 확장하여 그래픽 변환, 특히 3D 그래픽과 컴퓨터 비전에서 변환을 보다 쉽게 다룰 수 있게 한다. 이는 일반적인 선형 변환 외에 평행 이동을 4x4 행렬 연산으로 표현할 수 있게 해준다.

2D 동차 좌표계

정의

2D 공간의 동차 좌표계는 기존의 2D 점 [x, y]를 3개의 값 [x, y, 1]로 확장하여 나타낸다. 여기서 마지막 요소인 1은 "규격화(w)" 변수가 된다.

변환 행렬

일반적인 2D 변환(회전, 이동, 확대/축소)은 3x3 동차 행렬로 표현할 수 있다. 예를 들어, 변환 행렬 \mathbf{T}는 다음과 같이 나타낼 수 있다:

\mathbf{T} = \begin{bmatrix} a & b & tx \\ c & d & ty \\ 0 & 0 & 1 \end{bmatrix}

여기서: - a, b, c, d는 선형 변환 성분 (예: 회전, 확대/축소)을 나타낸다. - tx, ty는 이동 변환 성분을 나타낸다.

변환 적용

원래 점 \mathbf{p} = [x, y, 1]^T에 변환 행렬 \mathbf{T}를 적용하면 변환된 점 \mathbf{p'} = [x', y', 1]^T는 다음과 같이 계산된다:

\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} a & b & tx \\ c & d & ty \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}

3D 동차 좌표계

정의

3D 공간의 동차 좌표계는 기존의 3D 점 [x, y, z]를 4개의 값 [x, y, z, 1]로 확장하여 나타낸다.

변환 행렬

3D 변환(회전, 이동, 확대/축소)은 4x4 동차 행렬로 표현된다. 변환 행렬 \mathbf{T}는 다음과 같이 나타낼 수 있다:

\mathbf{T} = \begin{bmatrix} r_1 & r_2 & r_3 & tx \\ r_4 & r_5 & r_6 & ty \\ r_7 & r_8 & r_9 & tz \\ 0 & 0 & 0 & 1 \end{bmatrix}

여기서: - r_i들은 회전 및 확대/축소 성분을 나타낸다. - tx, ty, tz는 이동 변환 성분을 나타낸다.

변환 적용

원래 점 \mathbf{p} = [x, y, z, 1]^T에 변환 행렬 \mathbf{T}을 적용하면, 변환된 점 \mathbf{p'} = [x', y', z', 1]^T는 다음과 같이 계산된다:

\begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} = \begin{bmatrix} r_1 & r_2 & r_3 & tx \\ r_4 & r_5 & r_6 & ty \\ r_7 & r_8 & r_9 & tz \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix}

동차 좌표계의 장점

  1. 통합된 변환: 회전, 이동, 확대/축소 등의 변환을 하나의 행렬 연산으로 처리할 수 있다.
  2. 평행 이동의 표현: 3x3 또는 4x4 행렬을 사용하여 평행 이동을 선형 변환과 함께 처리할 수 있다.
  3. 행렬 곱 활용: 여러 변환을 연이어 적용할 때, 행렬 곱셈을 사용하여 효율적으로 계산할 수 있다.

이러한 이유로 동차 좌표계는 컴퓨터 그래픽스 및 컴퓨터 비전에서 중요한 도구로 사용된다.