羅德里格斯旋轉方程是從角度和向量計算出相應的旋轉矩陣,這個旋轉方程在很多方面有重要的應用,這裡簡要概述一下方程的推導過程。
維基百科-羅德里格斯方程
推導過程:
整個推導過程都是圍繞上面的開展的,進行向量推導。
首先,定義向量k是旋轉軸的單位向量,向量v是繞向量k旋轉角度θ
的任意向量(旋轉方向遵循右手定則,圖中逆時針)。
使用點乘和叉乘,向量v可以分解成與軸k平行和垂直的分量,
與k平行的分量是
向量v在k上的向量投影,垂直於k的分量為
向量k×v可以看作是v⊥繞k逆時針旋轉90°的副本,所以它們的大小相等,但是方向是垂直的。同樣,向量k×(k×v)是v⊥繞k逆時針旋轉180°的副本,使得k×(k×v)和v⊥的大小相等,但方向相反(因此符號相反)。
向量三重叉積鏈結了平行分量和垂直分量,參考公式為a×(b×c)=(a·c)b - (a·b)c ,對於給定任意三個向量a,b,c。
平行於軸的分量在旋轉時不會改變幅度和方向,
根據以上分析,垂直分量在旋轉時會改變方向,但保持其大小
並且由於k和v||是平行的,所以它們的叉積是零 k×v|| = 0,因此
因此這種旋轉是正確的,因為向量v⊥和k×v具有相同的長度,並且k×v是v⊥圍繞k逆時針旋轉90°。
使用三角函式正弦和余弦對v⊥和k×v進行適當乘積可以得到旋轉的垂直分量。
旋轉分量的形式類似於笛卡爾基的2d平面極座標(r,θ)中的徑向向量
其中ex,ey是它們指示方向上的單位向量。
現在完整的旋轉向量是
用上述結果中的v ||rot和v⊥rot的定義代替
矩陣表示:
將v和k×v表示為列矩陣,叉積可以表示為矩陣乘積
令矩陣k表示單位向量k的「叉積矩陣"
矩陣方程可以表示為
對於任何向量v(實際上,矩陣k是具有特徵值0和±i)。
迭代右邊的叉乘相當於乘以左邊的叉積矩陣,如下
而且,由於k是單位向量,所以k具有單位2-範數。 因此旋轉公式(1-10)可以表示為
補充一下推導過程:(1-10)到(1-15)都點跨度比較大,其實中間經過了下面乙個步驟,
再根據向量三重叉積
就可以獲得(1-15)。
將v用緊湊表示式表達
最後獲得羅德里格斯旋轉方程:
羅德里格斯公式推導
k為單位向量,向量v繞旋轉軸k旋轉 得到向量vrot,那麼就有下面的旋轉方程使等式成立 vrot rv 而這個旋轉方程就是羅德里格斯方程 r cos i 1 cos kk sin k 下面開始推導 向量分解 v v k k 向量點乘得標量,k為單位向量 vrot vrot v vrot a b 由圖...
羅德里格斯公式的證明
羅德里格斯的旋轉公式 這篇文章是關於羅德里格斯的旋轉公式,它與相關的尤拉羅德里格斯引數和尤拉羅德里格斯公式的3d旋轉不同。在三維旋轉理論中,對於給定旋轉軸和旋轉角度,以olinde rodrigues命名的羅德里格斯公式是用於在空間旋轉向量的高效演算法。通過擴充套件,它可以用於把所有軸角表達的三維向...
雙目測距(四) 羅德里格斯變換
原文 從今天開始,把自己學習opencv的心得記錄下來,以系列的形式貼到部落格中,以期交流與備查之用,筆記內容主要偏向於演算法的理解。處理三維旋轉問題時,通常採用旋轉矩陣的方式來描述。乙個向量乘以旋轉矩陣等價於向量以某種方式進行旋轉。除了採用旋轉矩陣描述外,還可以用旋轉向量來描述旋轉,旋轉向量的長度...