变换

  • 模型变换(Modeling)

  • 视图变换(Viewing)

2D 变换

缩放

屏幕截图-2025-01-24-111217.webp

屏幕截图-2025-01-24-111418.webp

\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix}

发射(对称)

屏幕截图-2025-01-24-111645.webp

\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix}

切变

屏幕截图 2025-01-24 111937.png

纵坐标不变,水平变化

\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 1 & a \\ 0 & 1 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix}

旋转

默认情况下绕(0, 0)点旋转,逆时针旋转

屏幕截图 2025-01-24 112310.png

R_{\theta} = \begin{bmatrix} cos\theta & -sin\theta \\sin\theta & cos\theta\end{bmatrix}

线性变换

x' = ax + by
y' = cx + dy
\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} a & b \\ c & d \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix}
x' = Mx

齐次坐标

为什么需要齐次坐标?

平移变换

屏幕截图-2025-01-24-113243.webp

x' = x + t_x \\ y' = y + t_y

平移无法表示成矩阵形式

\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} + \begin{bmatrix} t_x \\ t_y \end{bmatrix}

平移操作不属于线性变换

增加一个维度

  • 2D\ point = (x, y, 1)^T

  • 2D\ vector = (x, y, 0)^T

屏幕截图-2025-01-24-135257.webp

屏幕截图-2025-01-24-135408.webp

平移矩阵

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

放射变换(Affine Transformations)

Affine map = linear map + translation

\begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} a & b \\ c & d \end{pmatrix} \cdot \begin{pmatrix} x \\ y \end{pmatrix} + \begin{pmatrix} t_x \\ t_y \end{pmatrix}

使用齐次坐标

\begin{pmatrix} x' \\ y' \\ 1 \end{pmatrix} = \begin{pmatrix} a & b & t_x \\ c & d & t_y \\ 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} x \\ y \\ 1 \end{pmatrix}

屏幕截图-2025-01-24-135902.webp

逆变换

M^{-1}

auify-m92wu.webp

组合变换

屏幕截图 2025-01-24 140325.png

一个复杂变换可以由多个简单变换组成,变换的顺序至关重要(矩阵不满足交换律)。

a5asr-1b2xt.webp

变换分解

ai6pw-eifor.webp

3D变换

齐次坐标

  • 3D point = (x, y, z, 1)^T

  • 3D vector = (x, y, z, 0)^T

a8pau-soc24.webp

矩阵表示

\begin{pmatrix} x' \\ y' \\ z' \\ 1 \end{pmatrix} = \begin{pmatrix} a & b & c & t_x \\ d & e & f & t_y \\ g & h & i & t_z \\ 0 & 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} x \\ y \\ z \\ 1 \end{pmatrix}