介绍
记录并分享罗德里格斯公式(Rodrigues’ rotation formula)的推导过程。
推导过程
向量vvv绕单位向量kkk旋转角度θ\thetaθ,旋转后向量为vrotv_{rot}vrot。罗德里格斯公式描述如何了从轴角θk\theta kθk构造旋转矩阵RRR,以表示vrotv_{rot}vrot与vvv之间的旋转关系。

向量vvv可以拆分为与单位向量kkk平行的向量v∥v_\parallelv∥和垂直的向量v⊥v_{\perp}v⊥,表示为v=v∥+v⊥v=v_\parallel+v_{\perp}v=v∥+v⊥向量v∥v_\parallelv∥表示为v∥=(v⋅k)k=k(v⋅k)=kkTvv_\parallel=(v\cdot{k}){k}=k(v\cdot{k})=kk^Tvv∥=(v⋅k)k=k(v⋅k)=kkTv定义向量w=k×vw=k\times{v}w=k×v,且根据叉乘特性,有∣w∣=∣k∣∣v∣sinϕ|w|=|k||v|\sin\phi∣w∣=∣k∣∣v∣sinϕ,其中ϕ\phiϕ为vvv和kkk的夹角,则向量v⊥v_{\perp}v⊥表示为v⊥=w×k=−k×wv_{\perp}=w\times{k}=-k\times{w}v⊥=w×k=−k×w且有∣v⊥∣=∣w∣|v_{\perp}|=|w|∣v⊥∣=∣w∣。令k∧=[0−k3k2k30−k1−k2k10]k^\land=\begin{bmatrix}0&-k_3&k_2\\k_3&0&-k_1\\-k_2&k_1&0\end{bmatrix}k∧=0k3−k2−k30k1k2−k10表示kkk的反对称矩阵,可将向量叉乘表示成矩阵乘法的形式,即有k×v=k∧vk\times{v}=k^\land{v}k×v=k∧v,进而可知w=k∧vw=k^\land{v}w=k∧v,v⊥=−k∧k∧vv_{\perp}=-k^\land k^\land{v}v⊥=−k∧k∧v。
旋转过程中向量v∥v_\parallelv∥保持不变,向量v⊥v_{\perp}v⊥绕单位向量kkk旋转了θ\thetaθ角。向量v⊥v_{\perp}v⊥绕单位向量kkk旋转了θ\thetaθ角后,沿v⊥v_{\perp}v⊥方向的分量表示为v⊥∣v⊥∣∣v⊥∣cosθ=v⊥cosθ\frac{v_{\perp}}{|v_{\perp}|}|v_{\perp}|\cos\theta=v_{\perp}\cos\theta∣v⊥∣v⊥∣v⊥∣cosθ=v⊥cosθ,沿www方向的分量表示为w∣w∣∣v⊥∣sinθ=wsinθ\frac{w}{|w|}|v_{\perp}|\sin\theta=w\sin\theta∣w∣w∣v⊥∣sinθ=wsinθ。则旋转后的向量表示为vrot=v∥+v⊥cosθ+wsinθv_{rot}=v_\parallel+v_{\perp}\cos\theta+w\sin\thetavrot=v∥+v⊥cosθ+wsinθ代入v∥=v−v⊥v_\parallel=v-v_{\perp}v∥=v−v⊥得vrot=v−v⊥+v⊥cosθ+wsinθ=v−(cosθ−1)v⊥+wsinθ=[I+(1−cosθ)k∧k∧+sinθk∧]vv_{rot}=v-v_{\perp}+v_{\perp}\cos\theta+w\sin\theta\\=v-(\cos\theta-1)v_{\perp}+w\sin\theta\\=[I+(1-\cos\theta)k^\land{k^\land}+\sin\theta k^\land]vvrot=v−v⊥+v⊥cosθ+wsinθ=v−(cosθ−1)v⊥+wsinθ=[I+(1−cosθ)k∧k∧+sinθk∧]v代入v⊥=v−v∥v_{\perp}=v-v_\parallelv⊥=v−v∥得vrot=v∥+(v−v∥)cosθ+wsinθ=cosθv+(1−cosθ)v∥+wsinθ=[cosθI+(1−cosθ)kkT+sinθk∧]vv_{rot}=v_\parallel+(v-v_\parallel)\cos\theta+w\sin\theta\\=\cos\theta v+(1-\cos\theta)v_\parallel+w\sin\theta\\=[\cos\theta{I}+(1-\cos\theta)kk^T+\sin\theta k^\land]vvrot=v∥+(v−v∥)cosθ+wsinθ=cosθv+(1−cosθ)v∥+wsinθ=[cosθI+(1−cosθ)kkT+sinθk∧]v最终,得到两种形式的罗德里格斯公式R=I+(1−cosθ)k∧k∧+sinθk∧R=cosθI+(1−cosθ)kkT+sinθk∧R=I+(1-\cos\theta)k^\land{k^\land}+\sin\theta k^\land\\R=\cos\theta{I}+(1-\cos\theta)kk^T+\sin\theta k^\landR=I+(1−cosθ)k∧k∧+sinθk∧R=cosθI+(1−cosθ)kkT+sinθk∧(kkk为单位向量时,有以下等式成立,k∧k∧=[−k22−k32k1k2k1k3k1k2−k12−k23k2k3k1k3k2k3−k12−k22]=kkT−Ik^\land k^\land=\begin{bmatrix}-k_2^2-k_3^2&k_1k_2&k_1k_3\\k_1k_2&-k_1^2-k^3_2&k_2k_3\\k_1k_3&k_2k_3&-k_1^2-k_2^2\end{bmatrix}=kk^T-Ik∧k∧=−k22−k32k1k2k1k3k1k2−k12−k23k2k3k1k3k2k3−k12−k22=kkT−I,带入上述两个公式可以发现二者是等价的。)
文章介绍了罗德里格斯公式,用于描述三维空间中向量绕单位向量旋转的数学表达。通过向量的分解、叉乘以及反对称矩阵,详细推导了旋转矩阵的构建过程,展示了从轴角到旋转矩阵的转换方法。

1万+

被折叠的 条评论
为什么被折叠?



