1. 欧拉角
2. 旋转向量
三维旋转也可以通过轴角表表示(旋转向量)来描述,不同于欧拉角采取多次旋转的方式来找到目标方向,轴角表达式是找到一根旋转轴,只通过绕这根轴旋转一次就可以得到目标方向。
我们用来表示旋转轴,用
来表示旋转角度,那么轴角表示(axis,angle) =
。
实际上,当我们想描述旋转轴时,不必在乎它的长度,只要知道它的方向就行,所以这里我们用单位向量e来表示旋转轴,又因为单位向量的性质,所以我们只需要两个参数就可以描述旋转轴。
把旋转向量写成矩阵的形式:
那么实际上,当给定旋转向量(三个参数:)的时候,我们可以得到
:
旋转向量R的方向和单位向量e一样,模长为,所以当我们得到R的时候,就得到了旋转轴和旋转角。旋转轴也叫欧拉轴(Euler axis),旋转向量也叫做欧拉向量(Euler vector)。
根据罗德里格旋转公式(这是计算三维空间中一个向量绕旋转轴旋转给定角度以后得到的新向量的计算公式),这个公式使用原向量,旋转轴及它们叉积表示出旋转以后的向量。一个向量p绕旋转轴旋转给定角度以后得到的新向量p',通过下面的公式得到:
其中r 是旋转向量的单位向量。
这个变换关系看上去很简洁,但是运算起来十分复杂,那么能不能把旋转向量变成旋转矩阵呢?答案是可以的。
3. 旋转矩阵
其中E是单位矩阵,
这里先介绍几个概念:叉乘,斜对称矩阵(也叫反对称矩阵)。
叉乘在3D图像学中非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b所在共同平面的法向量,从而构建X、Y、Z坐标系。
两个向量的叉乘可以转换成向量与矩阵相乘,比如当
其中
其中是斜对称矩阵,即
,且主对角线的元素都为0。
那么在旋转向量的公式里,可以变成r的斜对称矩阵与p相乘。
罗德里格旋转公式(矩阵形式): 对旋转轴的斜对称矩阵和旋转角
相乘后做指数映射得到旋转矩阵。
4. Reference
[1] https://www.guyuehome.com/33289
[2] https://baike.baidu.com/item/%E7%BD%97%E5%BE%B7%E9%87%8C%E6%A0%BC%E6%97%8B%E8%BD%AC%E5%85%AC%E5%BC%8F/18878562?fr=aladdin (罗德里格旋转公式的百度百科,其中推导了如何根据旋转轴和旋转角得到旋转后的新向量)
[3] https://blog.youkuaiyun.com/mightbxg/article/details/79363699
[4] https://zhuanlan.zhihu.com/p/115276808
[5] https://www.cnblogs.com/21207-iHome/p/9216719.html (旋转变换的指数形式推导)