在三维空间中,我们经常需要描述物体的旋转。最常用的旋转描述方式一种是旋转矩阵。另一种就是通过旋转轴和旋转角度来描述。旋转矩阵综合描述了向量绕参考坐标系各个基准轴的旋转角度;而旋转轴和旋转角度顾名思义描述的是空间向量在空间上绕旋转轴(向量)的旋转角度。这里将探讨旋转轴和旋转矩阵之间的转换关系。
首先,来看旋转矩阵的通用公式:
如何看待旋转矩阵,我们以绕XYZ旋转顺序,从几何意义上去理解;首先将目标坐标系{B}与参考坐标系{A}重合,将坐标系{B}先绕XA轴旋转γ度,再将坐标系{B}绕YA轴旋转β度,最后将坐标系{B}绕ZA轴旋转α度。最终得到新的坐标系{B}。
基于坐标系绕轴向量的旋转公式,由旋转顺序可直接推导:
也就是说,旋转矩阵作为描述旋转变换的一种方式。表达式是对于绕坐标系的正交向量基分别旋转角度的变换。可能由于绕旋转向量基XYZ的先后顺序不同,过程不同延伸出不同的变换过程。
在三维空间中,一个刚体绕某一轴进行旋转,这个轴就被称为旋转轴。通常情况下,我们用单位向量K来表示旋转轴的方向,用θ表示旋转的角度。根据前面上诉旋转矩阵的求解方式可以发现,当我们把坐标系的某单个基准轴作为旋转轴旋转一定角度而不作其他变换时,此时根据旋转角度可以直接得到旋转矩阵,这就已经实现了从旋转轴/旋转角度的描述转换成了旋转矩阵的描述。那么推广到通用关系上,问题就变成了:绕旋转向量K,旋转角度θ如何用旋转矩阵表示,这里规定基于右手定则逆时针旋转为正。
现在,我们来看一下如何从旋转轴和旋转角度得到对应的旋转矩阵。给定单位向量K和旋转角度θ,旋转矩一般可以通过罗德里格斯公式(Rodrigues’ formula)来计算。
其中cθ=cos?(θ), sθ=sin(θ),vθ=1-cos?(θ),[kx,ky,kz]为单位向量K。
相反的,如果已知旋转矩阵:
那么,可求得旋转角度:
可求得旋转向量:
由旋转向量的求解式可以看出,当旋转角度sinθ = 0时,旋转向量无解,即θ不能为0°和180°。