Game101课程笔记_lecture03_transformation变换
Game101课程笔记_lecture03_transformation变换
1 为什么要学习变换
1 modeling 模型变换
translation 平移
rotation 旋转
Scaling 缩放
2 view 变换
projection 投影变换
2 2D变换
1 scale 缩放变换
2 Refection Matrix 镜像变换
3 Shear
4 rotation
任何时候只要不说其他信息,就是绕着原点(0,0)进行旋转。
不说旋转方向,默认是逆时针方向。
再复杂的变换也是要找到一一对应的关系。旋转之前是什么样子的,旋转之后是什么样子的,找出两个之间的关系。
推导:
对于任意的点要满足这个关系,那么对于特殊的点也满足这个关系,
其中(1,0)这个点就是特殊的点。如下图:
(1,0)旋转后成为(sin,cos),利用这个信息代入下面的式子,可以求出A=cos,C=sin,我们再考虑另外一个特殊的点就可以求出B,D,用(0,1)来计算。
所以这个公式推到的逻辑就是:任何一个点都得满足这个旋转公式,那么对于特殊的点肯定也满足这个旋转公式。
5 线性变换
可以用一个矩阵乘以输入的坐标,可以得到输出的坐标的形式,这就是线性变换。
3 齐次坐标
1 为啥要引入齐次坐标呢
因为平移变换特殊,不能用矩阵的形式来表示。
平移变换不属于线性变换。
但是我们不希望把平移变换作为一个特殊的的例子来做处理。
齐次坐标就是来解决这个问题的。齐次坐标希望将所有的变换都统一成矩阵的形式来表示变换。
trade off 权衡
2 齐次坐标概念
对于任何一个点增加一个坐标1,
对于任何一个向量增加一个坐标0,
通过增加一个数,让平移变换也写成一个矩阵乘以一个向量的形式。
向量具有平移不变性,增加坐标0目的是为了让它经过平移变换后,其方向不变。
更深层次的理解:
向量+向量 =向量,点-点=向量
point+向量=点,点+点=没有意义。
但是在齐次坐标系中,点+点就是这两个点的中点;
增加0或者1,就可以让其再计算操作层次上也满足。
在齐次坐标中:
(x,y,w)是一个二维点(x/w,y/w,1),w≠0;
3 仿射变换
仿射变换=线性变换+平移
用齐次坐标表示一个仿射变换的时候,最后一行永远是(0,0,1).平移的量在第三列。
4 2D变换矩阵
代价是引入一个额外的数字。
4 逆变换
逆变换对应在数学上乘以这个矩阵的逆矩阵。
5 组合变换
1 组合变换的概念
这个变换如何得到呢?
方案一:先平移1个单位,在旋转45°,可以看到不是我们想要的结果
方案二:先旋转45°,再平移一个单位。结果正确。
结论:
- 复杂的变换可以通过一系列简单的变换得到。
- 变换的顺序很重要。数学层次上的原因:矩阵的乘法的顺序是不可以改变的(矩阵不满足乘法交换律)。
2 组合变换的结论:
矩阵相乘没有交换律,但是有结合律。
结合律的使用:可以先把简单的变换相乘得到一个复杂的矩阵,所以一个三维矩阵可以表示非常复杂的变换的。
3 组合变换的分解
如何让图形绕着固定的点进行旋转,而不是原点?
1.先将其平移到原点
2.再旋转
3.再平移回去。
注意:在数学相乘上是从左到右相乘。
6 3D变换
和二维是一样的。
先引入齐次坐标。
最后一行和平移和二维是类似的。