数学基础(Godot Shader 前置)
本文只讲数学基础知识,用于理解 Godot Shader 学习前置内容;不涉及图形学推导与渲染细节。
1. 矩阵的基本概念(Shader——8.矩阵的基本概念)
概念
矩阵是按行和列排列的数表,记作 A∈Rm×nA∈Rm×n。
m×nm×n 表示 mm 行 nn 列。
元素通常记作 aijaij:第 ii 行第 jj 列。
关键性质
维度相同的矩阵才能做加减法。
矩阵与标量可做数乘。
一般情况下,AB≠BAAB=BA。
简短示例
A=[1234],B=[5678]A=[1324],B=[5768]
A+B=[681012]A+B=[610812]
2A=[2468]2A=[2648]
2. 矩阵乘法(Shader——9.矩阵乘法)
概念
若 A∈Rm×nA∈Rm×n、B∈Rn×pB∈Rn×p,则可定义乘积 C=AB∈Rm×pC=AB∈Rm×p。
元素计算:cij=∑k=1naikbkjcij=∑k=1naikbkj。
关键性质
乘法满足结合律:(AB)C=A(BC)(AB)C=A(BC)。
满足分配律:A(B+C)=AB+ACA(B+C)=AB+AC。
一般不满足交换律:AB≠BAAB=BA。
在 Shader 中的常见约定(重点)
通常更常见的是列向量写法:v′=Mvv′=Mv。
多个矩阵连乘时:v′=M3M2M1vv′=M3M2M1v。
对向量的实际作用顺序是 从右往左:先 M1M1,再 M2M2,最后 M3M3。
简短示例
A=[1234],B=[2012]A=[1324],B=[2102]
AB=[1⋅2+2⋅11⋅0+2⋅23⋅2+4⋅13⋅0+4⋅2]=[44108]AB=[1⋅2+2⋅13⋅2+4⋅11⋅0+2⋅23⋅0+4⋅2]=[41048]
3. 特殊矩阵1(Shader——10.特殊矩阵1)
概念
常见基础特殊矩阵:
零矩阵:所有元素都为 0。
单位矩阵 InIn:主对角线为 1,其余为 0。
对角矩阵:非对角元素为 0。
标量矩阵:λInλIn,即对角元素相同的对角矩阵。
关键性质
AIn=InA=AAIn=InA=A。
对角矩阵相乘仍为对角矩阵(同维度)。
零矩阵与任意可乘矩阵相乘得到零矩阵。
简短示例
I3=[100010001],D=[2000−10004]I3=100010001,D=2000−10004
4. 特殊矩阵(Shader——11.特殊矩阵)
概念
转置矩阵:ATAT,行列互换。
对称矩阵:AT=AAT=A。
反对称矩阵:AT=−AAT=−A。
可逆矩阵:存在 A−1A−1 使 AA−1=A−1A=IAA−1=A−1A=I。
关键性质
(AT)T=A(AT)T=A。
(AB)T=BTAT(AB)T=BTAT。
若 AA 可逆,则 (A−1)−1=A(A−1)−1=A。
(AB)−1=B−1A−1(AB)−1=B−1A−1(当 A,BA,B 都可逆)。
简短示例
A=[1225]⇒AT=AA=[1225]⇒AT=A
该矩阵是对称矩阵。
5. 特殊矩阵2:正交矩阵(Shader——12.特殊矩阵2 正交矩阵)
概念
若方阵 QQ 满足 QTQ=QQT=IQTQ=QQT=I,则称 QQ 为正交矩阵。
等价地,Q−1=QTQ−1=QT。
关键性质
正交矩阵的列向量(或行向量)两两正交且长度为 1。
正交矩阵行列式为 +1+1 或 −1−1。
正交变换保持向量内积与长度不变(纯数学性质)。
简短示例
Q=[0−110],QT=[01−10]Q=[01−10],QT=[0−110]
可验证 QTQ=IQTQ=I,因此 QQ 是正交矩阵。
6. 特殊矩阵2:行矩阵、列矩阵(Shader——13.特殊矩阵2 行矩阵、列矩阵)
概念
行矩阵:只有 1 行,形如 1×n1×n。
列矩阵:只有 1 列,形如 n×1n×1。
关键性质
列矩阵常用于表示向量。
行矩阵与列矩阵可做内积:(1×n)(n×1)→(1×1)(1×n)(n×1)→(1×1)。
列矩阵与行矩阵可做外积:(n×1)(1×n)→(n×n)(n×1)(1×n)→(n×n)。
简短示例
r=[123],c=[456]r=[123],c=456
内积:rc=1⋅4+2⋅5+3⋅6=32rc=1⋅4+2⋅5+3⋅6=32
外积:
cr=[456][123]=[48125101561218]cr=456[123]=45681012121518
学习建议(仅数学方向)
先掌握“维度检查”再做矩阵乘法。
重点记忆:AB≠BAAB=BA、(AB)T=BTAT(AB)T=BTAT、正交矩阵满足 Q−1=QTQ−1=QT。
在 Shader 学习中优先熟悉列向量写法与“右到左”的连乘作用顺序。
通过 2×2、3×3 小矩阵手算,建立稳定的矩阵直觉。