目的:最近看论文,遇到Rodrigues公式,一直没有怎么推导。因此自己推导一遍。
在理解Rodrigues公式,之前需要理解旋转向量的表达方式。
旋转矩阵的向量表达是基于欧拉定理推导的,它有三个参数。而它可以转化为旋转矩阵。这种转化为旋转矩阵的方式被称为Rodrigues公式。
Rotation Vectors
普通认知中,旋转矩阵是的矩阵。这类矩阵有众多约束,具体哪些约束可以查阅资料(后续自己补上)。它只有三个自由度。只要知道那三个参数,剩下的6个参数能够计算,它的表达容易。在一般优化中,使用 Rotation matrix不方便,矩阵的计算复杂且耗时。
定义的来源:
在几何旋转中,任意一个旋转都可以表达为绕着一根轴旋转一定的角度。因此表达方式可以表示为:一根旋转的向量,和其旋转的角度。因此它可以用4个参数来决定。
假设向量为主轴向量,它的旋转的向量从向量,旋转角度为。如下图:
因为为原点。简化表达,其它也使用类似的表达。
从图上可以看到,向量绕着轴旋转的时候,只和垂直于向量有关。因此按照向量把它拆分为,,它们分别平面于向量和垂直于向量。拆分了两个向量,需要计算两个向量。假设和的夹角为,因此可以得到
因为为单位向量。因此可以得到
通过拆开和合并写成向量的形式可以得到:
对于垂直于向量的分量
因为从向量旋转到向量,需要另一个向量,它是垂直于向量和向量所在的平面,且它的长度和向量一样。
满足:
通过三角行垂直公式得到:
通过叉乘,可以设计向量:
其中单位向量。因此
通过计算它们的模,发现它们是相等的。
上面的公式,将在下一篇blog介绍。后面更新它们的链接
因此可以得到旋转后得到的向量为:
然后通过向量加法
通过公式可以得到一个向量围绕向量得到旋转新的向量的公式,其中。它也是Rodrigues公式。
还有一种特殊情况,如果,得到的旋转矩阵为
上面的公式也可以反推(因为它不太常用),后面再补上。
参考资料为:
Vector Representation of rotations的论文。