# 2D 및 3D 전단 변환

#### 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 그래픽스에서 사용된다. 동차좌표계를 사용하면 전단 변환을 포함한 여러 기하 변환을 하나의 행렬 연산으로 처리할 수 있어 편리한다.

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