9.1 矩阵的行列式
在任意方阵中都存在一个标量,称作该方阵的行列式
9.1.1 线性运算法则
方阵 M 的行列式记作 |M| 或 “det M”。先从 2x2、3x3 矩阵开始

下面的示意图能帮助起记忆上面公式。将主对角线和反对角线上的元素各自相乘,然后用主对角线元素的积减去反对角线元素的积

3x3 阶矩阵的行列式

若将 3x3 阶矩阵的行解释为 3 个向量,那么矩阵的行列式等于这些向量的所谓“三元组织”

假设矩阵 M 有 r 行,c 列。记法 表示从 M 中除去第 i 行和第 j 列后剩下的矩阵。显然,该矩阵有 r-1 行,c-1列。矩阵 称作 M 的余子式。考虑 3x3 阶矩阵M:

对方阵 M,给定行、列元素的代数余子式等于相应余子式的有符号行列式
如上,用记法 表示 M 的第i行,第j列元素的代数余子式。注意余子式是一个矩阵,而代数余子式是一个标量。代数余子式计算式中的项 有以棋盘形式使矩阵的代数余子式每隔一个为负的效果:

余子式和代数余子式可以用来计算任意 n 维方阵的行列式,也可以用来计算矩阵的逆
(较复杂的部分先省略掉)
行列式的一些重要性质:

9.1.2 几何解释
2D 中,行列式等于以基向量为两边的平等四边形的有符号面积。在 7.2.2 节中,我们曾介绍过如何利用平行四边形形象化显示坐标空间的变换

3D 中,行列式等于以变换后的基向量为三边的平行六面体的有符号体积
行列式和矩阵变换导致的尺寸改变相关
- 行列式的绝对值和面积(2D)、体积(3D)的改变相关
- 行列式的符号说明了变换矩阵是否包含镜像或投影
矩阵的行列式还能对矩阵所代表的变换进行分类
- 若为零,那么矩阵包含投影
- 若为负,那么矩阵包含镜像
9.2 矩阵的逆
这个运算只能用于方阵
9.2.1 运算法则
方阵 M 的逆,记作 ,也是一个矩阵,当 M 与 相乘时,结果是单位矩阵
并非所有矩阵都有逆,若一个矩阵有逆,那么称它为可逆的或非奇异的,否则就称它为不可逆的或奇异的
奇异矩阵的行列式为零,非奇异的行列式不为零,所以检测行列式的值是判断矩阵是否可逆的有效方法
M 的“标准伴随矩阵”记作“adj M”,定义为 M 的代数余子式矩阵的转置矩阵。下面一个例子

M 的标准伴随矩阵是代数余子式矩阵的转置

有了它就能计算矩阵的逆


矩阵的逆的重要性质:

9.2.2 几何解释
矩阵的逆在几何上非常有用,它使得我们可以计算变换的“反向”变换——能“撤销”原变换的变换

9.3 正交矩阵
9.3.1 运算法则
若方阵 M 是正交的,则当且仅当 M 与它转置 的乘积等于单位矩阵
又因为 ,所以若矩阵是正交的,那么它的转置等于它的逆
旋转和镜像矩阵是正交的,想求它们的逆矩阵的话,直接使用它们的转置矩阵即可
9.3.2 几何解释
正交矩阵对我们非常有用,但我们怎样去检测矩阵是否正交呢?为了做到这一点,我们从正交矩阵的定义开始

得出 9 个等式,若 M 是正交的,它们必须全部成立

解释:
- 第一,当且仅当一个向量是单位向量时,它与它自身的点积结果是 1。因此,仅当 , , 是单位向量时,第1、4、9 式才能成立
- 第二,回忆 5.10.2 节,当且仅当两个向量互相垂直时,它们的点积为零。因此,仅当, , 互相垂直时其他等式才成立
所以,若一个矩阵是正交的,它必须满足下列条件:
- 矩阵每一行都是单位向量
- 矩阵的所有行互相垂直
对矩阵的列也能得到类似的条件。这可推出结论:若 M 是正交的,则 也是正交的
计算逆矩阵时,仅在预先知道矩阵是正交的情况下才能利用它的优点。否则先检查正交性花的时间,跟直接求逆是差不多的。若矩阵不是正交的,那么这种检查完全是浪费时间(不如直接就求逆)
线性代数中,若一组向量互相垂直,这组向量就被认为是正交基,它不要求向量都是单位向量。若它们都是单位向量,则称它们为标准正交基
- 正交矩阵的行或列向量都是指标准正交基向量
- 由一组正交向量构造的矩阵并不一定是正交矩阵
9.3.3 矩阵正交化
有时可能会遇到一些略微违反了正交性的矩阵,需要将它们正交化,得到尽可能跟原矩阵相同的正交矩阵
构造一组正交基向量的标准算法是施密特正交化。它的基本思想是,对每一行,从中减去它平行于已处理过的行的部分,最后得到垂直向量

