矩阵是什么?
- 矩阵是一种描述
线性变换
的工具 线性变换
- 定义:是一个从向量空间(V)到自身或另一个向量空间(W)的映射(T)
- 解释:Va 空间中的点(xa, ya)转换到 Vb 空间中, 结果是(xb, yb),过程就叫
线性变换
- 所用的转换工具——矩阵是
$$ \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} $$$\begin{bmatrix}A&M&0\\B&N&0\\C&D&1\end{bmatrix}$
转换过程是:$\begin{bmatrix}xa&ya&1\end{bmatrix}\times\begin{bmatrix}A&M&0\\B&N&0\\C&D&1\end{bmatrix}\\=\begin{bmatrix}Axa+Bya+C&Mxa+Nya+D&1\end{bmatrix}\\=\begin{bmatrix}xb&yb&1\end{bmatrix}$
- 为什么是矩阵
- 统一表示多种变换
- 多种变换整合:通过矩阵运算规则,可将多个变换矩阵组合成一个复合矩阵,一次性完成多种变换(如:平移+缩放)
- 便于操作与管理:使用矩阵表示变换,使不同类型变换在形式上统一,便于在程序中进行管理和操作
- 易于实现复合变换
- 矩阵乘法特性:如要对图形依次进行旋转 R、缩放S 和平移 T,可先将这些变换表示为矩阵 R、S、T,通过计算复合矩阵
$M = T \times S \times R$
(注意顺序),然后用矩阵 M 作用于图形的顶点坐标,就能一步完成所有变换
- 矩阵乘法特性:如要对图形依次进行旋转 R、缩放S 和平移 T,可先将这些变换表示为矩阵 R、S、T,通过计算复合矩阵
- 与线性代数理论紧密结合
- 理论支持:计算机图形学基于线性代数理论,矩阵是线性代数的核心工具
- 高效算法实现:线性代数为矩阵运算提供了丰富且成熟的算法,如矩阵求逆、行列式计算等
- 硬件加速支持
- 图形硬件优化:现代GPU对矩阵运算有专门优化
- 提高渲染效率:将空间变换用矩阵表示,利用 GPU 硬件加速,可在短时间内处理大量图形数据,实现复杂场景的实时渲染
- 统一表示多种变换
向量与矩阵,矩阵与矩阵的乘法
- 不满足交换率
$M_S = \begin{bmatrix}3&0&0\\0&3&0\\0&0&1\end{bmatrix} M_T = \begin{bmatrix}1&0&0\\0&1&0\\2&2&1\end{bmatrix}$
$M_{ST} = \begin{bmatrix}3&0&0\\0&3&0\\2&2&1\end{bmatrix} M_{TS} = \begin{bmatrix}3&0&0\\0&3&0\\6&6&1\end{bmatrix}$
$\therefore M_{ST} \neq M_{TS}$
平移、缩放、旋转(三维空间)
- 平移矩阵
$T = \begin{bmatrix}1&0&0&t_x\\0&1&0&t_y\\0&0&1&t_z\\0&0&0&1\end{bmatrix}$
变换计算过程为:$ \begin{bmatrix}1&0&0&t_x\\0&1&0&t_y\\0&0&1&t_z\\0&0&0&1\end{bmatrix} \begin{bmatrix}x\\y\\z\\1\end{bmatrix} = \begin{bmatrix}x+t_x\\y+t_y\\z+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}$
变换计算过程为:$S = \begin{bmatrix}s_x&0&0&0\\0&s_y&0&0\\0&0&s_z&0\\0&0&0&1\end{bmatrix} \begin{bmatrix}x\\y\\z\\1\end{bmatrix} = \begin{bmatrix}s_xx\\s_yy\\s_zz\\1\end{bmatrix}$
- 旋转(欧拉角)矩阵
单位矩阵、逆矩阵
- 单位矩阵:是一个方阵,即行数和列数相等。对于
$n$
阶单位矩阵,记为$I_n$
,其主对角线(从左上角到右下角的对角线)上的元素都为1,其余元素均为0。如:- 性质:
- 乘法特性:单位矩阵在矩阵乘法中类似于实数乘法中的数字。
- 可逆性:单位矩阵是可逆矩阵,且其逆矩阵就是它本身
- 性质:
- 逆矩阵:若存在矩阵
$B$
,使得$AB=BA=I$
,则$A$
可逆,$B$
为$A$
的逆矩阵- 作用: 撤销变换:
假设原始向量$v$
,变换矩阵为$A$
,经过变换后得到向量$v'$
,关系为$v' = Av$
若要从$v'$
恢复到原始向量$v$
,在等式两边同时左乘$A$
的逆矩阵$A^{-1}$
即可:$A^{-1}v' = A^{-1}(Av) = (A^{-1}A)v = Iv = v$
即:$A^{-1}v' = v$
- 作用: 撤销变换: