欧拉角,万向节锁和四元数
一.歐拉角
對于一個3D空間中的一個物體的旋轉,我們都可以理解為圍繞三維空間中的繞著基向量為軸的三次旋轉的結果。
繞基向量為軸的旋轉我們可以用旋轉矩陣來表示,其中Rx,Ry,Rz是沿著x,y,z軸旋轉的旋轉矩陣。
也就是說,3D空間對應的線代變換為:
其中,每一次旋轉變換代表有一個萬向節,這三次旋轉無論角度多少,順序都是固定的。
大部分情況下,這一套旋轉順序都可以使得物體沿著三個彼此正交的軸旋轉,但一些情況下,經過三次旋轉變換后得到的只有繞空間中兩個彼此正交的軸旋轉。
注意,在變換的過程中,x,y,z軸的指向會發生偏移,這里我們定義的空間中的軸為外部世界里恒不變的三個軸
下面以一個例子描述萬向節鎖的產生:
-
首先,沿著x軸旋轉任意角
-
然后,沿著y軸旋轉270°
最后,得到如圖:
這時,我們再沿著此時的z軸旋轉,會發現與第一次旋轉操作的x軸是同一個軸
注意,這里同一個軸也是指外部世界的軸
在定義的x-y-z上經過三次旋轉變換后僅僅覆蓋了兩個外部世界的軸,一個自由度就這樣喪失了,這就產生了萬向節鎖
二.四元數
定義:一個實數加上三個復數構成了一個四元數
有: H = w + xi + yj + zk
i^2 =j^2 =k^2 = ijk = -1
由這個公式可以推出
iijk = -i
-jk = -i
jk = i
同理還有:
ki = j
ij = k
也就是說空間中兩個軸的叉乘可以表示為四元數中的虛部的積
而在三維坐標下的x-y-z軸我們可以理解為對應著i-j-k三個數,三個方向的坐標軸的叉乘剛好等于i-j-k運算的結果,所以我們可以用四元數來表示。
如下圖(左手系):
而在三維空間中的一點,我們也可以用一個純虛四元數(實部為0)來表示。
也就是說空間中的向量除了用矩陣表示外,還可以使用四元數來表示。
總結
以上是生活随笔為你收集整理的欧拉角,万向节锁和四元数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用Python获取某游戏网站热销商品并
- 下一篇: 会声会影x4素材_会声会影2020旗舰版