本文讲的内容是GAMES101的Lecture3以及Lecture4,主题为变换。
课程链接:GAMES101B站课程
课程主要(有课件):课程主页
首先想象一个场景,我们在玩“推箱子”游戏的时候,里面的箱子是怎么变换?
我们可以简单理解为某个坐标系下的箱子的坐标发生了改变,或者说是箱子发生了一个二维变换。
接下来会简单介绍比较一些基础变换操作:
(1)缩放
左边是变换后物体的坐标,右边是缩放矩阵
∗
*
∗ 变换前的物体坐标,s这里代表缩放倍数。
(2)翻转,同理,重点在于理解变换操作与矩阵的关系
(3)剪切,同理
(4)旋转,同理,默认是以原点为圆心,逆时针旋转
(5)总结——线性变换,任何线性变换都可以通过矩阵计算来实现
(6)平移![](https://i-blog.csdnimg.cn/blog_migrate/a9fb7cc153fbf1d8390cbcf8e19b9955.png)
这里需要引入“齐次坐标”,因为平移操作无法用下面的“矩阵形式”去进行描述,因此“平移”操作并不是“线性变换”
下面是解决方案,通过引入第3维度向量,得到一下以下公式
(7)2D变换可以由以下形式描述
(8)逆变换,即对变换矩阵取逆
(9)组合变换,任意的变换都可以通过线性变换+平移等操作来实现,其数学表达方式如下:
(10)3D变换,同理, 在处理3D点的时候学习2D数据处理方式,通过增加一个第4维(行向量w)可以来描述3D点的平移
我的公众号是 AI知识物语 , B站是 出门吃三碗饭,不定期更新相关文章or视频讲解,希望能对你们有帮助。