3D 变换
旋转
3D 旋转不同于 2D 旋转。在 3D 旋转中,我们必须指定旋转角度以及旋转轴。我们可以围绕 X、Y 和 Z 轴进行 3D 旋转。它们以矩阵形式表示如下 −
$$R_{x}( heta) = \begin{bmatrix} 1& 0& 0& 0\ 0& cos heta & −sin heta& 0\ 0& sin heta & cos heta& 0\ 0& 0& 0& 1\ \end{bmatrix} R_{y}( heta) = \begin{bmatrix} cos heta& 0& sin heta& 0\ 0& 1& 0& 0\ −sin heta& 0& cos heta& 0\ 0& 0& 0& 1\ \end{bmatrix} R_{z}( heta) =\begin{bmatrix} cos heta & −sin heta & 0& 0\ sin heta & cos heta & 0& 0\ 0& 0& 1& 0\ 0& 0& 0& 1 \end{bmatrix}$$
下图解释了绕各个轴的旋转 −


缩放
您可以使用缩放变换来更改对象的大小。在缩放过程中,您可以扩展或压缩对象的尺寸。可以通过将对象的原始坐标乘以缩放因子来实现缩放,以获得所需的结果。下图显示了 3D 缩放的效果 −

在 3D 缩放操作中,使用三个坐标。假设原始坐标为 (X, Y, Z),缩放因子分别为 $(S_{X,} S_{Y,} S_{z})$,生成的坐标为 (X', Y', Z')。这可以用数学形式表示如下 −
$S = \begin{bmatrix} S_{x}& 0& 0& 0\ 0& S_{y}& 0& 0\ 0& 0& S_{z}& 0\ 0& 0& 0& 1 \end{bmatrix}$
P’ = P∙S
$[{X}' \:\:\: {Y}' \:\:\: {Z}' \:\:\: 1] = [X \:\:\:Y \:\:\: Z \:\:\: 1] \:\: \begin{bmatrix} S_{x}& 0& 0& 0\ 0& S_{y}& 0& 0\ 0& 0& S_{z}& 0\ 0& 0& 0& 1 \end{bmatrix}$
$ = [X.S_{x} \:\:\: Y.S_{y} \:\:\: Z.S_{z} \:\:\: 1]$
剪切
使物体形状倾斜的变换称为剪切变换。与二维剪切一样,我们可以在三维中沿 X 轴、Y 轴或 Z 轴剪切物体。

如上图所示,有一个坐标 P。您可以对其进行剪切以获得新的坐标 P',该坐标可以以三维矩阵形式表示如下 −
$Sh = \begin{bmatrix} 1 & sh_{x}^{y} & sh_{x}^{z} & 0 \ sh_{y}^{x} & 1 & sh_{y}^{z} & 0 \ sh_{z}^{x} & sh_{z}^{y} & 1 & 0 \ 0 & 0 & 0 & 1 \end{bmatrix}$
P’ = P ∙ Sh
$X’ = X + Sh_{x}^{y} Y + Sh_{x}^{z} Z$
$Y' = Sh_{y}^{x}X + Y +sh_{y}^{z}Z$
$Z' = Sh_{z}^{x}X + Sh_{z}^{y}Y + Z$
变换矩阵
变换矩阵是变换的基本工具。将一个 n x m 维矩阵与物体坐标相乘。通常使用 3 x 3 或 4 x 4 矩阵进行变换。例如,考虑以下矩阵进行各种操作。
$T = \begin{bmatrix} 1& 0& 0& 0\ 0& 1& 0& 0\ 0& 0& 1& 0\ t_{x}& t_{y}& t_{z}& 1\ \end{bmatrix}$ | $S = \begin{bmatrix} S_{x}& 0& 0& 0\ 0& S_{y}& 0& 0\ 0& 0& S_{z}& 0\ 0& 0& 0& 1 \end{bmatrix}$ | $Sh = \begin{bmatrix} 1& sh_{x}^{y}& sh_{x}^{z}& 0\ sh_{y}^{x}& 1 & sh_{y}^{z}& 0\ sh_{z}^{x}& sh_{z}^{y}& 1& 0\ 0& 0& 0& 1 \end{bmatrix}$ |
Translation Matrix | Scaling Matrix | Shear Matrix |
$R_{x}( heta) = \begin{bmatrix} 1& 0& 0& 0\ 0& cos heta & -sin heta& 0\ 0& sin heta & cos heta& 0\ 0& 0& 0& 1\ \end{bmatrix}$ | $R_{y}( heta) = \begin{bmatrix} cos heta& 0& sin heta& 0\ 0& 1& 0& 0\ -sin heta& 0& cos heta& 0\ 0& 0& 0& 1\ \end{bmatrix}$ | $R_{z}( heta) = \begin{bmatrix} cos heta & -sin heta & 0& 0\ sin heta & cos heta & 0& 0\ 0& 0& 1& 0\ 0& 0& 0& 1 \end{bmatrix}$ |
Rotation Matrix |