CS184.1X 计算机图形学导论 罗德里格斯公式推导

时间:2021-06-10 20:50:10

罗德里格斯公式推导

CS184.1X 计算机图形学导论 罗德里格斯公式推导

图1(复制自wiki)

按照教程里,以图1为例子,设k为旋转轴,v为原始向量。 v以k为旋转轴旋转,旋转角度为θ,旋转后的向量为vrot

首先我们对v进行分解,分解成一个平行于k和垂直于K的向量,分别为v和v

则v=<k,v>k (因为这里设了k是单位向量,所以|k|=1)

v=v-v

为了方便研究旋转后的向量,我们以k和v的叉乘w以及v和v建立坐标系。
w=kXv

设vrot的分量为v',和v',显而易见的v'=v
而v'可以由v和w来表示。
由于v'是vrot的分量,因此显而易见的|v'|=|v|
设k和v之间的夹角为α
w=kXv,即|w|=|k||v|sinα
从图中我们根据三角形公式,也可以得出|v|=|v|sinα,而|k|=1,所以|v|=|w|

因此,v'=wsinθ+vcosθ
vrot=wsinθ+vcosθ+v

w=kXv
v=<k,v>k

v=v-v
<k,v>k=kTvk(根据点乘转换成矩阵)= kkTv(可验证)
kXv=K*v (设K*为k的对偶矩阵)(根据叉乘转矩阵的方法)

vrot=K*vsinθ+(v- kkTv)cosθ+kkTv
=(K*sinθ+Icosθ+kkT(1-cosθ))v

最后得出旋转公式R=K*sinθ+Icosθ+kkT(1-cosθ)