物体在三维下的旋转可以用旋转角度来表示,一般情况下可分为两种,
1 围绕x, y, z主坐标轴各自旋转yaw, pitch, roll角度而得。
2 围绕空间中某一向量旋转一个角度而得,这个一般不是唯一的,我们称这种为旋转向量,向量的模表示绕该向量逆时针旋转的角度。
那么正常来说,这两种表示可以互相转换,转换方式依据的Rodrigues旋转公式。
PS: opencv-py cv2.Rodrigues()所提供的功能既是该转换功能。
Rodrigues旋转公式
即:设v是一个三维空间向量,k是旋转轴的单位向量(旋转向量上的单位向量),则v在右手螺旋定则意义下绕旋转轴k旋转角度θ得到的向量可以由三个不共面的向量v, k和kxv(特殊情况时为x, y, z轴)构成的标架表示:
其实说白了,就是把v分解为两个特殊分向量(垂直于平行),分别沿着k旋转,再把结果相加。
推导
(PS:参见百科,仅多了一个辅助理解的俯视图)
将v分解为垂直于k(v_T)和平行于k(v_11)的分向量,则有
(在k上的投影)
由向量积几何意义可知v, k的向量积w 为与v, , k都垂直,且模与
相等。
W=(该式中 x 不为字母x,表示k 与 v的叉乘积)
则,
下图(沿向量k的逆向量方向观察)可见
则
Ref
https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula#Statement
罗德里格斯(Rodrigues)旋转方程推导
https://blog.youkuaiyun.com/qq_22235957/article/details/80461290