罗德里格旋转公式是计算三维空间中,一个向量绕旋转轴旋转给定角度以后得到的新向量的计算公式。这个公式使用原向量,旋转轴及它们叉积作为标架表示出旋转以后的向量。可以改写为矩阵形式,被广泛应用于空间解析几何和计算机图形学领域,成为刚体运动的基本计算公式。
四元数可以很方便地表示旋转变换。但在很多场合中,使用矩阵形式和向量形式表达旋转更有利于推导。向量旋转公式最早由法国数学家本杰明·奥伦德·罗德里格(Benjamin Olinde Rodrigues(1795–1851))导出,后来被应用在很多领域。
设v是一个三维空间向量,k是旋转轴的单位向量,则v在右手螺旋定则意义下绕旋转轴k旋转角度θ得到的向量可以由三个不共面的向量v, k和k×v构成的标架表示:
推导过程如下:
如果被旋转向量v与旋转轴k(k为单位向量)相互垂直,那旋转变换不难表示。而对于与旋转轴k呈任意角度的向量v,可以通过正交分解,把被旋转向量转化为与旋转轴平行的分量和与旋转轴垂直的分量,其中与旋转轴平行的分量在旋转中是不变的,而与旋转轴垂直的分量则恰好旋转了角度θ,把与旋转轴平行的分量与旋转以后的与旋转轴垂直的分量加在一起,即可得到旋转以后的向量。
第一步是如何对向量v做正交分解:
利用向量投影公式,可以得到的表达式:
通过做减法,得到
利用外积可以计算与 和k都垂直,且长度等于的向量w:
旋转以后的向量可以表示为:
与相加即可得到旋转以后的向量表达式:
在计算机图形学中,罗德里格向量旋转公式通常被用来填写旋转矩阵。如果把k和v分别写为列向量:
则旋转以后的向量可以表示为:
其中
其中E是3阶单位矩阵。需要注意的是,公式中的第二项不是点积,而是张量积,得到的是一个3行3列的矩阵。