结果 , 和 互相垂直了,它们是一组正交基。它们不一定是单位向量,构造正交矩阵需要使用标准正交基,所以必须标准化这些向量。若一开始就进行标准化,而不是在第 2 步中做,就能避免所有除法了
(改进算法略)
9.4 4x4 齐次矩阵
4D 向量和 4x4 矩阵不过是对 3D 运算的一种方便记法而已
9.4.1 4D 齐次空间
我们先看一下 2D 中的齐次坐标,它的形式是 (x, y, w)。想象 3D 中 w=1 处的标准 2D 平面,实际的 2D 点 (x, y) 用齐次坐标表示为 (x, y, 1),对于那些不在 w=1 平面上的点,则将它们投影到 w=1 平面上。所以齐次坐标 (x, y, w) 映射的实际 2D 点为 (x/w, y/w)
下图中,齐次坐标 (2.5, 2.0, 2.5) 映射的实际点为 (1.0, 0.8)

4D 坐标的基本思想相同。实际的 3D 点能被认为是 4D 中 w=1 “平面”上。4D 点的形式为 (x, y, z, w),将 4D 点投影到这个“平面”上得到相应实际 3D 点 (x/w, y/w, z/w)
9.4.2 4x4 平移矩阵
3x3 变换矩阵表示的是线性变换,但不包含平移。4x4 矩阵恰好提供了一种数学上的“技巧”,使我们能做到
设 R 为旋转矩阵,T 为“平移”矩阵

将向量 v 先旋转再平移,新的向量 计算如下(用的是行向量)
两个矩阵可连接成一个
观察 M 的内容

M 的上边 3x3 部分是旋转部分,最下一行是平移部分,最右一列是 。这就能将任意 4x4 矩阵分解为线性变换部分和平移部分。将平移向量记作 t,则 M 可简写为
这就是我们要使用 4x4 矩阵的原因之一——它能包含平移信息
接下来看 w=0 所表示的“无穷远点”。它乘以一个由 3x3 变换矩阵扩展成的 4x4 矩阵(不包含平移)

结果仍然是一个无穷远点,形式为 [x', y', z', 0]
那再看看无穷远点乘以一个包含平移的 4x4 矩阵

注意结果跟之前的一样的。换句话说,4D 向量中的 w 分量能够“开关”4x4 矩阵的平移部分。这个现象非常有用,因为有些向量代表“位置”,应用平移,而有些向量只代表“方向”,不应该平移。4D 向量中的 w 分量就可以区分它们,这是我们使用 4D 向量的原因
9.4.3 一般仿射变换
经 4x4 武装后,我们可以构造包含平移在内的一般仿射变换矩阵了。如
- 绕不通过原点的轴旋转
- 沿不穿过原点的平面缩放
- 沿不穿过原点的平面镜象
- 向不穿过原点的平面正交投影
基本思想是将变换的“中心点”平移到原点,接着进行线性变换,然后再将“中心点”平移回原来的位置。开始使用平移矩阵 T 将点 P 移到原点,接着使用 R 进行线性变换,最后使用 移回原位

可以看出,仿射变换中增加的平移部分仅仅改变了 4x4 矩阵的最后一行,并没有影响到上面所包含的线性变换的 3x3 部分
9.4.4 透视投影
我们已学过一种投影——平行投影。将 3D 空间投影到 2D 平面上,该平面称作投影平面,使用的是正交投影。正交投影也被称作平行投影,因为投影线都是平行的
3D 中的透视投影仍然是投影到 2D 平面上,但是投影线不再平行,它们相交于一点,这个点称作投影中心

因投影中心在投影平面前,投影线到达平面前已经相交,所以投影平面上的图像是翻转的。当物体远离投影中心时,正交投影保持不变,但透视投影变小了。这是一种非常重要的视觉现象,称作:透视缩略

9.4.5 小孔成像
(小孔成像原理部分略)
计算出任意点 p 通过小孔投影到投影平面上的坐标 p'

所有投影点的 z 值都是相同的: -d。因此,点 p 通过原点向平面 z=-d 投影的结果

在实际应用中,负号会带来不必要的复杂性,所以将投影平面移到投影中心的前面

虽然在实际的小孔成像中这是不可能实现的,但在计算机数学世界中则没有问题,烦人的负号消失了

9.4.6 使用 4x4 矩阵进行透视投影
这是我们使用 4D 向量和 4x4 矩阵的另一个原因——实现透视投影

这就得到了一个 4x4 的投影矩阵。需要注意:
