矩阵是 3D 数学的重要基础。它主要用来描述两个坐标系统间的关系,通过定义一种运算而将一个坐标系中的向量转换到另一个坐标系中。
7.1 矩阵——数学定义
7.1.1 矩阵的维度和记法
矩阵的维度被定义为它包含了多少行和多少列。一个 矩阵有 r 行 c 列。下面是一个 矩阵的例子
需要引用矩阵的分量时,采用下标法
矩阵的下标从 1 开始。如 读作 m 一二,是 1 行 2 列的元素
7.1.2 方阵
-
行列数相同的矩阵称作方阵
-
方阵的对角线元素就是行号和列号相同的元素。如上面矩阵 M 中的 , 和 。其他元素均为非对角线元素
-
若所有非对角线元素都为 0,这种矩阵为对角矩阵

-
单位矩阵是一种特殊的对角矩阵。 维单位矩阵记作 ,是 矩阵,对角线元素均为 1,其他元素均为 0
-
单位矩阵是矩阵的乘法单位元。任意一个矩阵乘以单位矩阵,都将得到原矩阵
7.1.3 向量作为矩阵使用
一个 n 维向量能被当作 矩阵或 矩阵。前者称作行向量,后者称作列向量
7.1.4 转置
矩阵 M 的转置记作 ,它的列由 M 的行组成,,即沿着矩阵对角线翻折

对于向量来说,转置将使行向量和列向量转换成对方

7.1.5 标量和矩阵的乘法
结果是一个和 M 维数相同的矩阵,每个分量与标量相乘

7.1.6 矩阵乘法
A()、B() 两矩阵可以相乘的条件
- (A 的列数) 等于 (B 的行数)
结果是行数为 列数为 的矩阵

将 AB 记为 C,C 的任意元素 等于 A 的第 i 行向量与 B 的第 j 列向量点乘的结果

对于在几何中的应用,我们特别关注方阵的相乘——特别是 2x2 矩阵和 3x3 矩阵
注意:
-
任意矩阵 M 乘以方阵 S(满足相乘前提),无论是左乘还是右乘,都将得到与原矩阵 M 大小相同的矩阵
-
矩阵乘法不满足交换律。
-
矩阵乘法满足结合律。
-
矩阵乘法也满足与标量或向量的结合律
-
矩阵积的转置相当于先转置矩阵然后以相反的顺序乘。
7.1.7 向量与矩阵的乘法
因向量可被当作一行或一列的矩阵,所以能与矩阵相乘

- 行向量不能右乘矩阵,列向量不能左乘矩阵
- 矩阵与向量的乘法满足对向量加法的分配律。
7.1.8 行向量与列向量
看看行向量左乘矩阵与列向量右乘矩阵的结果

各分量的值是完全不同的!!
本书中仅在行向量与列向量区别不那么重要时使用列向量,否则使用行向量
有多条理由支持我们使用行向量而不是列向量:
- 在文字中的形式会更好一些
- 当讨论怎样用矩阵乘法实现坐标系转换时,向量左乘矩阵的形式更方便。如用矩阵 ABC 转换向量 v,用行向量记法记作 vABC。若用列向量的话,则会记作 CBAv
- DirectX 使用的是行向量
7.2 矩阵——几何解释
7.2.1 矩阵是怎样变换向量的
有向量 v=[x, y, z] ,分别将 p,g 和 r 定义为指向 +x,+y 和 +z 方向的单位向量
现在向量 v 就被表示成向量 p,q,r 的线性变换了。它们称作基向量,以它们为行构建一个 矩阵 M
用一个向量乘以该矩阵

这和前面计算转换后的 v 的等式相同。我们发现关键点是:
如果把矩阵的行解释为坐标系的基向量,那么乘以该矩阵就相当于执行了一次坐标转换。若有 aM=b,我们就可以说,M将a转换到 b
从这一点看,术语“转换”和“乘法”是等价的
7.2.2 矩阵的形式
矩阵表达坐标转换,当我们观察矩阵时,其实是在观察转换,观察新的坐标系。但这个转换看起来像什么?特定的 3D 转换和矩阵之间有什么关系?
先看一下基向量乘以任意矩阵 M 时的情况

关键发现:
矩阵的每一行都能解释为转换后的基向量
这个强有力的概念有两条重要性质:
- 有了一种简单的方法来形象化解释矩阵所代表的变换
- 有了反向建立矩阵的可能
7.2.3 总结
本节主要概念:
- 方阵的行能被解释为坐标系的基向量
- 为了将向量从原坐标系变换到新坐标系,用它乘以一个矩阵
- 从原坐标系到这些基向量定义的新坐标系的变换是一种线性变换
- 零向量乘以任何矩阵仍然得到零向量
- 可以通过想象变换后的坐标系的基向量来想象矩阵