GAMES101 课程 1、2 记录 & 作业 0 题解
最近开始补一直没学的图形学内容,发现部分内容在学 SLAM 的时候都见过,这种似曾相识的感觉还是挺有意思的。
Lecture 1 概论
课程大纲:
- Rasterization(光栅化):将三维空间几何形体投影到平面
- Curves and Meshes(几何、曲线与曲面)
- Ray Tracing(光线追踪)
- Animation / Simulation(动画与模拟)
课程主页:https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html 课程视频:https://www.bilibili.com/video/av90798049
图形学和计算机视觉的区别:
- 计算机视觉对图像进行猜测,并尝试理解其中的信息。
- 图形学将模型信息准确的表现为图形。

两者的区别
Lecture 2 线性代数
图形学前置知识:
- 【数学】线性代数 / 微积分 / 统计学
- 【物理】光学 / 力学
- 【杂项】信号处理 / 数值分析
向量
- 默认使用列向量,可以写作
- 使用结束点减去起始点得到
- 加减遵循平行四边形法则
- 用 表示向量长度
- 用 表示与 向量同方向的单位向量,$\hat{a} = \frac{\vec{a}}{|\vec{a}|}$
点乘
- 对于单位向量有
- 向量点乘满足交换律和分配律
- 在笛卡尔坐标系下
- 应用场景:
- 计算两个向量之间的夹角
- 计算向量在另一个向量上的投影
- 两个向量之间的垂直距离(减去投影向量)
- 描述两个向量的前后关系(如下图)

向量点乘的应用场景
叉乘
- 两个向量 叉乘得到一个与两个向量都垂直的向量
- 方向遵循右手定则,从 到 ,拇指方向为叉乘后的向量方向
- 大小为
- 在笛卡尔坐标系中
可以用反对称矩阵表示
- 不满足交换律:$\vec{a}\times\vec{b} = -\vec{b}\times\vec{a}$,满足分配律
- 应用场景:
- 建立三维直角坐标系(右手系)
- 通过右手法则判断向量左右关系(看最后叉乘向量方向)
- 判断点在多边形内:以三角形为例,判断点 在三角形 内即判断 结果向量是否同向(同号)

向量叉乘的应用场景
矩阵
- 矩阵乘法没有交换律(矩阵的左乘和右乘代表不同的变换关系,所以是不能换的),有结合律和分配律
- 应用:对图像矩阵进行旋转、平移、缩放、投影等
常见的变换性质(来自视觉 SLAM 十四讲): $R$ 是正交矩阵,$A$ 是可逆矩阵,$s$ 是缩放因子,$t$ 是平移,$a^T$ 是缩放,$v$ 是齐次时增加的量
| 变换名称 | 矩阵形式 | 自由度 | 不变性质 |
|---|---|---|---|
| 欧式变换 | 6 | 长度、夹角、体积 | |
| 相似变换 | 7 | 体积比 | |
| 仿射变换 | 12 | 平行性、体积比 | |
| 射影变换 | 15 | 接触平面的相交和相切 |
作业 0 题解
其实这个作业就是配一个环境,照着需要的去安装就行了,推荐 Windows 下环境用这个:
- 【WSL】Windows 的 Linux 子系统
- 【Xming】用来给 WSL 打开 GUI 界面的
- 【Eigen】矩阵运算的库
- 【GCC】C++ 编译器
- 【Cmake】编译工具
- 【Opencv 3.4】推荐这个版本,我上 2020 课程是用的这个