简单解释一下虚数和旋转的关系
平面旋转
将平面上的点用复数表示,其中。在这个坐标系中,基为。如果将复平面旋转角度,我们可以将和映射到
这个应该比较容易验证,在坐标系上画一下就行了。
那么对于一般的坐标来讲呢?我们可以得到
这里的就可以表示旋转,而且左乘右乘也没有什么区别,因为复数乘法有交换律。应该也属于李群,有兴趣的朋友可以自己证明一下,这个应该比较简单。同样的也就是对应的李代数啦。个人认为使用复数形式来表示旋转比矩阵形式表示旋转看起来直观方便的多。
3D旋转
四元数是拥有3个虚部的复数,单位四元数通常用来表示3D空间中的旋转,和平面旋转大致可以类比一下。是复数的虚部,令为纯单位四元数,那么可以表示为某一个通过原点的轴。那么我们有
同样的,这样的单位四元数用来表示3D旋转。
但是熟悉单位四元数表示旋转的同学应该都知道使用四元数进行旋转远远不是这么简单,所以我们进行接下来都一些推导。
先让我们脱离四元数,从三维坐标来考虑这个问题吧。元素绕通过原点的轴旋转了角度。如图
其中为与轴平行的分量,为与旋转轴垂直的分量,具体的表示图里有里我就不写了。
接下来要说明的是与轴平行的分量在旋转中是不变的,变化的只有与旋转轴垂直的分量。令为旋转后的量,为旋转后的垂直分量。在旋转轴的作用下,垂直分量的旋转过程发生在基张成的平面上。回忆一下平面旋转,基为时,旋转角度,有
同样的,我们可以得到
最后我们得到旋转后的结果
根据四元数乘法
我们有
用这个矩阵左乘可以得到
所以使用对偶四元数旋转的时候是
其中为四元数乘法。
NOTE:很遗憾,目前为止也只是抽象推导了四元数旋转,还是没有对四元数旋转得到更加直观的理解。3D旋转与虚数的关系并没有2D来的那么直观。相关理解可能后续有时间再继续进行吧。
参考文献
[1]B. V. Adorno, “Robot Kinematic Modeling and Control Based on Dual Quaternion Algebra—Part I: Fundamentals.,” 2017.
[2]J. Sola, “Quaternion kinematics for the error-state KF,” p. 73.