banner
IWSR

IWSR

我永远喜欢志喜屋梦子!

歐拉角與萬向鎖

說明#

  • 預先閱讀:三維圖形基本幾何變換的矩陣推導
  • 對於在三維空間中的一個參考系,任何坐標系的取向,都可以用三個歐拉角來表現。(三個歐拉角變換可以描述當前物體的姿態)
  • 俯仰(繞 z 軸旋轉)、偏航(繞 y 軸旋轉)、滾動(繞 x 軸旋轉)了解下就行
  • 由於線性變換不符合交換律,那麼旋轉順序的不同便會影響結果,下文以動態歐拉角(z-y-x)分析

動態歐拉角#

在 [三維圖形基本幾何變換的矩陣推導](https://github.com/IWSR/BLOG/issues/2) 中已經推導出了分別繞 X、Y、Z 軸旋轉的旋轉矩陣即

Rzγ=(cosγsinγ00sinγcosγ0000100001)R_{z}γ = \begin{pmatrix} cosγ & -sinγ & 0 & 0 \\ sinγ & cosγ & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}
Ryβ=(cosβ0sinβ00100sinβ0cosβ00001)R_{y}β = \begin{pmatrix} cosβ & 0 & sinβ & 0 \\ 0 & 1 & 0 & 0 \\ -sinβ & 0 & cosβ & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}
Rxα=(10000cosαsinα00sinαcosα00001)R_{x}α = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & cosα & -sinα & 0 \\ 0 & sinα & cosα & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}

那麼如果按動態歐拉角的變換順序,我們將得到變換矩陣 R=RxαRyβRzγR=R_{x}αR_{y}βR_{z}γ

R=RxαRyβRzγ=(cosβcosγcosαsinγ+sinαsinβcosγsinαsinγ+cosαsinβcosγ0cosβsinγcosαcosγ+sinαsinβsinγsinαcosγ+cosαsinβsinγ0sinβsinαcosβcosαcosβ00001)R= R_{x}αR_{y}βR_{z}γ = \begin{pmatrix} \cos β\cos γ & -\cos α\sin γ + \sin α\sin β\cos γ & \sin α \sin γ+ \cos α \sin β \cos γ & 0 \\ \cos β\sin γ & \cos α\cos γ + \sin α\sin β\sin γ & -\sin α \cos γ+ \cos α \sin β \sin γ & 0 \\ -\sin β & \sin α\cos β & \cos α\cos β & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}

萬向鎖#

一旦選擇 ±90° 作為 pitch 角,就會導致第一次旋轉和第三次旋轉等價,整個旋轉表示系統被限制在只能繞豎直軸旋轉,丟失了一個表示維度。

上面那段引言用人話說就是當 β 為 ±90° 時,繞 x 旋轉與繞 z 軸旋轉在結果上會等效。

萬向鎖這個問題如果直接使用變換矩陣 R 來解釋的話會很直觀,就如下面我們把 β = 90° 代入方程並化簡

R=RxαRy90°Rzγ=(10000cosαsinα00sinαcosα00001)(0010010010000001)(cosγsinγ00sinγcosγ0000100001)=(0010sin(α+γ)cos(α+γ)00cos(α+γ)sin(α+γ)000001)R = R_{x}αR_{y}90°R_{z}γ = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & cosα & -sinα & 0 \\ 0 & sinα & cosα & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ -1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} cosγ & -sinγ & 0 & 0 \\ sinγ & cosγ & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} 0 & 0 & 1 & 0 \\ sin(α + γ) & cos(α + γ) & 0 & 0 \\ -cos(α + γ) & sin(α + γ) & 0 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}

很容易發現影響變換矩陣 R 的變量為 α + γ,而在幾何上則體現為繞 x 軸的旋轉表現與繞 z 軸等效,舉例說明則是

Rx30°Ry90°Rz50°=Rx0°Ry90°Rz80°R_{x}30°R_{y}90°R_{z}50° = R_{x}0°R_{y}90°R_{z}80°

這裡需要強調一下,本文中的旋轉順序為 z-y-x,上面的例子可描述為物體繞 z 軸旋轉 80°、繞 y 軸旋轉 90°、繞 x 軸旋轉 0° 其姿態與繞 z 軸旋轉 80°、繞 y 軸旋轉 90°、繞 x 軸旋轉 0° 相同。也就是產生萬向鎖時,空間中物體可通過多種不同的旋轉方式轉變為某一個特定姿態,即變換與其結果並非一一對應,而這在工程上的體現便是動畫插幀會變得極其詭異。

Dec-05-2022 17-25-40
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。