尤拉角用來計算空間中剛體的旋轉位置,目的是改變剛體的朝向.
具體來說,空間中有乙個點p和一根軸k,點p繞軸k旋轉θ角度到p',求p'的座標.這就是尤拉角要解決的問題.
只不過,尤拉角將1個點繞1根軸旋轉1個角"轉化為"1個點繞3個軸連續旋轉3個角".
尤拉角的最終目的是為了改變剛體的朝向,剛體可以看做向量的集合,所有的向量都繞著同乙個軸旋轉相同的角度,達到改變剛體朝向的目的.
這裡用"朝向"來描述剛體的位置變化,是為了表明剛體圍繞某個目標變化其位置.從數學角度理解,將目標抽象為旋轉軸.旋轉軸可以在剛體上,也可以在剛體之外,事實上可以在任何位置.
尤拉角分為內旋(動態)尤拉角和外旋(靜態)尤拉角.
內旋尤拉角旋轉矩陣的推導過程
剛體及其座標系ox0y0z0繞oz0逆時針旋轉γ角度,設旋轉後的新座標係為ox1y1z1.
剛體及其座標系ox1y1z1繞ox1逆時針旋轉α角度,設旋轉後的新座標係為ox2y2z2.
剛體及其座標系ox2y2z2繞oy2逆時針旋轉β角度,設旋轉後的新座標係為ox3y3z3.
這就是內旋尤拉角的旋轉過程,如下圖所示:
旋轉軸序:z0-x1-y2;角序(γ,α,β).
因為剛體上的p點隨著活動座標系同步旋轉,所以旋轉完成後p點在活動座標系ox3y3z3中對應的向量v3=v;求此時(完成3次旋轉後)p點在ox0y0z0/oxyz中的向量v30及復合旋轉矩陣r(γ,α,β)?
注意v3和v30的關係,這兩個向量描述空間中同乙個點p在兩個不同座標系(ox3y3z3,ox0y0z0)中的位置,需要將座標系ox3y3z3中的v3變換到ox0y0z0中的v30.設變換矩陣r,那麼v30 = r *v3.
根據條件,需要間接計算r,本質上其實是三次座標變換:
將ox3y3z3中的v3變換到ox2y2z2中的v32,相當於ox3y3z3繞y3軸順時針旋轉β到ox2y2z2位置(旋轉方向x3 => z3).設基礎變換矩陣r(y3,β),則:v32 = r(y3,β) *v3.,求得:
2.將ox2y2z2中的v32變換到ox1y1z1中的v31,相當於ox3y3z3從ox2y2z2位置繞x2軸順時針旋轉α角度到ox1y1z1位置(旋轉方向z2 => y2)設基礎變換矩陣r(x2,α),則:v31 = r(x2,α) *v32.,求得:
3.將ox1y1z1中的v31變換到ox0y0z0中的v30,相當於ox3y3z3從ox1y1z1位置繞z1軸順時針旋轉γ角度到ox0y0z0位置(旋轉方向y1 => z1)設基礎變換矩陣r(z1,γ),則:v30 = r(z1,γ) *v31.,求得:
變換關係推導,v30 = r(z1,γ) *v31 = r(z1,γ) * r(x2,α) *v32 = r(z1,γ) * r(x2,α) * r(y3,β) *v3 = r *v3 = r *v.
這3個基礎變換矩陣就是內旋尤拉角(γ,α,β)連續繞軸z0-x1-y2旋轉對應的3個基礎旋轉矩陣;復合變換矩陣r就是復合旋轉矩陣r(γ,α,β): r(γ,α,β) = r = r(z1,γ) * r(x2,α) * r(y3,β),最終求得:
這個結果與萬維百科的結果相同(該網頁底部的表最後乙個,只是這裡表示尤拉角的符號順序跟表中的不一樣,替換掉就行了),如下圖所示:
表中的z1x2y3=......是軸序:y-x-z的外旋尤拉角(α, β, γ)的復合旋轉矩陣;不過沒關係,軸序相反(z0-x1-y2),角序相同的動態尤拉角(α,β,γ)也是這個旋轉矩陣.
注:所謂旋轉矩陣,是針對點p在固定座標系oxyz中旋轉而言,假設沒有活動座標系參與,那麼點p在固定座標系oxyz中其實繞著3條直線(分別與活動座標系3個軸z0-x1-y2重合)旋轉,直接求這3個旋轉矩陣很困難,所以要通過座標變換的方法間接求旋轉矩陣。
外旋尤拉角旋轉矩陣的推導過程
外旋尤拉角很容易理解,就是剛體在固定座標系oxyz中繞座標軸旋轉,將問題簡化為剛體上的點p在固定座標系oxyz中繞座標軸y-x-z分別旋轉(γ,α,β)角度,其實並不涉及活動座標系,只不過為了跟內旋尤拉角對比,這裡仍然令活動座標系參與旋轉.
設初始狀態p點在固定座標系oxyz中的向量v.
剛體活動座標系ox0y0z0繞oy軸逆時針旋轉γ角度,設旋轉後的新座標係為ox1y1z1,v旋轉到v1,設基礎旋轉矩陣r(y,γ),有:v1 = r(y,γ) *v.
2.剛體活動活動座標系ox1y1z1繞ox軸逆時針旋轉α角度,設旋轉後的新座標係為ox2y2z2,v1旋轉到v2,設基礎旋轉矩陣r(x,α),有:v2 = r(x,α) *v1.
3.剛體活動活動座標系ox2y2z2繞oz軸逆時針旋轉β角度,設旋轉後的新座標係為ox3y3z3,v2旋轉到v3,設基礎旋轉矩陣r(z,β),有:v3 = r(z,β) *v2.
設復合旋轉矩陣r(γ,α,β),有:v3 = r(z,β) *v2= r(z,β) * r(x,α) *v1= r(z,β) * r(x,α) * r(y,γ) *v= r(γ,α,β) * v,求得:
結果與萬維百科的結果相同(上面那個圖表,只是這裡表示尤拉角的符號順序跟表中不一樣,替換的即可).
內旋尤拉角和外旋尤拉角旋轉矩陣對比,對旋轉的理解
比較上述內旋尤拉角復合旋轉矩陣r(γ,α,β)和外旋尤拉角復合旋轉矩陣r(γ,α,β),發現r(γ,α,β) = r(γ,α,β).由此可以得出乙個結論,角序相同,軸序相反(當然軸所在的座標系不同)的內,外旋尤拉角復合旋轉矩陣相同.
可見,內旋尤拉角和外旋尤拉角只是用不同的計算方法來解決同乙個問題.
如果將三次旋轉合併為一次旋轉,就是軸角法.
尤拉角和旋轉矩陣的轉換
尤拉角是一種常用的描述方位的方法。這項技術是著名數學家leonhard euler 1707 1783 的名字命名的,他證明了角位移序列等價於單個角位移。想詳細了解的維基百科 1,什麼是尤拉角 尤拉角的基本思想是將角位移分解為繞三個互相垂直軸的三個旋轉組成的序列。這聽起來複雜,其實它是非常直觀的。之...
尤拉角和旋轉矩陣相互轉換
尤拉角和旋轉矩陣可同樣表示剛體在三維空間的旋轉,下面分享這兩者互相轉換的方法和核心 功能 1.通過給定的尤拉角計算對應的旋轉矩陣 日期 2017 10 12 mat euleranglestorotationmatrix vec3f theta 功能 1.檢查是否是旋轉矩陣 日期 2017 10 1...
尤拉角和旋轉矩陣相互轉換
目錄 1.參考資料 2.變換矩陣 f h的svd分解或者旋轉矩陣 平移矩陣求解 3.尤拉角和旋轉矩陣可同樣表示剛體在三維空間的旋轉,下面分享這兩者互相轉換的方法和核心 尤拉角計算對應的旋轉矩陣 mat euleranglestorotationmatrix vec3f theta 功能 檢查是否是旋...