欢迎光临
我们一直在努力

[简化版 GAMES 101] 计算机图形学 03:线性代数下

[简化版 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°

    θ=

    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=A1 )。逆矩阵是实现逆变换的关键,比如旋转后的图形可通过旋转矩阵的逆矩阵恢复原位置。核心性质:

(

A

×

B

)

1

=

B

1

×

A

1

(A×B)^{-1} = B^{-1} × A^{-1}

(A×B)1=B1×A1 ,与转置性质类似,乘积的逆需先调换顺序再分别求逆。

三、向量运算的矩阵形式:数与形的统一📐

线性代数的魅力在于其统一性,向量的点乘和叉乘,都可以转化为矩阵运算的形式,这一转换让向量运算可以融入矩阵的统一框架,为复杂的图形学算法推导提供了便利。

  • 点乘的矩阵形式:向量

    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:线性代数下

    💬 互动区:你在学习向量叉乘和矩阵运算时,遇到过哪些难点?欢迎在评论区留言交流,一起攻克图形学基础难关!

    赞(0)
    未经允许不得转载:171主机测评 » [简化版 GAMES 101] 计算机图形学 03:线性代数下
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址