2D 전단 변환

2D 전단 변환은 객체를 평행 이동시키면서 형태를 변형시키는 작업이다. 전단 변환은 주로 직사각형을 평행사변형으로 변형할 때 사용된다. 기본 형태는 x축과 y축 두 가지 방향으로 구분될 수 있다.

1. x축 방향 전단 변환

x축 방향 전단 변환은 y 좌표에 비례하여 x 좌표를 변경하는 방법이다. 전단 계수를 s_x로 표기하면, 변환된 좌표 (x', y')는 다음과 같다:

\begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} x + s_x \cdot y \\ y \end{pmatrix}

이를 행렬 형태로 나타내면,

\begin{pmatrix} x' \\ y' \\ 1 \end{pmatrix} = \begin{pmatrix} 1 & s_x & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix}

2. y축 방향 전단 변환

y축 방향 전단 변환은 x 좌표에 비례하여 y 좌표를 변경하는 방법이다. 전단 계수를 s_y로 표기하면, 변환된 좌표 (x', y')는 다음과 같다:

\begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} x \\ y + s_y \cdot x \end{pmatrix}

이를 행렬 형태로 나타내면,

\begin{pmatrix} x' \\ y' \\ 1 \end{pmatrix} = \begin{pmatrix} 1 & 0 & 0 \\ s_y & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix}

3D 전단 변환

3D 공간에서의 전단 변환도 2D와 유사하지만 보다 복잡한 형태를 띤다. 3D 전단 변환은 주로 x축, y축, z축 방향으로 나누어지며 각 방향에 대한 설명은 다음과 같다.

1. x축 전단 변환

3D 공간에서 x축 방향 전단 변환은 y좌표와 z좌표에 비례하여 x좌표를 변경하는 방법이다. 전단 계수를 각각 s_{xy}, s_{xz}로 표기하면, 변환된 좌표 (x', y', z')는 다음과 같다:

\begin{pmatrix} x' \\ y' \\ z' \end{pmatrix} = \begin{pmatrix} x + s_{xy} \cdot y + s_{xz} \cdot z \\ y \\ z \end{pmatrix}

이를 행렬 형태로 나타내면,

\begin{pmatrix} x' \\ y' \\ z' \\ 1 \end{pmatrix} = \begin{pmatrix} 1 & s_{xy} & s_{xz} & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ z \\ 1 \end{pmatrix}

2. y축 전단 변환

3D 공간에서 y축 방향 전단 변환은 x좌표와 z좌표에 비례하여 y좌표를 변경하는 방법이다. 전단 계수를 각각 s_{yx}, s_{yz}로 표기하면, 변환된 좌표 (x', y', z')는 다음과 같다:

\begin{pmatrix} x' \\ y' \\ z' \end{pmatrix} = \begin{pmatrix} x \\ y + s_{yx} \cdot x + s_{yz} \cdot z \\ z \end{pmatrix}

이를 행렬 형태로 나타내면,

\begin{pmatrix} x' \\ y' \\ z' \\ 1 \end{pmatrix} = \begin{pmatrix} 1 & 0 & 0 & 0 \\ s_{yx} & 1 & s_{yz} & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ z \\ 1 \end{pmatrix}

3. z축 전단 변환

3D 공간에서 z축 방향 전단 변환은 x좌표와 y좌표에 비례하여 z좌표를 변경하는 방법이다. 전단 계수를 각각 s_{zx}, s_{zy}로 표기하면, 변환된 좌표 (x', y', z')는 다음과 같다:

\begin{pmatrix} x' \\ y' \\ z' \end{pmatrix} = \begin{pmatrix} x \\ y \\ z + s_{zx} \cdot x + s_{zy} \cdot y \end{pmatrix}

이를 행렬 형태로 나타내면,

\begin{pmatrix} x' \\ y' \\ z' \\ 1 \end{pmatrix} = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ s_{zx} & s_{zy} & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ z \\ 1 \end{pmatrix}

동차좌표계의 이점

동차좌표계를 사용하는 주요 이점은 다양한 기하 변환(이동, 회전, 크기 변환 및 전단 변환 등)을 한꺼번에 간단한 행렬 곱셈으로 표현할 수 있다는 것이다. 이를 통해 복합 변환을 쉽게 계산할 수 있다. 여러 변환을 연쇄적으로 적용하려면 각 변환에 해당하는 행렬을 곱하면 된다.

예를 들어, 2D에서 이동 행렬 T, 회전 행렬 R, 스케일링 행렬 S를 순서대로 적용하게 된다면, 최종 변환 행렬 M은 다음과 같이 작성할 수 있다:

M = T \cdot R \cdot S

이렇게 계산된 최종 변환 행렬 M을 이용하면 입력 좌표에 모든 변환을 한 번에 적용할 수 있다.


전단 변환은 객체의 좌표를 비례적으로 변경하여 형태를 변형시키는 기법으로, 2D 및 3D 그래픽스에서 사용된다. 동차좌표계를 사용하면 전단 변환을 포함한 여러 기하 변환을 하나의 행렬 연산으로 처리할 수 있어 편리한다.

동차좌표계를 이해하고 활용하면 다양한 그래픽스 애플리케이션에서 객체 변환 문제를 효과적으로 해결할 수 있다. 이를 통해 보다 복잡하고 정교한 그래픽 변형 및 애니메이션을 구현할 수 있다.