Game101课程笔记_lecture03_transformation变换

1 为什么要学习变换

1 modeling 模型变换

translation 平移
rotation 旋转
Scaling 缩放

2 view 变换

projection 投影变换
Game101课程笔记_lecture03_transformation变换

2 2D变换

1 scale 缩放变换

Game101课程笔记_lecture03_transformation变换
Game101课程笔记_lecture03_transformation变换

2 Refection Matrix 镜像变换

Game101课程笔记_lecture03_transformation变换

3 Shear

Game101课程笔记_lecture03_transformation变换

4 rotation

任何时候只要不说其他信息,就是绕着原点(0,0)进行旋转。
不说旋转方向,默认是逆时针方向。
再复杂的变换也是要找到一一对应的关系。旋转之前是什么样子的,旋转之后是什么样子的,找出两个之间的关系。
Game101课程笔记_lecture03_transformation变换
推导:
对于任意的点要满足这个关系,那么对于特殊的点也满足这个关系,
其中(1,0)这个点就是特殊的点。如下图:
(1,0)旋转后成为(sin,cos),利用这个信息代入下面的式子,可以求出A=cos,C=sin,我们再考虑另外一个特殊的点就可以求出B,D,用(0,1)来计算。
所以这个公式推到的逻辑就是:任何一个点都得满足这个旋转公式,那么对于特殊的点肯定也满足这个旋转公式。
Game101课程笔记_lecture03_transformation变换

5 线性变换

可以用一个矩阵乘以输入的坐标,可以得到输出的坐标的形式,这就是线性变换。

Game101课程笔记_lecture03_transformation变换

3 齐次坐标

1 为啥要引入齐次坐标呢

因为平移变换特殊,不能用矩阵的形式来表示。
平移变换不属于线性变换。
Game101课程笔记_lecture03_transformation变换
但是我们不希望把平移变换作为一个特殊的的例子来做处理。
齐次坐标就是来解决这个问题的。齐次坐标希望将所有的变换都统一成矩阵的形式来表示变换。
trade off 权衡

2 齐次坐标概念

对于任何一个点增加一个坐标1,
对于任何一个向量增加一个坐标0,
通过增加一个数,让平移变换也写成一个矩阵乘以一个向量的形式。
Game101课程笔记_lecture03_transformation变换
向量具有平移不变性,增加坐标0目的是为了让它经过平移变换后,其方向不变。
更深层次的理解:
向量+向量 =向量,点-点=向量
point+向量=点,点+点=没有意义。
但是在齐次坐标系中,点+点就是这两个点的中点;
增加0或者1,就可以让其再计算操作层次上也满足。
在齐次坐标中:
(x,y,w)是一个二维点(x/w,y/w,1),w≠0;
Game101课程笔记_lecture03_transformation变换

3 仿射变换

仿射变换=线性变换+平移
Game101课程笔记_lecture03_transformation变换
用齐次坐标表示一个仿射变换的时候,最后一行永远是(0,0,1).平移的量在第三列。

4 2D变换矩阵

代价是引入一个额外的数字。
Game101课程笔记_lecture03_transformation变换

4 逆变换

逆变换对应在数学上乘以这个矩阵的逆矩阵。
Game101课程笔记_lecture03_transformation变换

5 组合变换

1 组合变换的概念

这个变换如何得到呢?
Game101课程笔记_lecture03_transformation变换
方案一:先平移1个单位,在旋转45°,可以看到不是我们想要的结果

Game101课程笔记_lecture03_transformation变换
方案二:先旋转45°,再平移一个单位。结果正确。
Game101课程笔记_lecture03_transformation变换
结论:

  • 复杂的变换可以通过一系列简单的变换得到。
  • 变换的顺序很重要。数学层次上的原因:矩阵的乘法的顺序是不可以改变的(矩阵不满足乘法交换律)。

Game101课程笔记_lecture03_transformation变换

2 组合变换的结论:

Game101课程笔记_lecture03_transformation变换
矩阵相乘没有交换律,但是有结合律。
结合律的使用:可以先把简单的变换相乘得到一个复杂的矩阵,所以一个三维矩阵可以表示非常复杂的变换的。

3 组合变换的分解

如何让图形绕着固定的点进行旋转,而不是原点?
1.先将其平移到原点
2.再旋转
3.再平移回去。
注意:在数学相乘上是从左到右相乘。
Game101课程笔记_lecture03_transformation变换

6 3D变换

和二维是一样的。
先引入齐次坐标。
Game101课程笔记_lecture03_transformation变换
最后一行和平移和二维是类似的。
Game101课程笔记_lecture03_transformation变换

7 视频

https://www.bilibili.com/video/av90798049?p=3