GAMES103课程笔记02-Math Background
这个系列是GAMES103:基于物理的计算机动画入门(GAMES 103: Intro to Physics Based Animation)的同步课程笔记。本课程是计算机动画的入门课程,着重介绍各种基于物理的动画仿真模拟技术。本节课主要复习相关的数学知识。
Vector
Definition
对物理系统的模拟离不开线性代数的相关知识,因此我们从最基础的向量(vector)开始复习。在图形学中向量一般默认是指三维向量,它表示空间点
在大多数的教材和论文中都会默认我们的坐标系是右手系,但需要注意的是在某些库和引擎中可能会使用左手系(如Unity、DirectX等)。

Addition and Subtraction
向量的基本运算是加法和减法,此时我们只需要将对应位置坐标相加减即可:
从几何的角度上看,向量的加减实际上就是平行四边形法则:

我们可以利用向量的加减法来表示点的运动。假设空间中点在0时刻的位置为
类似地,我们也可以利用向量加减法来表示直线。经过点
当

Vector Norm
我们可以通过范数(norm)来度量向量的大小,常用的范数包括:
- 2-norm:
- 1-norm:
- p-norm:
- infinity norm:
通过范数我们就可以度量

Dot Product
点乘运算(dot product)或者说内积运算(inner product)将两个向量映射成标量:
从几何上看向量之间的点乘等价于它们的模长之积乘以它们夹角的余弦:

点乘运算的常用性质如下:
- 交换律:
- 结合律:
- 模长:
- 对于非零向量
和 ,
通过点乘运算我们可以完成很多相对复杂的任务。假设我们想要计算
因此投影坐标为:

类似地,假设平面的法向为
若

最后一个例子,我们可以利用点乘来判断
整理方程可以得到关于时间
因此我们就可以通过这个方程根的数目来判断

Cross Product
叉乘运算(cross product)也是一种常用的向量乘法,它定义为:
从几何上看,

叉乘运算的常用性质如下:
- 垂直性:
- 反交换性:
- 结合律:
- 对于非零向量
和 ,
叉乘运算的一个重要应用是可以计算三角形的面积和法向。对于点
因此三角形的法向为:
三角形的面积则可以表示为:
不过需要注意的是法向的朝向与三角形三个顶点的顺序有关,因此三角形顶点的顺序也称为拓扑顺序。

类似地,我们可以利用叉乘来判断共面


当
我们可以使用面积
上式中

类似地,我们可以利用叉乘来计算四面体的相关几何量:

不过需要注意的是按上式计算的体积仍然是带符号的,当

类似于三角形的重心坐标,我们同样可以利用体积来定义四面体的重心坐标:

最后来讨论空间射线与三角形求交。我们可以利用
整理得到:
按上式求解得到的

Matrix
Definition
接下来我们对矩阵(matrix)进行复习,我们把列向量并排放到一起就得到了矩阵。

Multiplication
矩阵的乘法就不再赘述了,这里主要复习一下矩阵乘法的性质:
- 矩阵乘法没有交换律:
- 矩阵乘法的转置:
- 矩阵(向量)乘以单位阵等于自身:
- 矩阵的逆:
, - 不是所有的矩阵都存在逆阵
Orthogonality
由正交的单位向量构成的矩阵称为正交阵(orthogonal matrix):
容易验证正交阵的转置与自身相乘即为单位阵,或者说正交阵的逆等于自身的转置:
Matrix Transformation
矩阵在图形学中的一个重要应用是用来表示物体位置和形状的变换。比如说物体的旋转就可以用一个正交阵来表示,假设初始状态物体的三个正方向与世界坐标系相同,旋转后的正方向为

类似地,对物体进行伸缩则可以利用一个对角阵来表示,对角阵上每个元素表示在相应轴上伸缩的比例:

Singular Value Decomposition
对任意矩阵
其中
我们可以把矩阵

与之类似的还有特征值分解(eigenvalue decomposition),对称矩阵
其中
需要说明的是严格来说特征值分解对于非对称的矩阵仍然成立,但此时的特征值可能是复数。
Symmetric Positive Definiteness
我们称矩阵
称矩阵
正定对称矩阵的特征值都大于0,这里简单进行一下证明:
由于
实际上特征值都大于0是对称正定矩阵的充要条件,即我们可以利用特征值分解来判断矩阵是否是正定矩阵。但大多数情况下对矩阵进行特征值分解会有较高的计算复杂度,因此我们需要一些简化的方法来进行判断。实践中较为常用的方式是使用对角元素来进行判断,我们称矩阵
当一个矩阵是对角占优矩阵时它一定是正定的。但需要注意的是存在非对角占优的正定矩阵。
正定矩阵的一个重要性质是当矩阵
一定是半正定的。这里简单证明一下:
Linear Solver
矩阵的一个重要应用是求解线性方程组:
假设矩阵
直接解法是指对矩阵

在实践中人们发现当矩阵
另一种常用的方程解法是迭代解法,我们可以通过建立迭代格式来求解线性方程组:
其中
上式说明当
除此之外,在使用迭代法求解时还需要计算逆阵
- Jacobi Method:
- Gauss-Seidel Method:
和直接法相比,迭代法的优势在于比较便于实现、容易并行而且往往很快就能收敛到近似解。相对地,使用迭代法时需要注意迭代的收敛条件而且可能需要比较长的时间才能得到精确解。
Tensor Calculus
本节课最后复习了向量和矩阵的微积分。
1st-Order Derivatives
对于标量函数
梯度

对于向量函数
其它常用的形式包括散度(divergence)和旋度(curl):
2nd-Order Derivatives
对于标量函数
上式称为
另一个常用的二阶微分算子是Laplacian算子,它的定义为:
Spring System
利用这些微分算子我们可以计算出很多物理量。假设有一个一端固定的弹簧系统,弹簧的初始长度为

当弹簧另一端的位置为
弹簧的内力可以通过对能量
系统的切向刚度(tangent stiffness)则可以通过对能量
进一步我们可以考虑两端都是自由端的弹簧系统,此时弹簧的伸长量为:

系统的能量可以表示为:
在这种情况下弹簧系统的能量由
同样地,系统的刚度为: