<aside> 💡 이 글은 UC davis 의 컴퓨터 그래픽스 강의를 요약한 글입니다.
</aside>
(x,y) from origin1 ⇒ (x+a, x+b) from origin 1
[x, y, 1] Vector를 [x+a. x+b, 1]로 ($\alpha$ , $\beta$)만큼 이동시킨다. 이때 [x, y, 1] 에 1 이 뒤에 붙음으로서 행렬 하나로 이동 연산을 처리할 수 있다.
$$ Translate\ 2D\\ \begin{bmatrix} 1 & 0 & \alpha \\ 0 & 1 & \beta \\ 0& 0& 1 \\ \end{bmatrix}
\begin{bmatrix} x+\alpha \\ y+\beta \\ 1 \end{bmatrix} $$
$$ Translate\ 3D\\
\begin{bmatrix} x+\alpha \\ y+\beta \\ z+\gamma \\ 1 \end{bmatrix} $$
$$ Scale \ 2D \\
\begin{bmatrix} a & 0 & 0 \\ 0 & b & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}
= \begin{bmatrix} ax \\ by \\ 1 \end{bmatrix} $$
$$ Scale\ 3D\\
\begin{bmatrix}
\alpha x \\ \beta y \\ \gamma z\\ 1
\end{bmatrix}
$$
사각형에게 이 Matrix를 적용할 때, 중심점이 (0,0)이면 아무 문제가 없다. 문제는 도형의 중심점이 Origin Point가 아닐 때 생긴다.
기준점이 0,0인 경우 의도한 대로 정상 작동
그러나 물체의 위치까지 함께 변화하는 문제 발생
<aside> 💡 ❓이를 어떻게 해결할 것인가?
1️⃣ 사각형 중심을 원점(0,0)으로 이동시킨뒤 2️⃣ Scale matrix를 곱해주고 3️⃣ 기존 원점으로 재 이동 시킨다. 즉 Translate + Scale + Translate.
만약 a(1,1) b(1,3) c(3,1) d(3,3) 점을 가진 사각형의 중심축이 (2, 2)라면 a(1,1) → 2* a'(-1, -1) ⇒ a''(-2, -2) → a'''(0, 0) b(1,3) → 2* b'(-1, 1) ⇒ b''(-2, 2) → b'''(0, 4) c(3,1) → 2* c'(1, -1) ⇒ c''(2, -2) → c'''(4, 0) d(3,3) → 2* d'(1, 1) ⇒ d''(2, 2) → d'''(4, 4)
</aside>
이를 행렬로 표현하면 아래와 같다.
\begin{bmatrix} x+\alpha \\ y+\beta \\ 1 \end{bmatrix} $$
$$ Scale(\hat{i},\hat{j}) \\
\begin{bmatrix} i & 0 & 0 \\ 0 & j & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} $$
$$ {\color{blue}Translate(-\alpha,-\beta)} \Rightarrow Scale(\hat{i},\hat{j}) \Rightarrow Translate(+\alpha,+\beta)\\
\begin{bmatrix} 1 & 0 & \alpha \\ 0 & 1 & \beta \\ 0 & 0 & 1 \\ \end{bmatrix}
\begin{bmatrix} i & 0 & 0 \\ 0 & j & 0 \\ 0 & 0 & 1 \\ \end{bmatrix}
{\color{blue}\begin{bmatrix} 1 & 0 & -\alpha \\ 0 & 1 & -\beta \\ 0 & 0 & 1 \\ \end{bmatrix}}
\begin{bmatrix} x \\ y \\ 1 \end{bmatrix}
\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix}
$$
$$ Translate\ 3D\\
\begin{bmatrix} x+\alpha \\ y+\beta \\ z+\gamma \\ 1 \end{bmatrix} $$
$$ Scale\ 3D\\
\begin{bmatrix} \alpha & 0 & 0 & 0\\ 0 & \beta & 0 & 0\\ 0 & 0 & \gamma & 0\\ 0 & 0 & 0 & 1 \end{bmatrix}
\begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} $$