四元数与空间旋转
WIKI:单位四元数(Unit quarternion)可以用于表示三维空间里的旋转。它与常用的另外两种表示方式(三维正交矩阵和欧拉角)是等价的,但是避免了欧拉角表示法中的万向锁问题。比起三维正交矩阵表示,四元数表示能够更方便地给出旋转的转轴与旋转角。
关于欧拉角旋转的万向节死锁问题,是旋转的时候一不小心是两个不同的轴重合了,从而导致失去了一个轴的自由度。四元数不会出现这样的问题。
不太懂还是,大致意思是一个单位四元数可以使得三维空间中的一个点实现旋转。具体公式是
其中p是三维空间的一个点转化成的一个纯四元数,至于旋转的角度与旋转轴都由四元数q来决定。
在左手坐标系中代表顺时针旋转,将q与倒数调换即为逆时针旋转。当q为单位四元数时,q的倒数和共轭相同,公式中的倒数可以使用共轭替换。由于共轭只需要改变符号就可以获得,所以这个旋转所需要的计算代价很小。
对于旋转轴与旋转角度:旋转轴由四元数q的虚部代表的向量来决定。
旋转角度根据四元数q的实部
贴一个写的不错的博客文章链接:滴滴里面的证明没看懂。。
l 旋转变换
旋转变换是所有变换矩阵中最复杂的,因为它使用了许多的三角函数。要利用旋转方程对点进行旋转,需要提取旋转方程的运算反,然后将它们放到矩阵中。在3D坐标系中,可以绕三个轴进行旋转:x轴、y轴、z轴,现在介绍绕z轴旋转的情况。重要的是,绕任何轴旋转是,该轴对应的分量保持不变。现给定,变换矩阵
则
对于旋转变换矩阵的逆矩阵,有两种方法可以计算:一种方法基于几何学,另一种方法基于线性代数。首先采用几何学方法计算逆矩阵。将物体绕z轴旋转角度后,要将它恢复到原来的位置,只需要将它旋转角度即可。因此要计算旋转矩阵的逆矩阵,只需要将旋转矩阵中的替换为。因此,逆矩阵如下:
下面采用线性代数的方法来计算逆矩阵。正交(Orthonormal)矩阵指的是,在给定的基(basis)的情况下,矩阵的每一行(列)都与前一行(列)垂直。所以旋转矩阵是正交矩阵,而对于正交矩阵,其转置矩阵与逆矩阵相同。故旋转变换矩阵的逆矩阵为: