3D數學基礎 2 尤拉角的萬向鎖

2021-10-04 04:51:37 字數 2288 閱讀 4203

靜態

:即繞世界

座標系三個軸的旋轉,由於物體旋轉過程中

座標軸保持靜止

,所以稱為靜態。

動態

:即繞物體

座標系三個軸的旋轉,由於物體旋轉過程中

座標軸隨著物體做相同的轉動

,所以稱為動態。

物體的任何一種旋轉都可分解為分別繞三個軸的旋轉,但分解方式不唯一。

如:假設繞y軸旋轉為heading,繞x軸旋轉為pitch,繞z軸旋轉為bank,則heading45°---->pitch90°等價於pitch90° ----> bank45°。

如heading xx°---->pitch xx°----->bank xx°,對於左手座標系就是,先繞y軸旋轉xx°--->繞x軸旋轉xx°---->繞z旋轉xx°

而且對於動態尤拉角來說,旋轉父層級的軸會帶動子層級的軸一起旋轉。如旋轉順序y--->x--->z。寫成父子層級關係就是:

---y(最父層級)

---x

---z

旋轉y軸時,x,z軸和物體都會跟著旋轉;

旋轉x軸時,z軸和物體會跟著旋轉;

旋轉z軸時,只有物體會旋轉。

(1)用3個旋轉圓環來模擬繞笛卡爾左手座標系3個軸x(紅),y(綠),z(藍)的旋轉,它們的旋轉順序為y--->x--->z,父子層級如下圖坐上角所示。

(2)由於是動態尤拉角,當旋轉x軸(紅)90°,z軸(藍)也會跟著轉90°。

(3)此時,會導致z軸與y軸共乙個平面。

(4)如果此時你想讓箭頭的頭部往下旋轉,會發現沒有旋轉軸了。

(5)消失的旋轉軸:

如果此時你還想讓箭頭的頭部往下旋轉。就會導致箭頭的頭部行動軌跡並不是沿著某個軸旋轉。

在最上面的定理中,任何旋轉都能被分解為多個繞某個軸旋轉的步驟(如乙個旋轉被分解為:先繞y軸旋轉xx°---->繞x軸旋轉xx°---->再繞z軸旋轉xx°)。

當兩個旋轉軸共面後(產生萬向鎖後),並

不能將這個旋轉分解為多個繞某個軸旋轉的步驟,而是自己畫出了乙個不同的弧線,這種旋轉就是不合理的。

此時的現象就是萬向鎖。

(6)解決這個萬向鎖的方法:改變旋轉順序,y--->x--->z  變為  y--->z--->x

此時父子層級表示為:y仍然是最父層級,x與z調換位置

但是改變旋轉順序(父子層級)並不能完全避免萬向鎖,他還是會出現。

接著上圖,如圖z軸旋轉90°,因為父子層級關係,x軸會跟著旋轉90°,此時還是會導致y軸與x軸共面:

所以無論什麼樣的旋轉順序,只要使用動態尤拉角都會產生萬向鎖。

3D數學基礎 3D遊戲動畫中尤拉角與萬向鎖的理解

the order of transformations is roll first,then pitch,then yaw.relative to the object s local coordinate axis,this is equivalent to rotation around th...

3D數學基礎 3D遊戲動畫中尤拉角與萬向鎖的理解

the order of transformations is roll first,then pitch,then yaw.relative to the object s local coordinate axis,this is equivalent to rotation around th...

3D數學基礎 尤拉角

旋轉是對物體的一種操作,而朝向則是物體的一種狀態,在對物體進行旋轉時就會改變物體的朝向狀態。我們可以很快的構建乙個旋轉矩陣來對物體進行旋轉,但在進行矩陣的構建時難度卻很大,我們需要獲取旋轉軸的朝向等是非常困難的。尤拉角的核心思想是將需要旋轉的角度分為繞座標軸的三個座標軸旋轉的三個角度的組合。是一由單...