坐标系与矩阵(1):旋转

2021-06-21 20:07:02 浏览数 (3)

坐标系转换在很多方面都会用到,比如机器人中的骨骼关节间的空间关系,GIS中的坐标系,渲染和计算机视觉中的相机等,往往需要采用矩阵来实现不同坐标系间的转换。因此,这里主要涉及到几何和线性代数两方面的数学知识。

个人一直想把这块知识点梳理一下,形成一个自我的理解体系。正巧前阵子有同事提到了齐次坐标,不妨以此为动机,形成这一系列。本篇主要针对旋转。

首先,我们先定义两个坐标系,一个是固定坐标系(fixed),也可以称为全球坐标系(global),或世界坐标系(world),其特点是该坐标系是绝对的,一旦确立就不再变化,我们记为

。另一个则是移动坐标系(moving),也称为本地坐标系(local)或自身坐标系(body),其特点是会移动(旋转R,平移T,缩放S,RTS),我们记为

。本文主要针对旋转,自然也分为两种情况,相对

的旋转,或相对

的旋转。

上图是坐标系

相对于

旋转

对应的结果及矩阵。同理,相对于

旋转

对应的矩阵分别是:

并且,该矩阵为正交矩阵:

这里,如果坐标系M绕坐标系F的某一个轴

旋转

,其中

分别对应某一点相对于

的坐标位置,则转换关系如下:

例子1,初始是

绕着

旋转

,此时,

坐标系上的一点

对应

坐标系的位置

是多少?

求解如下:

同理,初始是

,然后

绕着

进行了一系列的旋转

,此时,空间上同一个点,对应M和F坐标系下的空间位置分别记作

,满足公式:

全球坐标系下,针对不同轴的旋转,这里有一个对应的roll-pitch-yaw:

刚才我们只讨论了围绕

坐标系的旋转并给出了对应的矩阵,这里,如果我们相对

坐标系旋转,分别得到对应的三个矩阵:

同理,如果此时

绕着

旋转

分别对应某一点相对于

的坐标位置,则转换关系如下:

例子2,初始是

绕着

旋转

,此时,

坐标系上的一点

对应

坐标系的位置

是多少?

求解如下:

例子3,初始是

绕着

旋转

,此时,

坐标系上的一点

对应

坐标系的位置

是多少?

求解如下:

同理,初始是

,然后

绕着

进行了一系列的旋转

,此时,空间上同一个点,对应M和F坐标系下的空间位置分别记作

,满足公式:

这样,我们可以把绕固定坐标系

和移动坐标系

旋转综合在一起,可得如下

  • 初始是

,相当于M绕F旋转一个单位矩阵:

  • 然后,M旋转

:

  • 如果相对于

  • 如果相对于

这里,R用于将

坐标系下的一点

转换为相对于

坐标系下的点

。如上的规则应该算是本篇内容最重要的部分了。

同样,在局部坐标系下,针对不同轴的旋转,这里有一个对应的roll-pitch-yaw:

基于如上的旋转,有的是基于

,有的则是基于

,我们可以基于一系列的旋转复合形成该物体的朝向(orientation)。这里就有了欧拉角这个概念:

旋转

,称为precession

旋转

,称为nutation

旋转

,称为spin

欧拉角对应的过程如下图所示:

(1)precession:

(2)nutation:

(3)spin:

将R展开:

通过本章,我们可以得到一个结论:

对于原点相同的任意两个坐标系

,空间中相同的一个点,分别对应坐标系下的位置为

,必然存在一个转换矩阵R,满足两者之间的映射关系:

坐标系旋转的内容基本介绍完毕,下一篇继续,基于rotation,最终将确定物体的朝向,orientation这部分的内容会在下一篇详细介绍。

0 人点赞