【罗德里格斯(Rodrigues)公式推导】

介绍

记录并分享罗德里格斯公式(Rodrigues’ rotation formula)的推导过程。

推导过程

向量 v v v绕单位向量 k k k旋转角度 θ \theta θ,旋转后向量为 v r o t v_{rot} vrot。罗德里格斯公式描述如何了从轴角 θ k \theta k θk构造旋转矩阵 R R R,以表示 v r o t v_{rot} vrot v v v之间的旋转关系。
罗德里格斯公式

向量 v v v可以拆分为与单位向量 k k k平行的向量 v ∥ v_\parallel v和垂直的向量 v ⊥ v_{\perp} v,表示为 v = v ∥ + v ⊥ v=v_\parallel+v_{\perp} v=v+v向量 v ∥ v_\parallel v表示为 v ∥ = ( v ⋅ k ) k = k ( v ⋅ k ) = k k T v v_\parallel=(v\cdot{k}){k}=k(v\cdot{k})=kk^Tv v=(vk)k=k(vk)=kkTv定义向量 w = k × v w=k\times{v} w=k×v,且根据叉乘特性,有 ∣ w ∣ = ∣ k ∣ ∣ v ∣ sin ⁡ ϕ |w|=|k||v|\sin\phi w=k∣∣vsinϕ,其中 ϕ \phi ϕ v v v k k k的夹角,则向量 v ⊥ v_{\perp} v表示为 v ⊥ = w × k = − k × w v_{\perp}=w\times{k}=-k\times{w} v=w×k=k×w且有 ∣ v ⊥ ∣ = ∣ w ∣ |v_{\perp}|=|w| v=w。令 k ∧ = [ 0 − k 3 k 2 k 3 0 − k 1 − k 2 k 1 0 ] k^\land=\begin{bmatrix}0&-k_3&k_2\\k_3&0&-k_1\\-k_2&k_1&0\end{bmatrix} k= 0k3k2k30k1k2k10 表示 k k k的反对称矩阵,可将向量叉乘表示成矩阵乘法的形式,即有 k × v = k ∧ v k\times{v}=k^\land{v} k×v=kv,进而可知 w = k ∧ v w=k^\land{v} w=kv v ⊥ = − k ∧ k ∧ v v_{\perp}=-k^\land k^\land{v} v=kkv

旋转过程中向量 v ∥ v_\parallel v保持不变,向量 v ⊥ v_{\perp} v绕单位向量 k k k旋转了 θ \theta θ角。向量 v ⊥ v_{\perp} v绕单位向量 k k k旋转了 θ \theta θ角后,沿 v ⊥ v_{\perp} v方向的分量表示为 v ⊥ ∣ v ⊥ ∣ ∣ v ⊥ ∣ cos ⁡ θ = v ⊥ cos ⁡ θ \frac{v_{\perp}}{|v_{\perp}|}|v_{\perp}|\cos\theta=v_{\perp}\cos\theta vvvcosθ=vcosθ,沿 w w w方向的分量表示为 w ∣ w ∣ ∣ v ⊥ ∣ sin ⁡ θ = w sin ⁡ θ \frac{w}{|w|}|v_{\perp}|\sin\theta=w\sin\theta wwvsinθ=wsinθ。则旋转后的向量表示为 v r o t = v ∥ + v ⊥ cos ⁡ θ + w sin ⁡ θ v_{rot}=v_\parallel+v_{\perp}\cos\theta+w\sin\theta vrot=v+vcosθ+wsinθ代入 v ∥ = v − v ⊥ v_\parallel=v-v_{\perp} v=vv v r o t = v − v ⊥ + v ⊥ cos ⁡ θ + w sin ⁡ θ = v − ( cos ⁡ θ − 1 ) v ⊥ + w sin ⁡ θ = [ I + ( 1 − cos ⁡ θ ) k ∧ k ∧ + sin ⁡ θ k ∧ ] v v_{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]v vrot=vv+vcosθ+wsinθ=v(cosθ1)v+wsinθ=[I+(1cosθ)kk+sinθk]v代入 v ⊥ = v − v ∥ v_{\perp}=v-v_\parallel v=vv v r o t = v ∥ + ( v − v ∥ ) cos ⁡ θ + w sin ⁡ θ = cos ⁡ θ v + ( 1 − cos ⁡ θ ) v ∥ + w sin ⁡ θ = [ cos ⁡ θ I + ( 1 − cos ⁡ θ ) k k T + sin ⁡ θ k ∧ ] v v_{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]v vrot=v+(vv)cosθ+wsinθ=cosθv+(1cosθ)v+wsinθ=[cosθI+(1cosθ)kkT+sinθk]v最终,得到两种形式的罗德里格斯公式 R = I + ( 1 − cos ⁡ θ ) k ∧ k ∧ + sin ⁡ θ k ∧ R = cos ⁡ θ I + ( 1 − cos ⁡ θ ) k k T + 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^\land R=I+(1cosθ)kk+sinθkR=cosθI+(1cosθ)kkT+sinθk k k k为单位向量时,有以下等式成立, k ∧ k ∧ = [ − k 2 2 − k 3 2 k 1 k 2 k 1 k 3 k 1 k 2 − k 1 2 − k 2 3 k 2 k 3 k 1 k 3 k 2 k 3 − k 1 2 − k 2 2 ] = k k T − I k^\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-I kk= k22k32k1k2k1k3k1k2k12k23k2k3k1k3k2k3k12k22 =kkTI,带入上述两个公式可以发现二者是等价的。)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值