尤拉角萬向節死鎖(從定義下手理解)

2021-10-08 11:01:09 字數 669 閱讀 9433

這個萬向節死鎖困擾了我好幾天,查遍了網路上的部落格,基本都是通過乙個陀螺儀來講解。這種講解方式忽略了很重要的一點,讓人難以理解,看我講解。

尤拉角有兩種 

靜態的,靜態是世界座標旋轉不會有死鎖的情況。

動態的,自身座標隨物體旋轉而改變

從動態尤拉角我做了很多次測試發現並不能死鎖,所以我從定義下手。

首先需要知道什麼是一次尤拉旋轉,不是某個軸旋轉,而是沿著三個軸都旋轉結束後稱為一次尤拉旋轉,我們想象一下,乙個物體沿著y軸旋轉45°,那這個物體的x軸和z軸是也跟著旋轉嗎?定義中的(自身座標隨物體旋轉而改變)是針對乙個尤拉旋轉,並不是

繞某個軸旋**身座標也跟著旋轉,所以x軸和z軸是不動的,繼續繞x軸旋轉90°,那麼此時y軸要跟著旋轉嗎?答案是要的因為我們之後的軸旋轉已經不涉及到y軸的旋轉了,動態尤拉角是旋轉過的軸需要隨物體旋轉而改變,未旋轉的軸不能改變。繼續繞z軸旋轉0°,那現在我們自身的座標軸就在乙個二維平面裡面了(y軸和z軸是平行的),x軸垂直與這兩個軸,這中情況就是萬向節死鎖了。

下面從定義總結一下動態的尤拉旋轉

1 三個軸全部旋轉完畢是一次尤拉旋轉

2 未旋轉的軸不跟隨當前旋轉而旋轉,旋轉過的軸跟著當前旋轉而旋轉

3 尤拉旋轉結果跟xyz軸旋轉的順序有關(unity定義的旋轉順序是yzx)

4 當兩個軸平行的時候會產生萬向節死鎖(無法旋轉到某個位置)

尤拉角與萬向節死鎖

d3dxmatrix d3dxmatrixrotationyawpitchroll d3dxmatrix pout,float yaw,繞y軸的轉動角 float pitch,繞x軸的轉動角 float roll 繞z軸的轉動角 the order of transformations is rol...

尤拉角死鎖 萬向節死鎖原因

什麼是尤拉旋轉 transform.rotate x,y,z 上面是unity中,旋轉的表示的常用方法,裡面的三個分量x y z就是尤拉角,這三個分量分別是繞x軸 y軸 z軸旋轉的角度。靜態尤拉角 transform.rotate new vector3 0,10,0 space.world 物體圍...

萬向節死鎖 萬向節死鎖 gimbal lock

如下圖一,把灰色箭頭想象成是一架飛機,紅,綠藍三個圈看作是三個外圍控制器,外圈帶動所有裡圈運動,裡圈的運動不影響外圈。1,首先,繞y軸旋轉 旋轉綠圈 來確定前進的方向。這時紅圈與藍圈都跟著旋轉。2,然後,繞x軸旋轉 旋轉紅圈 讓飛機仰視或俯視。這時藍圈跟著一起旋轉,綠圈不動。3,最後,繞z軸旋轉 旋...