4.3 刚体的位置与姿态与变换¶
刚体的位置指的是一个刚体在空间中的坐标,姿态指的是其朝向的方向。
仅旋转变换¶
在三维空间中,对于一个刚体位置的描述,可以使用一个三行一列的矩阵描述。
我们可以使用矩阵的左乘来完成空间变换,对于使用三行一列的矩阵表达的刚体位置,我们只能表示其旋转变换。具体来说,如果在固定坐标系下,存在一个旋转坐标系,且其坐标轴x、y、z的单位向量分别是
则,根据矩阵相乘的运算法则,若记原位置矢量为\(\vec{p}\),变换后的矢量在固定坐标系下的矢量为\(\vec{p'}\),我们不难得出,
记上式中的矩阵为\(\vec{Q}\),不难看出,\(\vec{Q}\)中的各列分别为旋转后的坐标系的x、y、z的单位向量。我们称\(\vec{Q}\)为旋转矩阵。
Note
其实上述公式描述了这样一个事件:如果我们在固定坐标系上创建一个与之完全相同的重合坐标系,并记为旋转坐标系,那么,我们将这个坐标系连同某个矢量同时旋转,就实现了矢量的旋转。
只不过,显而易见的是,矢量相对旋转坐标系的坐标依旧是原始坐标。既然这个相对坐标是基于旋转坐标系的描述,那么我们将旋转坐标系的各单位向量用其在固定坐标系下的描述,就能知道矢量旋转后在固定坐标系下的坐标。可以使用下面的公式描述。
其中\(x'\)、\(y'\)、\(z'\)表示相对旋转坐标系的坐标。\(x_o\)、\(y_o\)、\(z_o\)表示相对固定坐标系的坐标。
位移变换¶
显然,对于三维空间中的物体,仅做旋转变化是不合理的,三维空间中的物体应该还能做位移变换。即,将整个向量的起点移动。
要实现这一点,我们依然可以创建一个运动坐标系,将整个坐标系的起点移动。
显然,三阶方阵和三维列向量已经无法仅使用矩阵相乘来完成这件事情了,如果一定要使用三阶方阵和三维列向量来描述,我们可以使用下面这样一个公式:
式中,\(\vec{Q}\)依然是旋转矩阵,不过这里没有旋转,自然为单位阵。\( \vec{O'} \)为运动坐标系的坐标原点在固定坐标系下的描述。
为了简化和统一计算,我们需要将上述公式整理成矩阵相乘,则可以使用如下这个公式:
旋转+位移¶
由位移变换最终的公式可知,当\(\vec{Q}\)为一具体旋转变换矩阵时,自然就是旋转加位移。
多次变换的先后顺序¶
接下来,我们需要讨论这样一个问题,当多次变换时,该如何计算变换矩阵。
在线性代数的本质这一视频中,我们直到,当基于当前坐标系连续变换时,只需要按照变换顺序,在原矩阵上左乘就行了。
但是,若下一次变换是基于当前的运动坐标系时,情况就恰恰相反,需要在原矩阵上右乘。
这并不难理解,从公式的角度,我们很好推导。从原理的角度,这就好比你在乘坐汽车时,汽车从甲地运动到了乙地,然后你从副驾挪到了后排。
在这个例子中,相比较对于固定坐标系的变换,其更加关心系统内部的变化,而不是相对固定坐标系的整体变换。也就是说,在相对固定坐标系的变换中,讨论的对象内部其实是相对固定的,而相对当前运动坐标系的变换中,讨论的对象内部发送了相对运动。
如果只讨论位移结果,显然,你先做到后座还是先到达乙地并没有什么区别。但是,如果反过来,我们发现,讨论的对象是后者包含前者。也就是,你做到后座这个变换的研究对象是你,而汽车从甲地到达乙地这个研究对象是整辆汽车。在第二个过程中,使用了一个更大的固定坐标系。在第一步你从副驾移动到后座的过程中,汽车相对地面坐标系又没有发生移动,那么我们就可以使用地面坐标系代替,进而,这个过程可以看作是相对一个固定坐标系发生的两次变换,只不过顺序有所不同,所以需要右乘。
注: 目前的例子和解释有点不太合适,将来会修改