US2S1L8——缩放矩阵

4×44 \times 4 矩阵的基本构成规则为:

[M11M12M13txM21M22M23tyM31M32M23tz0001]\begin{bmatrix} M_{11} & M_{12} & M_{13} & tx \\ M_{21} & M_{22} & M_{23} & ty \\ M_{31} & M_{32} & M_{23} & tz \\ 0 & 0 & 0 & 1 \end{bmatrix}

image

  1. 矩阵的 M3×3M^{3 \times 3} 部分用于表示旋转和缩放变换
  2. 矩阵的 t3×1t^{3 \times 1} 部分用于表示平移
  3. 矩阵的 01×30^{1\times3} 部分始终为零矩阵
  4. 矩阵的 右下角元素 始终为 1

缩放矩阵

缩放矩阵主要就是对向量或点进行缩放操作,它可以用于改变向量或点再各个坐标轴上的尺度
使其在每个方向上变大或变小,在三维空间中,它主要由xyzx、y、z轴的缩放因子构成。

缩放矩阵的构成为以下矩阵结构:(kxkykzkx、ky、kz分别代表xyzx、y、z轴的缩放因子)

[kx0000ky0000kz00001]\begin{bmatrix} kx & 0 & 0 & 0 \\ 0 & ky & 0 & 0 \\ 0 & 0 & kz & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}

注意:kx=ky=kzkx = ky = kz 时,称为**统一缩放否则称为非统一缩放**。

缩放矩阵的计算

需要注意的是,缩放矩阵主要是由基础变换矩阵的构成规则当中的 3×33 \times 3 矩阵决定的
因此,平移部分的 3×13 \times 1 矩阵都为0,并不影响计算,
所以**点(w=1w=1**​ **)和向量(w=0w=0**​ )与缩放矩阵进行计算都会发生改变

几何意义是 :

  • 对点的缩放(一般是构成模型的顶点),相当于就是在缩放模型大小

  • 对向量的缩放,

    • 统一缩放时只会改变向量的大小(模长),不会改变向量的方向
    • 非统一缩放时不仅会改变大小,可能还会改变向量的方向

因此缩放矩阵的计算就是直接和表示向量或点的列矩阵进行乘法运算即可,得到的结果就是缩放后的结果

缩放矩阵是否是正交矩阵(通过转置矩阵不可得逆矩阵)

首先说结论,缩放矩阵通常不是正交矩阵
为什么说通常不是呢,因为对于缩放矩阵来说kxkykzkx、ky、kz一般都不会是1,是1后就会是单位矩阵了
那只要不是1,就不能满足正交矩阵的条件(行、列向量为单位向量),
因此大多数情况下,它是不具备正交矩阵的特性的,所以缩放矩阵的逆矩阵我们需要通过计算得出:

计算得到的逆矩阵是:

[1kx00001ky00001kz00001]\begin{bmatrix} \frac{1}{kx} & 0 & 0 & 0 \\ 0 & \frac{1}{ky} & 0 & 0 \\ 0 & 0 & \frac{1}{kz} & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}