blender 萬向坐標軸, 歐拉角 , 3d軟件的實際坐標系統 , 陀螺儀做為坐標軸 ,萬向節死鎖的解釋


https://www.cnblogs.com/delphi-xe5/p/12340038.html

https://www.cnblogs.com/delphi-xe5/p/12340039.html

https://www.cnblogs.com/delphi-xe5/p/12340053.html

https://www.cnblogs.com/psklf/p/5656938.html

參考上面 四個資料 。總結自己的理解

1.  歐拉角  分 靜態  和動態。  靜態就是 旋轉的時候坐標軸 不動 。   這個很簡單沒問題。    動態就是 旋轉的時候坐標軸會跟着動,一般說的都是這個 ,一下默認都是討論 的 坐標軸跟着 動的。

2.歐拉角 有 2 類表示方式。  第一類  zxz   xyx 等等   同一個軸旋轉 2次。      第二類 xyz, yzx 等等 一個軸旋轉一次。  這兩類本質是一樣的,因為坐標軸本身就是垂直的, 第三次轉動使用第一次的軸沒問題。(畫一個圖,實際轉一下就明白,或者在3d軟件下模擬一下,或者看這個文章https://www.cnblogs.com/delphi-xe5/p/12340038.html 里的圖像演示)

默認情況下 3d軟件 使用的都是 xyz 類型的 歐拉角 。

 

3.歐拉角的缺陷:

歐拉角是在世界坐標系下, 按物體本地坐標系(即前面說的動態,跟着坐標軸動的)旋轉的三個角度。   注意 是有順序的 先x軸轉,再y軸轉,再z軸轉。  當然也可以用其他順序。總之必須是固定順序,

所以每一個不同的歐拉角,都是世界坐標系 按順序的三次旋轉得到的(也可理解為局部坐標系, 因為最開始局部坐標系和世界坐標系本身就重合的)。 

在角度不動的時候,沒有任何缺陷,都是完美。

歐拉角的缺陷是加法問題。 當給角度加上一個值,看看會有什么變化,看看影響是否均衡,看看對最終實際結果有啥影響。

舉例子 當另外兩個角度不變,其中一個角度變化的時候: 如下:

-------------------------------------------------------------------------

a1:    x軸0度。 y軸30度,  z軸30度  是一個角度。

a2:    x軸10度。 y軸30度,  z軸30度  是一個角度。

a3:    x軸20度。 y軸30度,  z軸30度  是一個角度。

a4:    x軸30度。 y軸30度,  z軸30度  是一個角度。

a5:    x軸40度。 y軸30度,  z軸30度  是一個角度。

a6:    x軸50度。 y軸30度,  z軸30度  是一個角度。

a1-a6    物體的最終實際角度變化很大。(和后面的比較而言)

-----------------------------------------------------------

b1:    x軸30度。 y軸0度,  z軸30度  是一個角度。

b2:    x軸30度。 y軸10度,  z軸30度  是一個角度。

b3:    x軸30度。 y軸20度,  z軸30度  是一個角度。

b4:    x軸30度。 y軸30度,  z軸30度  是一個角度。

b5:    x軸30度。 y軸40度,  z軸30度  是一個角度。

b6:    x軸30度。 y軸50度,  z軸30度  是一個角度。

b1 到 b6 物體的最終實際角度變化中等。

-------------------------------------------------------

c1:    x軸30度。 y軸30度,  z軸0度  是一個角度。

c2:    x軸30度。 y軸30度,  z軸10度  是一個角度。

c3:    x軸30度。 y軸30度,  z軸20度  是一個角度。

c4:    x軸30度。 y軸30度,  z軸30度  是一個角度。

c5:    x軸30度。 y軸30度,  z軸40度  是一個角度。

c6:    x軸30度。 y軸30度,  z軸50度  是一個角度。

c1 到 c6 物體的最終實際角度變化很小。

-----------------------------------------------

總結: 首先:工a1-a6      相比較   b1-b6,c1-c6        來說,a1 -a 6 對最終實際結果影響比較大。 

其次  a1 - a6 本身     a6的最終實際變化   大於  a1的最終實際變化。

總結: 就是變化很混亂,嚴重不均衡。 

 

4 。兩個 歐拉角 中間值問題  

       兩個歐拉角的中間值  ,就是 x, y,z 的算數平均值 得到新的歐拉角 。 這沒問題。沒毛病。完全ok.

       先x軸轉一個角, 再y軸轉一個角 , 再z軸轉一個角。  一點問題都沒有.

      問題在於歐垃角的表達方式看似很合理, 在靜態下感覺很合理。  

    在動態下,也是對的,沒錯。  但是和人的感覺有沖突。  眼睛的感覺, 從一個角度 轉到另一個角度 是直接轉過去 , 而且是平滑 平穩的 轉過去的。 

   歐拉角經過三個步驟 也沒毛病,是合理的。 但是中間值 不均衡。 為什么不均衡 就是3 說的原因。 因為他本身就不均衡。

  所以要使用四元數來解決中間值問題。這才是均衡的。 但是在靜態下 四元數不性感 ,還是歐拉角性感。 所以兩種方式分別使用。

 

 5  萬向節 死鎖問題:

 這個問題折磨了很久 終於搞通了。    其實這個問題本身不是問題。 是個人的思路,感覺 認識錯誤 造成的。  理性的理解的話 根本不存在萬向節。 

注意:(澄清一點 本行之前的x,y,z角度應該用a,g,c來表示。不然容易和坐標軸重復。 因為本行之前不涉及命名重復問題,所以懶的改了。)

 

 這要從 歐拉角 的 旋轉順序說起,a,b,c三個旋轉角。   xyz歐拉 方向  (按blender 設置來說 xyz歐拉方向   實際是先旋轉c 即繞z軸旋轉, 再繞b即y軸旋轉, 再繞c即x軸旋轉)。  先把已經條件理清除。  不然后面說得都等於0.

假設 m1   :    a=10   , b=20 ,c=30     那么先繞局部坐標z轉30,在y20 再x10度 旋轉。 得到結果。

        m2 :      a=15   , b=25 ,c=35     那么先繞局部坐標z轉35,在y25 再x15度 旋轉。 得到結果。

這都沒問題, 因為都是從 原始坐標旋轉得到的。  清注意,所有的歐拉角 都是從原始世界坐標開始旋轉得到的。  即使是先旋轉了一次, 然后進行第二次旋轉。 那么也要先計算 a,b,c角度的分別和。 然后重新 從世界坐標按 z,y, 按順序旋轉出來。(為什么要如此,因為3的原因, 歐拉角本身不均衡,不具備可加性。只能按定義來)

萬向節產生的原因 就是當你旋轉了一次之后。  再旋轉第二次的時候,錯誤的把第一次旋轉當成了基准。    此時你無法解釋很多東西,你蒙蔽了,軸也有的轉有的不轉,這就是所謂的萬向節。   他大爺的,終於解釋清除了。

 

6; 萬向坐標軸   ,blender 里有一個萬向坐標系。

   應該就是問題5 的延伸。   當以上一次旋轉做為基准的時候,該怎么弄呢?    聰明的陀螺儀出現了。  把陀螺儀做為萬向坐標, 就能很好的實現以上一個旋轉結果 做為基准 ,進行下面的旋轉的要求。

因為陀螺儀 能  把每一次的旋轉 都進行線性累加,  陀螺儀 真牛逼。 直接在陀螺儀上旋轉 。 可以放棄歐拉角了。 牛逼啊。  陀螺儀的旋轉軸, z會影響y,z  。 y會影響x.   所以陀螺儀的y,x坐標會亂跑。但是z坐標穩定。

完結。

 

7. 萬向節死鎖, 用陀螺儀當然也能解釋萬向節死鎖顯現。 但這是另外一個系統。 和歐拉角無關 。

也就是說 旋轉有兩套系統 ,一套是歐拉角 系統。       一套是陀螺儀坐標系統(但是坐標會亂跑,甚至不垂直,甚至重合(就是萬向節));

3d軟件正好使用了  2種方式。

 

 

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM