计算机图形学
从游戏到影视特效,屏幕上每一个 3D 场景都是线性代数的产物。本课程学过的线性变换、矩阵乘法、叉积与行列式,正是图形学的日常工具。
一、3D 变换:一切皆矩阵
物体的缩放、旋转、平移全部用矩阵表示:
- 矩阵乘法 = 变换的复合:先平移,再旋转,最后投影
- 多个变换可以预先合并成一个矩阵,一次乘法完成全部变换
二、齐次坐标:用 4×4 矩阵统一所有变换
齐次坐标:在三维坐标后面补一个分量 (通常取 ),用 4×4 矩阵统一表示变换(含平移)。
为什么需要它?因为平移 不是线性变换(原点会移动),无法写成 3×3 矩阵。引入齐次坐标后,平移也能写成矩阵乘法:
- 旋转、缩放、平移、错切全部统一为 4×4 矩阵
- 多个变换复合 = 4×4 矩阵相乘,仍然一次乘法完成
核心结论
齐次坐标让”变换”变成纯矩阵乘法:从此缩放、旋转、平移可以任意复合,这正是 GPU 能并行处理千万顶点的基础。
三、法向量与相机变换
- 法向量计算:两个不共线向量的叉积得到所在平面的法线(回忆叉积的几何意义:结果垂直于两个输入向量,长度等于平行四边形的面积)
- 相机变换:把世界坐标转换到相机坐标——本质是一次基变换(换坐标系)
四、渲染管线:一连串矩阵乘法
渲染管线的每一步都是一次矩阵运算:
| 阶段 | 线性代数操作 |
|---|---|
| 模型变换 | 把物体从模型坐标变到世界坐标 |
| 视图变换 | 把世界坐标变到相机坐标 |
| 投影变换 | 把 3D 坐标投影到 2D 屏幕(透视/正交) |
| 裁剪 | 判断顶点是否在视锥内 |
GPU 并行处理这些矩阵乘法——一个游戏画面每帧要执行数百万次。
总结
本文出现的符号
| 符号 | 类型 | 读音/说明 | 在本文中的含义 |
|---|---|---|---|
| 数学符号 | p | 顶点的位置向量 | |
| 数学符号 | p prime | 变换后的顶点位置 | |
| 数学符号 | M projection | 投影变换矩阵 | |
| 数学符号 | M rotation | 旋转变换矩阵 | |
| 数学符号 | M translation | 平移变换矩阵 | |
| 数学符号 | I 3 | 3×3 单位矩阵 | |
| 数学符号 | t | 平移向量 | |
| 数学符号 | w | 齐次坐标的附加分量(通常取 1) | |
| 数学符号 | cross | 叉积,用于求法向量 |
中英对照
| 中文术语 | 英文术语 | 音标 | 说明 |
|---|---|---|---|
| 计算机图形学 | computer graphics | /kəmˈpjuːtə ˈɡræfɪks/ | 用计算机生成和处理图像的科学 |
| 齐次坐标 | homogeneous coordinates | /ˌhɒməˈdʒiːniəs kəʊˈɔːdɪnəts/ | 补一个 分量,用 4×4 矩阵统一变换 |
| 渲染管线 | rendering pipeline | /ˈrendərɪŋ ˈpaɪplaɪn/ | 模型变换→视图变换→投影→裁剪的流程 |
| 模型变换 | model transform | /ˈmɒdl trænsˈfɔːm/ | 物体坐标到世界坐标 |
| 视图变换 | view transform | /vjuː trænsˈfɔːm/ | 世界坐标到相机坐标 |
| 投影变换 | projection transform | /prəˈdʒekʃən trænsˈfɔːm/ | 3D 坐标到 2D 屏幕 |
| 裁剪 | clipping | /ˈklɪpɪŋ/ | 剔除视锥外的几何 |
| 法向量 | normal vector | /ˈnɔːml ˈvektə/ | 垂直于平面的向量,用叉积计算 |
| 叉积 | cross product | /krɒs ˈprɒdʌkt/ | 结果垂直于两个输入向量的向量运算 |
| 相机变换 | camera transform | /ˈkæmərə trænsˈfɔːm/ | 把世界坐标换到相机坐标系 |
| GPU | graphics processing unit | /ˈɡræfɪks prəˈsesɪŋ ˈjuːnɪt/ | 专为并行矩阵运算设计的处理器 |
