四元數 尤拉角學習筆記 個人理解

2021-10-09 22:02:51 字數 3608 閱讀 9019

i、j、k三軸定義如上圖所示。滿足右手螺旋定則:

複數的乘法:(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 = -(aa+bb+c*c)+(bz-cy)i+(cx-az)j+(ay-bx)z

向量內積:(a,b,c)·(x,y,z) = ax+by+cz

向量外積:

(e1、e2、e3分別為i、j、k三軸上的單位向量)

由此可知:

複數乘法(ai+bj+ck)×(xi+yj+zk)=-(向量內積)+(向量外積) 【形式上相等】

二維複數可以表示二維平面上的旋轉。

如:定義待旋轉的複數p=2+i,定義旋轉因子q=cos45+isin45

則如下圖所示

旋轉因子q左乘被旋轉複數p表示p逆時針轉45°。

原貼見:

若用實軸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不是實數。因此,由於i、j、x三軸雖然呈相互垂直關係,但無法用叉乘相互表示,不滿足計算的需求。因此引入四維複數(四元數),在三維複數的基礎上再引入乙個虛軸k,而將實軸x=0隱去,此時ijk三軸滿足叉乘相互表示(右手螺旋定則)。

因此,用四維複數替代三維複數只是因為實軸x無法通過i×j表示,不滿足計算需要而已。將四維複數的實部置零,形式上是四維,當實際上用的時候是三維,實部是不需要的。

另乙個角度思考:(如被轉複數p=2只含有實部時,這個點既可以說是一維軸上的乙個點,也可以說是二維平面內的乙個點。低維的點、線、麵等都既可以存在於它自身的維度上,又可以存在於任意更高的維度內。)二維中,旋轉因子q=a+bi可以將原本在實軸上的一維的點轉進二維的平面裡。乘以幾維的複數就是在幾維空間中進行旋轉,比如乘以四維複數,那麼就是在四維空間中進行旋轉。但是旋轉並不一定會把實軸上的一維的p轉到二維平面上去,比如二維平面上有p=2,旋轉因子定義為q=3,那麼p、q都可以看做虛部為0的二維複數,此時旋轉p』=q×p=6,此時的旋轉只是在實軸上,並沒有把p轉進二維平面上。四元數表示的三維空間中的旋轉也是這個道理,p是乙個純四元數,實部為0,是實實在在的三維空間中的乙個向量,我們對p乘以另乙個四元數q時,實際上是在四維空間中進行的乙個旋轉,只不過如同二維平面上一樣,我們可以通過某種方式讓p的旋轉只保持在三維空間中,而不至於轉到四維空間中去。

另外,引自:

…所以從始至終,四元數定義的都是四維旋轉,而不是三維旋轉!……說白了,三維旋轉就是四維旋轉的乙個特例,就像二維旋轉是三維旋轉的乙個特例一樣。……qpq-1這種左乘單位四元數,右乘其共軛的表示式……這個運算形式是為了限制其運算結果所在的空間。簡單的說,當對乙個三維向量進行三維旋轉後,我們希望得到的是乙個三維向量。……那麼這個左乘單位四元數,右乘其共軛的運算保證了結果是乙個在三維超平面上中的純四元數。

設四元數表示為:[s,v],其中s為乙個實數,是四元數的實部。v是3維向量(或看成3維純虛數),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,是乙個三維空間中的向量

原貼見:

二維空間中,旋轉因子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°),角度上變為了兩倍,因此進一步修正,令

原貼見:

空間中的三維旋轉可視為繞三個基本軸的旋轉組合疊加,繞 x,y,z (分別代表i,j,k三個軸)三個基本軸旋轉角度分別為 ϕ,θ,ψ ,則三個基本旋轉的四元素可表徵為:

繞三個基本軸的旋轉次序不同,其表徵的空間旋轉也不同,下面以zyx的順序計算(此處根據參考資料撰寫,和前面的幾塊內容在左乘右乘上順序不同,此處是右乘,就是順時針轉動):

則已知四元數時,反求尤拉角:

四元數和尤拉角的個人理解

歐垃角可以表示兩個座標之間的轉換,但是存在一些弊端,比如永珍鎖,四元數也可以表述 問題分析 比如,乙個座標系繞y軸旋轉pi 2,那麼我們就可以用尤拉角roll,pitch,yaw和四元數x,y,z,w進行表述,w cos theta 2 x ax sin theta 2 y ay sin theta...

四元數左乘右乘 四元數 尤拉角學習筆記 個人理解

一 背景知識 點乘 叉乘 複數的點乘 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三軸定義如上圖所示。滿足右手...

四元數和尤拉角學習

在3d圖形學中,最常用的旋轉表示方法便是四元數和尤拉角,比起矩陣來具有節省儲存空間和方便插值的優點。本文主要歸納了兩種表達方式的轉換,計算公式採用3d笛卡爾座標系 圖1 3d cartesian coordinate system from wikipedia 定義圖2 tait bryan ang...