3D数学读书笔记——3D中的方位与角位移
? 本系列文章由birdlove1987編寫,轉載請注明出處。??
? 文章鏈接:?http://blog.csdn.net/zhurui_idea/article/details/25339595
方位和角位移的基本概念
什么是方位、角位移?
直觀的說,我們知道,物體的“方位”主要描寫敘述物體的朝向,然而,“方向”和“方位”并不全然一樣。向量有“方向”但沒有“方位”,差別在于,當一個向量指向特定方向時,能夠讓向量自轉,但向量卻不會發生不論什么變化,由于向量的屬性僅僅有大小,而沒有厚度和寬度。
然而,當一個物體朝向特定的方向時,讓它和上面向量一樣自轉,我們就會發現物體的方位改變了。
從技術角度來講,這就說明在3D中,僅僅要用兩個參數,就能用參數表示一個方向??墒?#xff0c;要確定一個方位,至少須要三個參數。
描寫敘述物體的方位時,不能使用絕對量。方位是通過于相對已知方位的旋轉來描寫敘述的。旋轉的量稱作角位移。換句話說,在數學上描寫敘述方位就等價于描寫敘述角位移。
ps:我們用矩陣和四元數來表示角位移,用歐拉角來表示方位。
方位表示
矩陣形式
3D中,描寫敘述坐標系中方位的一種方法就是列出這個坐標系的基向量,這些基向量是用其它的坐標系來描寫敘述的。用這些基向量構成一個3x3矩陣,然后就能用矩陣形式來描寫敘述方位。也就是說,能用一個旋轉矩陣來描寫敘述兩個坐標系之間的相對方位,然后用這個旋轉矩陣把一個坐標系中的向量轉換到還有一個坐標系中。
矩陣形式的長處:
1.能夠馬上進行向量的旋轉。
2.矩陣的形式被圖形API所用。
3.多個角位移連接。
矩陣形式的缺點:
1.矩陣占用很多其它的內存。
2.難于使用,不太直觀。
3.矩陣可能是病態的(數據冗余)
四元數表示
四元數的“差”被定義為一個方位到還有一個方位的角位移。ps:上篇筆記中具體的記錄的四元數的相關性質,這里就不在過多說明了。
四元數表示的長處:
1.平滑插值。
2.高速連接和角位移求逆。
3.能和矩陣形式高速轉換。
4.僅有四個數,節省空間。
四元數表示的缺點:
1.比歐拉角略微大一些。
2.四元數可能不合法。
3.難于使用。
歐拉角
歷史淵源:歐拉角著名的數學家Leonhard Euler的名字命名,他證明了角位移序列等價于單個角位移。
歐拉角的基本思想是將角位移分解為繞三個相互垂直軸的三個旋轉組成的序列。隨意的三個軸和隨意的序列都能夠,但最有意義的是使用笛卡爾坐標系并按一定順序所組成的旋轉序列。
歐拉角表示角位移的長處:
1.歐拉角對我們來說非常easy使用。
2.最簡潔的表達方式。
3.隨意三個數都是合法的。
歐拉角表示角位移的缺點:
1.給定的表達方式不唯一(旋轉序列不唯一導致)。
2.兩個角度間求插值很困難。
各方法比較
| 任務/性質 | 矩陣 | 歐拉角 | 四元數 |
| 在坐標系間旋轉點 | 能 | 不能(必須轉換到矩陣) | 不能(必須轉換到矩陣) |
| 連接或增量旋轉 | 能,但比四元數慢,會有矩陣蠕變 | 不能 | 能,比矩陣塊 |
| 插值 | 基本上不能 | 能,但可能遭遇萬向鎖 | Slerp提供了平滑插值 |
| 易用程度 | 難 | 易 | 難 |
| 在內存或文件里的存儲 | 9個數 | 3個數 | 4個數 |
| 對給定方位的表達式方式是否唯一 | 唯一 | 不唯一,對允許方位有無數種表示方法 | 不唯一,有兩種表示方法,相互為負 |
| 可能導致非法 | 矩陣蠕變 | 隨意三個數構成合法地歐拉角 | 可能出現差積累,從而產生非法的四元數 |
不同方位表示方法的建議:
1.歐拉角最easy使用。
2.假設須要在坐標系之間轉換向量,那么就選擇矩陣形式。
3.當須要大量保持方位數據時,就使用歐拉角或四元數。
4.平滑插值僅僅能用四元數來完畢。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??-End-
?
?參考文獻: (1)《3D Math Primer for Graphics and Game Development》
???????????????? (2) 維基百科
轉載于:https://www.cnblogs.com/zfyouxi/p/3774084.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的3D数学读书笔记——3D中的方位与角位移的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PDF数据防扩散系统方案
- 下一篇: linux下格式化U盘