GAMES101 学习3——矩阵变换
【摘要】 参考文档:https://www.yuque.com/sugelameiyoudi-jadcc/okgm7e/9242e00d224c583a93ce5ac6e49246fe 一、2D TransformationLinear(线性) Transforms = Matrices其中,线性变换包括以下4种: 1.1 Scale(缩放) 1.2 Reflection(反射) 1.3. Shear...
参考文档:
https://www.yuque.com/sugelameiyoudi-jadcc/okgm7e/9242e00d224c583a93ce5ac6e49246fe
为什么需要Transformation
- 描述摄像机的运动
- 描述图像的缩放变化
- 用于将3D视图投影到2D图像上
一、2D Transformation
Linear(线性) Transforms = Matrices
其中,线性变换包括以下4种:
1.1 Scale(缩放)
1.2 Reflection(反射)
1.3. Shear(切变)
1.4 Rotate(旋转)
默认都是按照远点逆时针旋转
1.5 总结:线性变换=矩阵
二、Homogeneous coordinates(齐次坐标)
- 为什么要引入齐次坐标
- 平移变换 :它不是线性变换,不能写成 一个x’ = M x 的形式,
- 我们不希望把平移当做一种特殊的情况去考虑
- 引入齐次坐标:可以把线性变换和平移(二者合起来就是仿射变换),用同一种形式去表示。
- 平移变换 :它不是线性变换,不能写成 一个x’ = M x 的形式,
2.1 平移变换不是线性变换 引入齐次坐标
2.1.1 齐次坐标
- 可以把二维的点,增加一个维度,写成以下第一行形式
- 对于二维向量,写成以下第二行形式
- 对于二维的点,增加了一个“1”的维度,就有了一个非常好的性质
- 在它前边乘以这样一个矩阵(图中红框圈出),得到的结果,可以表示平移变换。
- 这样一来,我们的目的就达到了:用同一种形式表示线性变换和平移变换。
- 对于增加维度“1”“0”的解释
- 为什么向量是“0”
- 首先回顾向量的概念:表示的是一个方向,也就是说,它有这样的性质:
平移不变性
。这就是为什么向量增加的维度是“0”的原因,这样一来,向量做任何平移变换操作时,就可以保证符合平移不变性。
- 首先回顾向量的概念:表示的是一个方向,也就是说,它有这样的性质:
- 更深层次的理解
- 增加维度的“0”和“1”是有意义的
- 向量+向量 = 向量 对应:0 + 0 = 0
- 点 - 点 = 向量 对应:1 - 1 = 0
- 点 + 向量 = 点 对应:1 + 0 = 1
- 点 + 点 = ?? 本来一个点加一个点是没有意义的,但是人们扩充了它的定义:点+点表示的就是这两个点的中点。也就是2.1.2 中说的
- 为什么向量是“0”
2.1.2 在齐次坐标下的2维点
对于任何w(w≠0), 表示的就是二维点
2.2 Affine Transformation(仿射变换)
仿射变换=线性变换+平移
顺序:先线性变换后平移(3D仿射同样)
2.3 齐次坐标下的2D Transformations
2.4 逆变换
逆变换就是乘以变换矩阵的逆矩阵
三、Composite Transformation(组合变换)
3.1 复杂的变换都是由简单的组合而来
3.2 变换的顺序很重要
矩阵的“左乘”
一般都是选旋转后平移
3.3 矩阵乘法无交换律
eg.一个不在原点的做旋转:先变换到原点→旋转→转换回原来位置
3.4 解耦复杂变换
注意矩阵的运算顺序是从右到左
四、3D Transformation
4.1 齐次坐标下的3维向量和点
4.2 齐次坐标下的3D Affine Transformation
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)