本章主要介绍平移,平移本身非常的直白,比如一点
,平移
,则平移后的位置是
。如果在平移前考虑旋转,结合前两篇的内容,很容易得到如下公式:
这里,就有一个线性变换的概念:变换后直线不变,比例不变,原点不变。不难看出,红色矩阵部分是绕原点旋转,满足线性变换的条件。但平移后原点发生的变化,并不是线性变换。这里我们称其为仿射变换(Affine transformation):线性变换+平移。
数学之美,其中之一就是希望达到形式上的统一。而齐次坐标,则实现了将仿射变换转为线性变换的形式:
这里,我们将一个2*2的矩阵升级为3*3的矩阵,这里要强调的是该矩阵是先旋转再平移,每个点扩增一个
位,竟然将平移从非线性变成线性的关系,将旋转和平移统一在一个矩阵中,如此的神奇,这是为什么呢?
从几何的角度,这里可以认为新增了一个维度
,当旋转时,每一个点都相对
旋转,自然中心点不变,而平移时,因为新增维度
的值为1,则相当于该平面上升到
的平面,然后在该平面上实现了平移,而整体上则类似比萨斜塔那般,依旧相对于原点不变。这样,我们新增一个维度,通过高维度的线性变换实现低维度的仿射变换。下图描述了该过程。
这样,对于一个point,对应的齐次坐标为
,而一个vector,对应的齐次坐标为
:
这样,既能满足向量的平移不变性,也能保证两点相减为向量,唯一特别处是两点相加,对应的是两点的中点,这个几何意义。
这样,可得平移矩阵:
我们将旋转和平移组合在一起,假设初始位置
可得:
例子1:
点p绕正方向左下角点
后的点
这里,提供两种思路。通常二维场景下,我们会把B移到O点
,然后旋转
,最后再移动回B点
,因此对应的解为:
另一个思路则是默认
,则M从O平移到B,然后绕
旋转,此时A相对于M坐标系的位置记为
:
而
是M从O平移到B时的相对位置:
前者是坐标点的移动,而后者是坐标系的移动,不同的思路,但最终的矩阵都是一致的。
坐标系和矩阵的基本概念介绍完毕,下一篇我们对应具体的应用场景,首先,先从GIS中大地坐标系和NEU这类的平面坐标系的转换开始吧。
参考资料(上一篇忘记引入参考资料了):Motion and Manipulation https://www.cs.uu.nl/docs/vakken/moma/2019.html
GAMES101: https://www.bilibili.com/video/BV1X7411F744?p=3
如何通俗地讲解「仿射变换」这个概念:
https://www.zhihu.com/question/20666664/answer/157400568
google drive上共享了pdf原版,有兴趣的可以下载下来看。
drive:https://drive.google.com/drive/folders/1Tp_zDNkY4OuhJ3bagE8qD6N0eX6jU8pm?usp=sharing