[简化版 GAMES 101] 计算机图形学03:线性代数下
- Bilibili同步视频
- 一、向量叉乘:突破平面的向量运算💫
-
- 1. 叉乘的核心定义
- 2. 叉乘的关键性质
- 3. 图形学中的核心应用🎯
-
- (1)构建三维右手坐标系
- (2)判定左右与内外部关系
- 二、矩阵运算:图形变换的通用工具🔧
-
- 1. 矩阵的基础认知
- 2. 矩阵乘法的核心规则
- 3. 矩阵运算的核心性质
- 4. 图形学中的特殊矩阵与操作
-
- (1)矩阵与向量相乘
- (2)矩阵转置
- (3)单位矩阵
- (4)矩阵的逆
- 三、向量运算的矩阵形式:数与形的统一📐
- 四、后续学习指引:从基础到进阶🚀
- 写在最后📝
Bilibili同步视频
[简化版 GAMES 101] 计算机图形学 03:线性代数下
✨ 图形学的世界里,线性代数是当之无愧的底层基石,而向量叉乘与矩阵运算更是其中的核心工具。从三维坐标系的构建到图形内外部的判定,从简单的向量变换到复杂的相机运动模拟,这些基础运算始终贯穿其中。今天,我们就从图形学应用视角,拆解向量叉乘与矩阵运算的定义、性质及实战价值,为后续的图形学学习筑牢根基。✨
一、向量叉乘:突破平面的向量运算💫
提到向量运算,点积是大家的老熟人,但叉乘作为另一种乘法运算,与点积有着本质区别——点积的结果是标量,而叉乘的结果是全新的向量,这一特性也让它成为处理三维空间问题的关键。
1. 叉乘的核心定义
叉乘的输入是两个三维向量
a
⃗
\\vec{a}
a
和
b
⃗
\\vec{b}
b
,输出的向量
c
⃗
=
a
⃗
×
b
⃗
\\vec{c}=\\vec{a}×\\vec{b}
c
=a
×b
有着明确的几何特征:
c
⃗
\\vec{c}
c
同时垂直于
a
⃗
\\vec{a}
a
和
b
⃗
\\vec{b}
b
,也就意味着
c
⃗
\\vec{c}
c
垂直于
a
⃗
\\vec{a}
a
和
b
⃗
\\vec{b}
b
所在的整个平面,是跳出原平面的三维向量。
从大小来看,
c
⃗
\\vec{c}
c
的模长为
∣
a
⃗
∣
×
∣
b
⃗
∣
×
s
i
n
θ
|\\vec{a}|×|\\vec{b}|×sinθ
∣a
∣×∣b
∣×sinθ (
θ
θ
θ 为
a
⃗
\\vec{a}
a
与
b
⃗
\\vec{b}
b
的夹角);而方向的判定,需要借助右手螺旋定则:伸出右手,四指沿
a
⃗
\\vec{a}
a
旋转至
b
⃗
\\vec{b}
b
的方向,大拇指所指的方向,就是
c
⃗
\\vec{c}
c
的方向。
2. 叉乘的关键性质
叉乘的运算性质是其应用的基础,几个核心特性需要牢牢掌握:
-
❌不满足交换律:
a
⃗
×
b
⃗
=
−
(
b
⃗
×
a
⃗
)
\\vec{a}×\\vec{b} = -(\\vec{b}×\\vec{a})
a
×b
=−(b
×a
) ,交换两个向量的顺序,结果向量方向完全相反,仅需添加负号即可转换。
-
⭕自身叉乘为0向量:任意向量与自身叉乘,因夹角
θ
=
0
°
θ=0°
θ=0° ,
s
i
n
θ
=
0
sinθ=0
sinθ=0 ,结果为长度为0的0向量(注意是向量,而非数字0)。
-
✅满足分配律与结合律:与常规运算一致,叉乘的分配律和结合律均成立,为复杂运算的化简提供了可能。
3. 图形学中的核心应用🎯
叉乘并非单纯的数学概念,在图形学中有着极强的实战意义,两大核心应用更是贯穿图形学基础开发:
(1)构建三维右手坐标系
这是叉乘最基础的应用,在三维空间中,若给定x轴和y轴的单位向量,通过
x
⃗
×
y
⃗
\\vec{x}×\\vec{y}
x
×y
即可直接得到z轴的单位向量,以此构建的坐标系即为右手坐标系(图形学教学中主流的坐标系形式)。同理,
y
⃗
×
z
⃗
=
x
⃗
\\vec{y}×\\vec{z}=\\vec{x}
y
×z
=x
,
z
⃗
×
x
⃗
=
y
⃗
\\vec{z}×\\vec{x}=\\vec{y}
z
×x
=y
,只需掌握右手螺旋定则,即可快速推导。
小贴士:部分图形学API(如OpenGL)采用左手坐标系,
x
⃗
×
y
⃗
=
−
z
⃗
\\vec{x}×\\vec{y}=-\\vec{z}
x
×y
=−z
,开发时需注意坐标系类型的区分。
(2)判定左右与内外部关系
这是叉乘在图形学中最常用的实战技巧,本质是利用叉乘结果的符号判断向量相对位置,核心适用于XY平面(z轴为叉乘结果方向):
-
左右判定:计算
a
⃗
×
b
⃗
\\vec{a}×\\vec{b}
a
×b
,若结果z分量为正,说明
b
⃗
\\vec{b}
b
在
a
⃗
\\vec{a}
a
的左侧;若z分量为负,说明
b
⃗
\\vec{b}
b
在
a
⃗
\\vec{a}
a
的右侧。
-
内外部判定:这是三角形光栅化、像素着色的基础!对于逆时针/顺时针排列的三角形ABC和待判定点P,分别计算
A
B
⃗
×
A
P
⃗
\\vec{AB}×\\vec{AP}
AB
×AP
、
B
C
⃗
×
B
P
⃗
\\vec{BC}×\\vec{BP}
BC
×BP
、
C
A
⃗
×
C
P
⃗
\\vec{CA}×\\vec{CP}
CA
×CP
,若三个结果的符号一致(均正或均负),则P在三角形内部;若存在符号不同的结果,则P在外部。
特殊情况:若叉乘结果为0,属于图形学中的corner case,可自行定义点在内部或外部,如光线擦过三角形边的相交判定,无统一标准。
二、矩阵运算:图形变换的通用工具🔧
如果说叉乘解决了三维空间的几何判定问题,那么矩阵运算就是图形学中实现所有变换的核心载体——平移、旋转、缩放、错切,所有图形的位置和形态变化,都可以通过矩阵运算来描述和实现。
1. 矩阵的基础认知
矩阵本质是按行和列排列的数值集合,用
m
×
n
m×n
m×n 表示其维度(m行n列)。矩阵的基础运算中,数乘(矩阵所有元素同乘一个数)较为简单,而矩阵乘法是核心,也是难点。
2. 矩阵乘法的核心规则
两个矩阵能进行乘法运算的前提:第一个矩阵的列数 = 第二个矩阵的行数(如
3
×
2
3×2
3×2 矩阵可与
2
×
4
2×4
2×4 矩阵相乘,中间的2为匹配维度)。
相乘后的结果矩阵维度为第一个矩阵的行数 × 第二个矩阵的列数(如
3
×
2
3×2
3×2 ×
2
×
4
2×4
2×4 =
3
×
4
3×4
3×4 )。
而结果矩阵中任意元素的计算,可借助向量点积快速记忆:求结果矩阵第i行第j列的元素,只需取第一个矩阵的第i行、第二个矩阵的第j列,将两个行/列向量做点积即可。
3. 矩阵运算的核心性质
与叉乘类似,矩阵乘法的性质直接决定了运算的逻辑,核心记住这几点:
-
❌不满足交换律:
A
×
B
≠
B
×
A
A×B ≠ B×A
A×B=B×A ,矩阵乘法的顺序直接决定结果,图形变换中顺序的改变会导致完全不同的变换效果。
-
✅满足结合律与分配律:
(
A
×
B
)
×
C
=
A
×
(
B
×
C
)
(A×B)×C = A×(B×C)
(A×B)×C=A×(B×C) ,结合律的存在让复杂变换的矩阵可以提前合并,提升计算效率;分配律
A
×
(
B
+
C
)
=
A
×
B
+
A
×
C
A×(B+C)=A×B+A×C
A×(B+C)=A×B+A×C 同样成立。
4. 图形学中的特殊矩阵与操作
在图形学的矩阵应用中,几个特殊矩阵和核心操作是必须掌握的,它们是实现图形变换的基础:
(1)矩阵与向量相乘
图形学中,向量始终被视为列向量(
m
×
1
m×1
m×1 矩阵),矩阵与向量相乘需遵循“矩阵在左,向量在右”,且矩阵的列数等于向量的行数。这一运算也是实现单个向量变换的核心,比如用
[
−
1
0
0
1
]
\\begin{bmatrix}-1&0\\\\0&1\\end{bmatrix}
[−1001] 乘以二维向量
[
x
,
y
]
T
[x, y]^T
[x,y]T ,可实现向量沿y轴的镜像变换,结果为
[
−
x
,
y
]
T
[-x, y]^T
[−x,y]T 。
(2)矩阵转置
将矩阵的行和列互换,即为转置操作(记为
A
T
A^T
AT ),如
3
×
2
3×2
3×2 矩阵转置后为
2
×
3
2×3
2×3 矩阵。核心性质:
(
A
×
B
)
T
=
B
T
×
A
T
(A×B)^T = B^T × A^T
(A×B)T=BT×AT ,乘积的转置需先调换矩阵顺序,再分别转置。
(3)单位矩阵
单位矩阵是对角线上元素均为1,其余为0的对角阵(如3×3单位矩阵
I
3
=
[
1
0
0
0
1
0
0
0
1
]
I_3=\\begin{bmatrix}1&0&0\\\\0&1&0\\\\0&0&1\\end{bmatrix}
I3=
100010001
),其核心作用是“无操作”:
I
×
A
=
A
I×A=A
I×A=A ,
A
×
I
=
A
A×I=A
A×I=A ,是矩阵求逆的基础。
(4)矩阵的逆
若矩阵
A
A
A 与矩阵
B
B
B 相乘的结果为单位矩阵,即
A
×
B
=
B
×
A
=
I
A×B=B×A=I
A×B=B×A=I ,则
A
A
A 与
B
B
B 互逆(记为
B
=
A
−
1
B=A^{-1}
B=A−1 )。逆矩阵是实现逆变换的关键,比如旋转后的图形可通过旋转矩阵的逆矩阵恢复原位置。核心性质:
(
A
×
B
)
−
1
=
B
−
1
×
A
−
1
(A×B)^{-1} = B^{-1} × A^{-1}
(A×B)−1=B−1×A−1 ,与转置性质类似,乘积的逆需先调换顺序再分别求逆。
三、向量运算的矩阵形式:数与形的统一📐
线性代数的魅力在于其统一性,向量的点乘和叉乘,都可以转化为矩阵运算的形式,这一转换让向量运算可以融入矩阵的统一框架,为复杂的图形学算法推导提供了便利。
点乘的矩阵形式:向量
a
⃗
\\vec{a}
a
和
b
⃗
\\vec{b}
b
的点积
a
⃗
⋅
b
⃗
\\vec{a}·\\vec{b}
a
⋅b
,可表示为
a
⃗
T
×
b
⃗
\\vec{a}^T × \\vec{b}
a
T×b
(
a
⃗
T
\\vec{a}^T
a
T 为
a
⃗
\\vec{a}
a
的转置行向量),行向量乘列向量的结果为标量,与点积结果一致。
叉乘的矩阵形式:向量
a
⃗
×
b
⃗
\\vec{a}×\\vec{b}
a
×b
可转化为对偶矩阵(记为
A
∗
A^*
A∗ )与
b
⃗
\\vec{b}
b
的相乘,即
A
∗
×
b
⃗
A^* × \\vec{b}
A∗×b
。只需将向量
a
⃗
\\vec{a}
a
按特定规则转化为对偶矩阵,再与列向量
b
⃗
\\vec{b}
b
相乘,结果即为叉乘的向量,这一形式在旋转矩阵的推导中有着重要作用。
四、后续学习指引:从基础到进阶🚀
本次分享的向量叉乘与矩阵运算,是图形学所需线性代数的核心基础,也是相对易懂的部分。后续的图形学学习,将基于这些基础向更复杂的方向推进:
二维/三维图形变换:深入讲解平移、旋转、缩放、错切的矩阵表示,掌握复杂图形的组合变换技巧;
齐次坐标:图形学中实现平移变换的关键,是突破普通线性变换的重要工具;
相机运动模拟:结合矩阵变换与向量运算,实现相机的移动、旋转等三维运动,是3D图形学的核心应用之一。
同时,为了让大家更好地上手后续的实战作业,助教也将搭建作业0的框架,帮助大家完成从理论到实践的过渡,为作业1的实战做好准备。
写在最后📝
线性代数作为图形学的“内功”,看似枯燥的公式和性质,实则是解锁所有图形学特效的钥匙。向量叉乘让我们能判定三维空间的几何关系,矩阵运算让我们能实现任意的图形变换,这些基础内容的掌握程度,直接决定了后续图形学学习的效率。
本次的内容只是图形学基础的起点,后续的学习虽会逐渐变难,但只要筑牢这些底层知识,理清运算的逻辑和应用场景,就能一步步解锁图形学的精彩世界。下一期,我们将深入图形变换的世界,从二维旋转开始,探索矩阵运算的实战魅力,敬请期待!
![[简化版 GAMES 101] 计算机图形学 03:线性代数下](2026-06-04iyg5ezatzl4.png)
💬 互动区:你在学习向量叉乘和矩阵运算时,遇到过哪些难点?欢迎在评论区留言交流,一起攻克图形学基础难关!


