四元数左乘右乘_四元数、欧拉角学习笔记个人理解
一、背景知識:點乘、叉乘
復數的點乘:(ai+bj+ck)?(xi+yj+zk)=-(ax+by+cz)
復數的叉乘:(ai+bj+ck)×(xi+yj+zk)=(ax)i×i+(ay)i×j+(az)i×k+(bx)j×i+(by)j×j+(bz)j×k+(cx)k×i+(cy)k×j+(cz)k×k
ijk三軸定義如上圖所示。滿足右手螺旋定則:
(這個不是太明白,但是用的時候確實是這么計算的)
二、二維復數表示旋轉
二維復數可以表示二維平面上的旋轉。
如:定義待旋轉的復數p=2+i,定義旋轉因子q=cos45+isin45
則
如下圖所示
旋轉因子q左乘被旋轉復數p表示p逆時針轉45°。
三、為什么三維旋轉用四維復數表示而不用三維復數
原貼見:
https://blog.csdn.net/u011760195/article/details/85346704
若用實軸x、ij兩個虛軸表示旋轉因子q和被旋轉復數p,那么p繞某個軸轉動時,有: x軸繞j軸轉動:x×(a+bi) [j不出現] i軸繞x軸轉動:i×(a+bj) [x不出現]
此時會出現一個問題,i×j這一項并不能表示實軸x,因為沒有規定。i×i=-1是可以的,但i×j不是實數。因此,由于ijx三軸雖然呈相互垂直關系,但無法用叉乘相互表示,不滿足計算的需求。因此引入四維復數(四元數),在三維復數的基礎上再引入一個虛軸k,而將實軸x=0隱去,此時ijk三軸滿足叉乘相互表示(右手螺旋定則)。
因此,用四維復數替代三維復數只是因為實軸x無法通過ij叉乘表示,不滿足計算需要而已。將四維復數的實部置零,形式上是四維,當實際上用的時候是三維,實部是不需要的。
另一個角度思考:(如被轉復數p=2只含有實部時,這個點既可以說是一維軸上的一個點,也可以說是二維平面內的一個點。低維的點、線、面等都既可以存在于它自身的維度上,又可以存在于任意更高的維度內。)二維中,旋轉因子q=a+bi可以將原本在實軸上的一維的點轉進二維的平面里。乘以幾維的復數就是在幾維空間中進行旋轉,比如乘以四維復數,那么就是在四維空間中進行旋轉。但是旋轉并不一定會把實軸上的一維的p轉到二維平面上去,比如二維平面上有p=2,旋轉因子定義為q=3,那么p、q都可以看做虛部為0的二維復數,此時旋轉p’=q×p=6,此時的旋轉只是在實軸上,并沒有把p轉進二維平面上。四元數表示的三維空間中的旋轉也是這個道理,p是一個純四元數,實部為0,是實實在在的三維空間中的一個向量,我們對p乘以另一個四元數q時,實際上是在四維空間中進行的一個旋轉,只不過如同二維平面上一樣,我們可以通過某種方式讓p的旋轉只保持在三維空間中,而不至于轉到四維空間中去。
另外,引自:
https://blog.csdn.net/linyijiong/article/details/79777399
…所以從始至終,四元數定義的都是四維旋轉,而不是三維旋轉!……說白了,三維旋轉就是四維旋轉的一個特例,就像二維旋轉是三維旋轉的一個特例一樣?!璹pq-1這種左乘單位四元數,右乘其共軛的表達式……這個運算形式是為了限制其運算結果所在的空間。簡單的說,當對一個三維向量進行三維旋轉后,我們希望得到的是一個三維向量。……那么這個左乘單位四元數,右乘其共軛的運算保證了結果是一個在三維超平面上中的純四元數。
四、四元數的書寫表示
設四元數表示為:[s,v],其中s為一個實數,是四元數的實部。v是純虛數,v=xi+yj+zk。則四元數的叉乘計算為:q1×q2=[sa , va]×[sb , vb]=[sa?sb+va?vb , sa?vb+sb?va+va×vb]
定義:
單位四元數:q=[s , v],|q|=1
純四元數:q=[0 , v],即實部為0,是一個三維空間中的向量
五、四元數表示旋轉
原貼見:
https://blog.csdn.net/linyijiong/article/details/79777399
二維空間中,旋轉因子q=cosθ+sinθi,由上一部分的四元數書寫表示,亦可將二維的旋轉因子表示為q=[ cosθ,sinθv],其中v為一維純虛數,v=i。三維空間中既然要用四維復數表示旋轉,那么也可以定義旋轉因子為:q=[ cosθ,sinθv],其中v為三維純虛數,v=ai+bj+cz。(留一個問題:二維平面上q能畫出來,三維空間中這個q呢?)
現有被旋轉三維復數寫成四維的純四元數形式:p=[0,p],旋轉因子q=[ cosθ,sinθv], 則p’=q×p=[ sinθv?p , cosθ?p+ sinθv×p]
①v和p正交時,繞v旋轉45°,則p’=[ 0 , cosθ?p+ sinθv×p]
舉例:p=[0,2i] q=[√2/2,√2/2 v],為了v和p正交,不妨設v=k,
則p’=[0, √2i+√2k×i]=[0, √2i+√2j],旋轉過程如下圖,繞k軸旋轉45°。
② v和p不正交時,繞v旋轉45°,則p’=[ sinθv?p , cosθ?p+ sinθv×p]
舉例:p=[0,2i]不變, q=[√2/2,√2/2 v],為了v和p不正交,不妨設v= √2/2 i+√2/2 k
此時計算p’=q×p=[-1, √2i+j]
可以看到,計算結果p’已經不再是純四元數了,實際上就是p被q轉進了四維空間,而在其純虛數ijk的三維空間內的投影如上圖所示,紅色的p并沒有繞玫紅色的v= √2/2 i+√2/2 k旋轉45°,而且|p’|≠2,被拉伸變形了。
此時Hamilton提出了一種修正算法,
這樣可以算的p’=[0,i+√2j+k],如下圖所示,
此時旋轉后的|p’|=2,沒有被拉伸,但是轉過了90°(p-v平面和p’-v平面夾角為90,即p-v平面繞著v逆時針轉了90°),角度上變為了兩倍,因此進一步修正,令
六、四元數→歐拉角
原貼見:
https://www.cnblogs.com/kljfdsa/p/9093009.html
空間中的三維旋轉可視為繞三個基本軸的旋轉組合疊加,繞 x,y,z (分別代表i,j,k三個軸)三個基本軸旋轉角度分別為 ?,θ,ψ ,則三個基本旋轉的四元素可表征為:
繞三個基本軸的旋轉次序不同,其表征的空間旋轉也不同,下面以ZYX的順序計算(此處根據參考資料撰寫,和前面的幾塊內容在左乘右乘上順序不同,此處是右乘,就是順時針轉動):
則已知四元數時,反求歐拉角:
總結
以上是生活随笔為你收集整理的四元数左乘右乘_四元数、欧拉角学习笔记个人理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 11没有源码注释_我们为什么要看源码、应
- 下一篇: 缓存在哪里_什么是MyBatis缓存技术