2.线性代数复习

2.线性代数复习


2.1 概述

计算机图形学涉及数学、物理、信号处理和数值分析,其中线性代数是描述空间位置、方向与几何变换的基础。

主要涉及两类对象:向量(Vector)和矩阵(Matrix)。向量的点积、叉积负责处理方向和空间关系;矩阵则常用于描述旋转、缩放、错切等几何变换。


2.2 向量(Vector)

向量的表示

向量具有方向和长度,没有固定的起始位置。两个向量只要方向相同、长度相等,即使位置不同,仍然是同一个向量。

向量通常表示为 $\vec a$ 或粗体字母。给定起点 $A$ 和终点 $B$,对应向量为:

$$
\overrightarrow{AB}=B-A
$$

向量归一化

向量的长度称为模(Magnitude),记作 $|\vec a|$。长度为 $1$ 的向量称为单位向量(Unit Vector)。

将非零向量除以自身长度,即可得到同方向的单位向量,这一过程称为归一化(Normalization):

$$
\hat a=\frac{\vec a}{|\vec a|}
$$

单位向量只保留方向,适合表示光照方向、表面法线等不需要长度的信息。

向量加法

向量相加有两种直观的几何表示:

  • 平行四边形法则:将两个向量放在同一起点,平行四边形的对角线就是它们的和。
  • 三角形法则:将两个向量首尾相接,从第一个向量的起点指向最后一个向量的终点,就是相加的结果。

笛卡尔坐标系(Cartesian Coordinates)

以两个相互垂直的单位向量 $\vec X$、$\vec Y$ 为基,可以用两个坐标表示二维向量。例如:

$$
\vec A=4\vec X+3\vec Y=\begin{pmatrix}4\3\end{pmatrix}
$$

图形学中通常使用列向量,转置后得到行向量。对于 $\vec A=(x,y)^T$,其长度为:

$$
|\vec A|=\sqrt{x^2+y^2}
$$

在同一坐标系下,向量相加只需将对应分量相加。


2.3 向量点积(Dot Product)

定义与计算

点积的结果是一个标量。设两个向量之间的夹角为 $\theta$:

$$
\vec a\cdot\vec b=|\vec a||\vec b|\cos\theta
$$

因此,可以根据点积计算两个非零向量的夹角:

$$
\cos\theta=\frac{\vec a\cdot\vec b}{|\vec a||\vec b|}
$$

如果两者都是单位向量,点积就等于夹角的余弦值。


点积满足交换律和分配律,例如 $\vec a\cdot\vec b=\vec b\cdot\vec a$。

在笛卡尔坐标系中,只需对应分量相乘,再将结果相加。以三维向量为例:

$$
\vec a\cdot\vec b=x_ax_b+y_ay_b+z_az_b
$$

图形学中点积的作用

投影(Projection)

将 $\vec b$ 投影到 $\vec a$ 的方向上,投影向量与 $\vec a$ 平行。设 $\hat a$ 为 $\vec a$ 的单位向量:

$$
\vec b_{\mathrm{proj}}=(\vec b\cdot\hat a)\hat a
$$

剩余的垂直分量为:

$$
\vec b_{\mathrm{perp}}=\vec b-\vec b_{\mathrm{proj}}
$$

通过点积,可以将一个向量分解为沿指定方向和垂直该方向的两个分量。

点积的应用

  • 计算夹角:例如光照方向与物体表面法线之间的夹角。
  • 计算投影:将向量分解到指定方向。
  • 判断方向:两个非零向量点积大于 $0$ 表示夹角为锐角,小于 $0$ 表示夹角为钝角,等于 $0$ 表示相互垂直。

对于两个单位向量,点积的结果在 $[-1,1]$ 之间。越接近 $1$,方向越一致;越接近 $-1$,方向越相反。


2.4 向量叉积(Cross Product)

性质

叉积的结果是一个向量,同时垂直于参与运算的两个向量,其方向由右手螺旋定则确定。

$$
|\vec a\times\vec b|=|\vec a||\vec b|\sin\theta
$$

性质

叉积具有以下性质:

$$
\vec a\times\vec b=-\vec b\times\vec a
$$

$$
\vec a\times\vec a=\vec 0
$$

交换叉积的两个向量,结果方向就会反转。 对右手坐标系中的单位基向量,有 $\vec X\times\vec Y=\vec Z$。

在笛卡尔坐标系

在笛卡尔坐标系中,叉积可以直接计算为:

$$
\vec a\times\vec b=
\begin{pmatrix}
y_az_b-z_ay_b\
z_ax_b-x_az_b\
x_ay_b-y_ax_b
\end{pmatrix}
$$

图形学中的叉积


对于位于 $xy$ 平面的两个向量,可以通过叉积的 $z$ 分量判断旋转方向:

  • $\left(\vec a\times\vec b\right)_z>0$:从 $\vec a$ 转向 $\vec b$ 为逆时针方向。
  • $\left(\vec a\times\vec b\right)_z<0$:从 $\vec a$ 转向 $\vec b$ 为顺时针方向。

这一性质可以判断点是否位于三角形内部。若三角形顶点 $A\rightarrow B\rightarrow C$ 按逆时针排列,则检查:

$$
\begin{aligned}
(\overrightarrow{AB}\times\overrightarrow{AP})_z&\ge 0\
(\overrightarrow{BC}\times\overrightarrow{BP})_z&\ge 0\
(\overrightarrow{CA}\times\overrightarrow{CP})_z&\ge 0
\end{aligned}
$$

三个条件同时满足,点 $P$ 位于三角形内部或边界上;如果顶点按顺时针排列,判断符号相反。

边界点算内部还是外部,需要统一约定。 这个判断是三角形光栅化的基础。


2.5 标准正交基与坐标系

三维空间中,三个长度为 $1$ 且两两垂直的向量,可以构成一组标准正交基(Orthonormal Basis)。

对于右手坐标系中的三个基向量 $\vec u$、$\vec v$、$\vec w$:

$$
|\vec u|=|\vec v|=|\vec w|=1
$$

$$
\vec u\cdot\vec v=\vec v\cdot\vec w=\vec u\cdot\vec w=0,
\qquad \vec w=\vec u\times\vec v
$$

利用点积求投影,任意向量 $\vec p$ 都可以分解到这三个方向上:

$$
\vec p=(\vec p\cdot\vec u)\vec u
+(\vec p\cdot\vec v)\vec v
+(\vec p\cdot\vec w)\vec w
$$

一个场景中可能同时存在世界坐标系、物体局部坐标系等多个坐标系。它们之间的转换需要用到矩阵。


2.6 矩阵(Matrix)

什么是矩阵


矩阵乘法


矩阵是按行和列排列的数字集合。对于矩阵乘法,左侧矩阵的列数必须等于右侧矩阵的行数:

$$
A_{M\times N}B_{N\times P}=C_{M\times P}
$$

结果中第 $i$ 行、第 $j$ 列的元素,等于左侧矩阵第 $i$ 行与右侧矩阵第 $j$ 列的点积。

例如,图中结果矩阵第 $2$ 行、第 $4$ 列的值为:$5\times4+2\times3=26$。

矩阵乘法通常不满足交换律,但满足结合律和分配律:

$$
AB\ne BA,\qquad (AB)C=A(BC)
$$

因此,组合多个几何变换时,矩阵相乘的顺序不能随意交换。

矩阵与向量相乘

将向量看成列矩阵,就可以使用矩阵乘法对它进行变换。例如,二维平面关于 $y$ 轴的镜像变换:

$$
\begin{pmatrix}-1&0\0&1\end{pmatrix}
\begin{pmatrix}x\y\end{pmatrix}
=\begin{pmatrix}-x\y\end{pmatrix}
$$

转置、单位矩阵与逆矩阵


  • 转置(Transpose):交换矩阵的行与列,记为 $A^T$。
  • 单位矩阵(Identity Matrix):主对角线元素为 $1$,其余为 $0$,记为 $I$。与合适维度的矩阵相乘不会改变原矩阵。
  • 逆矩阵(Inverse Matrix):对于可逆矩阵 $A$,其逆矩阵记为 $A^{-1}$,满足 $AA^{-1}=A^{-1}A=I$。

两个常用性质:

$$
(AB)^T=B^TA^T,
\qquad
(AB)^{-1}=B^{-1}A^{-1}
$$

其中逆矩阵等式要求 $A$、$B$ 均可逆。转置与求逆应用于矩阵乘积时,都需要反转矩阵的顺序。

点积与叉积的矩阵形式

列向量的点积可以写成矩阵乘法:

$$
\vec a\cdot\vec b=\vec a^T\vec b
$$

叉积也可以写成矩阵形式。将 $\vec a=(x_a,y_a,z_a)^T$ 组织为反对称矩阵 $A^*$:

$$
A^*=\begin{pmatrix}
0&-z_a&y_a\
z_a&0&-x_a\
-y_a&x_a&0
\end{pmatrix},
\qquad \vec a\times\vec b=A^*\vec b
$$

课件将 $A^*$ 称为 Dual Matrix。这一形式在后续旋转变换的推导中还会用到。


2.7 总结

  • 点积得到标量,主要用于计算夹角、投影,以及判断两个方向之间的关系。
  • 叉积得到垂直于两个输入向量的新向量,可以判断左右关系,以及点是否位于三角形内部。
  • 标准正交基通过互相垂直的单位向量建立坐标系,利用点积将向量分解到不同坐标轴上。
  • 矩阵用统一的数学形式描述几何变换;矩阵乘法的顺序不能随意交换。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

赏

×

喜欢就点赞,疼爱就打赏