前言
本文是关于GAMES101第三课 “Transformation”(变换)的学习笔记
一、变换的种类
-
Modeling(模型)
(1)Translation(平移)
(2)Rotation(旋转)
(3)Scaling(缩放) -
Viewing(视图)
(1)Projecton(投影)—— 3D->2D
二、矩阵基本表示
2.1Scale 缩放
2.1.1均匀缩放
2.1.2非均匀缩放(Non-Uniform)
2.2 Reflection 反射(对称)
2.3 Shear 切变
重点在找到前后的对应关系
2.4 Rotate (旋转)
以(0,0)为中心点,默认逆时针方向旋转
如果图形所有点都同时旋转符合公式,则特殊点一定符合。
2.5 Linear Transforms 线性变换
相同维度之下
三、齐次坐标 Homogenous Coordinates
3.1 Translation 平移
无法直接写成矩阵相乘的形式,操作比较麻烦
解决方式:
齐次坐标:一种用N+1个数来表示N维坐标系的方式
- 如果是2D空间的点,则加一个维度“1”
如说是两个点相加的结果,则每一个维度都除以二,增加的维度还是“1” (意味着两点的中点) - 如果是2D空间的向量,则加一个维度“0” (向量具有平移不变性)
3.2 仿射变换 Affine Transformations
3.2.1 定义
- 仿射变换,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。
3.2.2 二维变换
-
缩放
-
旋转
-
平移
四、其它变换
4.1 逆变换 Inverse Transform
4.2 组合变换 Composite Transform
变换顺序很重要!!!
因为矩阵乘法不满足交换律,但可以用结合律
- 实际中很复杂的变换,通过矩阵乘法的结合,最后只呈现为较为简单的矩阵形式
4.3 分解变换 Decomposing Complex Transform
图形绕任意点旋转,可分解为先平移到原点,绕原点旋转后,平移回去
则可以表示为以下方式:
注意是从右到左的顺序!!!
五、三维变换
- 再次使用齐次坐标进行三维空间的仿射变换:
- 矩阵形式表示: