羅德里格斯(Rodrigues)旋轉公式推導

定義

定義v\pmb{v}是三維空間R3\R^3中的一個任意向量,k\pmb{k}是一個單位向量,向量v\pmb{v}繞向量k\pmb{k}旋轉θ\theta角度,則表示旋轉後向量vrot\pmb{v}_{rot}的羅德里格斯公式爲:
vrot=vcosθ+(k×v)sinθ+k(kv)(1cosθ) v_{rot}=\pmb{v}\cos\theta+(\pmb{k}\times\pmb{v})\sin\theta+\pmb{k}(\pmb{k}\cdot\pmb{v})(1-\cos\theta)

公式推導

在這裏插入圖片描述
定義v\pmb{v}是三維空間R3\R^3中的一個任意向量,k\pmb{k}是一個單位向量,向量v\pmb{v}繞向量k\pmb{k}旋轉θ\theta角度(右手定律,圖中逆時針方向)。

使用點乘和叉乘,v\pmb{v}可被分解爲與k\pmb{k}平行和垂直的分量:

v=v+v(1) \pmb{v}=\pmb{v}_{\|}+\pmb{v}_\perp \tag{1}

其中平行於k\pmb{k}的分量爲:

v=(kv)k(2) \pmb{v}_{\|}=(\pmb{k}\cdot\pmb{v})\pmb{k} \tag{2}

向量v\pmb{v}_{\|}稱爲向量v\pmb{v}在向量k\pmb{k}上的投影(vector projection),垂直於k\pmb{k}的分量爲:

v=vv=v(kv)k=k×(k×v)(3) \begin{aligned} \pmb{v}_{\perp}&=\pmb{v}-\pmb{v}_{\|} \\ &=\pmb{v}-(\pmb{k}\cdot\pmb{v})\pmb{k} \\ &=-\pmb{k}\times(\pmb{k}\times\pmb{v}) \end{aligned} \tag{3}

向量v\pmb{v}_{\perp}稱爲向量v\pmb{v}在向量k\pmb{k}上的vector rejection(沒有找到合適的翻譯)。

公式(3)最後一項的推導:向量k×v\pmb{k}\times\pmb{v}可以看作是向量v\pmb{v}_{\perp}繞向量k\pmb{k}逆時針旋轉90°的副本,所以它們大小相等但方向垂直。同樣的,向量k×(k×v)\pmb{k}\times(\pmb{k}\times\pmb{v})v\pmb{v}_{\perp}k\pmb{k}逆時針旋轉180°的副本,所以k×(k×v)\pmb{k}\times(\pmb{k}\times\pmb{v})v\pmb{v}_{\perp}的大小相等但方向相反(因此符號相反)。

擴展
向量的三重叉積連接了平行分量和垂直分量,對於給定的3個向量a\pmb{a}b\pmb{b}c\pmb{c},有:
a×(b×c)=(ac)b(ab)c \pmb{a}\times(\pmb{b}\times\pmb{c})=(\pmb{a}\cdot\pmb{c})\pmb{b}-(\pmb{a}\cdot\pmb{b})\pmb{c}

在這裏插入圖片描述

由於平行於旋轉軸的分量在旋轉時不會改變其幅度和方向,因此有:

vrot=v(4) \pmb{v}_{\|rot}=\pmb{v}_{\|} \tag{4}

垂直分量在旋轉時會改變方向,但會保持大小不變,有:

vrot=v(5) |\pmb{v}_{\perp rot}|=|\pmb{v}_{\perp}| \tag{5}

vrot=cosθv+sinθk×v(6) \pmb{v}_{\perp rot}=\cos \theta \pmb{v}_{\perp}+\sin \theta \pmb{k} \times \pmb{v}_{\perp} \tag{6}

由於k\pmb{k}v\pmb{v}_{\|}是平行的,所以它們的叉積爲0,即k×v=0\pmb{k}\times\pmb{v}=0,所以我們有:

k×v=k×(vv)=k×vk×v=k×v(7) \begin{aligned} \pmb{k}\times\pmb{v}_{\perp}&=\pmb{k}\times(\pmb{v}-\pmb{v}_{\|}) \\ &=\pmb{k}\times\pmb{v}-\pmb{k}\times\pmb{v}_{\|} \\ &=\pmb{k}\times\pmb{v} \end{aligned} \tag{7}

將(6)式帶入(7)式,有:

vrot=cosθv+sinθk×v(8) \pmb{v}_{\perp rot}=\cos\theta\pmb{v}_{\perp}+\sin\theta\pmb{k}\times\pmb{v} \tag{8}

說明
可以通過前面的圖片來理解公式(8)。向量v\pmb{v}_{\perp}k×v\pmb{k}\times\pmb{v}具有相同的長度,且k×v\pmb{k}\times\pmb{v}v\pmb{v}_{\perp}k\pmb{k}旋轉90°得到的。利用三角函數(正弦、餘弦)可得到旋轉後向量的垂直分量。旋轉分量的形式與笛卡爾基的2D平面極座標(r,θ)(r,\theta)中的徑向向量類似:
r=rcosθex+rsinθey \pmb{r}=r\cos\theta\pmb{e}_{x}+r\sin\theta\pmb{e}_{y}
其中,ex\pmb{e}_{x}ey\pmb{e}_{y}爲它們指示方向上的單位向量。

現在,旋轉後的向量可完整表示爲:

vrot=vrot+vrot(9) \pmb{v}_{rot}=\pmb{v}_{\| rot}+\pmb{v}_{\perp rot} \tag{9}

將式(4)和(8)和(2)依次帶入(9),有:

vrot=v+cosθv+sinθk×v=v+cosθ(vv)+sinθk×v=cosθv+(1cosθ)v+sinθk×v=cosθv+(1cosθ)(kv)k+sinθk×v(10) \begin{aligned} \pmb{v}_{rot}&=\pmb{v}_{\|}+\cos\theta\pmb{v}_{\perp}+\sin\theta\pmb{k}\times\pmb{v} \\ &=\pmb{v}_{\|}+\cos\theta(\pmb{v}-\pmb{v}_{\|})+\sin\theta\pmb{k}\times\pmb{v} \\ &=\cos\theta\pmb{v}+(1-\cos\theta)\pmb{v}_{\|}+\sin\theta\pmb{k}\times\pmb{v} \\ &=\cos\theta\pmb{v}+(1-\cos\theta)(\pmb{k}\cdot\pmb{v})\pmb{k}+\sin\theta\pmb{k}\times\pmb{v} \\ \end{aligned} \tag{10}

矩陣表示

v\pmb{v}k×v\pmb{k}\times\pmb{v}表示爲列矩陣,則叉積可以表示爲矩陣的乘積:

[(k×v)x(k×v)y(k×v)z]=[kyvzkzvykzvxkxvzkxvykyvx]=[0kzkykz0kxkykx0][vxvyvz](11) \begin{aligned} \begin{bmatrix} (\pmb{k}\times\pmb{v})_x \\ (\pmb{k}\times\pmb{v})_y \\ (\pmb{k}\times\pmb{v})_z \end{bmatrix}&= \begin{bmatrix} k_y v_z-k_z v_y \\ k_z v_x-k_x v_z \\ k_x v_y-k_y v_x \end{bmatrix} \\ &= \begin{bmatrix} 0 & -k_z & k_y \\ k_z & 0 & -k_x \\ -k_y & k_x & 0 \end{bmatrix} \begin{bmatrix} v_x \\ v_y \\ v_z \end{bmatrix} \end{aligned} \tag{11}

K\pmb{K}表示單位向量k\pmb{k}的“叉積矩陣”:

K=[0kzkykz0kxkykx0](12) \pmb{K}= \begin{bmatrix} 0 & -k_z & k_y \\ k_z & 0 & -k_x \\ -k_y & k_x & 0 \end{bmatrix} \tag{12}

則對於任意向量v\pmb{v},矩陣方程(11)可以表示爲:

Kv=k×v(13) \pmb{K}\pmb{v}=\pmb{k}\times\pmb{v} \tag{13}

事實上,K是具有這個性質的唯一矩陣,它的特徵值爲0和±i\pm i

在等式右側迭代叉乘等價於在等式左側迭代左乘叉積矩陣,有(迭代2次的情況):

K(Kv)=K2v=k(k×v)(14) \pmb{K}(\pmb{K}\pmb{v})=\pmb{K}^2\pmb{v}=\pmb{k}(\pmb{k}\times\pmb{v}) \tag{14}

由於k\pmb{k}是單位向量,所以k\pmb{k}具有單位的2範數,因此旋轉公式(10)可以表示爲:

vrot=cosθv+(1cosθ)(kv)k+sinθk×v=vv+cosθv+(1cosθ)(kv)k+sinθKv=v(1cosθ)v+(1cosθ)(kv)k+sinθKv=v(1cosθ)(kk)v+(1cosθ)(kv)k+sinθKv=v+(1cosθ)((kv)k(kk)v)+sinθKv=v+(1cosθ)(k×(k×v))+sinθKv=v+(sinθ)Kv+(1cosθ)K2v=(I+(sinθ)K+(1cosθ)K2)v=Rv,K2=1(15) \begin{aligned} \pmb{v}_{rot}&=\cos\theta\pmb{v}+(1-\cos\theta)(\pmb{k}\cdot\pmb{v})\pmb{k}+\sin\theta\pmb{k}\times\pmb{v} \\ &=\pmb{v}-\pmb{v}+\cos\theta\pmb{v}+(1-\cos\theta)(\pmb{k}\cdot\pmb{v})\pmb{k}+\sin\theta\pmb{K}\pmb{v} \\ &=\pmb{v}-(1-\cos\theta)\pmb{v}+(1-\cos\theta)(\pmb{k}\cdot\pmb{v})\pmb{k}+\sin\theta\pmb{K}\pmb{v} \\ &=\pmb{v}-(1-\cos\theta)(\pmb{k}\cdot\pmb{k})\pmb{v}+(1-\cos\theta)(\pmb{k}\cdot\pmb{v})\pmb{k}+\sin\theta\pmb{K}\pmb{v} \\ &=\pmb{v}+(1-\cos\theta)((\pmb{k}\cdot\pmb{v})\pmb{k}-(\pmb{k}\cdot\pmb{k})\pmb{v})+\sin\theta\pmb{K}\pmb{v} \\ &=\pmb{v}+(1-\cos\theta)(\pmb{k}\times(\pmb{k}\times\pmb{v}))+\sin\theta\pmb{K}\pmb{v} \\ &=\pmb{v}+(\sin\theta)\pmb{K}\pmb{v}+(1-\cos\theta)\pmb{K}^2\pmb{v} \\ &=(\pmb{I}+(\sin\theta)\pmb{K}+(1-\cos\theta)\pmb{K}^2)\pmb{v} \\ &=\pmb{R}\pmb{v} \\ ,\|\pmb{K}\|_2&=1 \end{aligned} \tag{15}

有:

R=I+(sinθ)K+(1cosθ)K2(16) \pmb{R}=\pmb{I}+(\sin\theta)\pmb{K}+(1-\cos\theta)\pmb{K}^2 \tag{16}

這是一個繞軸k\pmb{k}逆時針旋轉θ\theta角度的旋轉矩陣,其中I\pmb{I}爲一個3×33\times3的單位矩陣。

矩陣R\pmb{R}是實數空間R3\R^3中旋轉羣SO(3)SO(3)中的元素,K\pmb{K}是生成該李羣的李代數so(3)so(3)中的元素(注意,K\pmb{K}具有so(3)so(3)斜對稱的特徵)。

發佈了80 篇原創文章 · 獲贊 10 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章