四元數與尤拉角

2021-10-08 03:04:25 字數 1965 閱讀 2671

尤拉角與四元數都被用來處理影象學中的旋轉。兩者各有優劣,下面我們對它們做詳細的比較。

尤拉角是表示朝向的最簡單最直觀方法,只需儲存繞 x、y、z 軸旋轉的角度,非常容易理解。你可以用vec3來儲存乙個尤拉角:

vec3 eulerangles

( rotationaroundxinradians, rotationaroundyinradians, rotationaroundzinradians)

;

這三個旋轉是依次施加的,通常的順序是:y-z-x(但並非一定要按照這種順序)。順序不同,產生的結果也不同。

不過,面對更加複雜的情況時,尤拉角就顯得力不從心了。例如:

四元數由4個數 [x y z w] 構成(這裡我們不考慮數學上的定義,只考慮影象學方面的應用),rotationaxis 為旋轉軸,rotationangle 為旋轉的角度。下圖的旋轉用四元數可表示為:

四元數的形式不如尤拉角直觀,xyz

xyzxy

z 分量大致代表了各個軸上的旋轉分量,而w

=cos⁡(

rota

tion

angl

e/2)

w=\cos(rotationangle/2)

w=cos(ro

tati

onan

gle/

2)。舉個例子,假設你在偵錯程式中看到了這樣的值[

0.70

00.7

][ 0.7\ 0\ 0\ 0.7 ]

[0.700

0.7]

。x

=0.7

x=0.7

x=0.

7,比 y

yy、z

zz 的大,因此主要是在繞 x 軸旋轉;而 2

arccos⁡(

0.7)

=1.59

2\arccos(0.7) = 1.59

2arccos(0

.7)=

1.59

弧度,所以旋轉角度應該是 90

°90°

90°。

同理,[00

01](

w=1)

[0\ 0\ 0\ 1] (w=1)

[0001]

(w=1

) 表示 rot

atio

nang

le=2

arccos⁡(

1)=0

rotationangle = 2\arccos(1) = 0

rotati

onan

gle=

2arccos(1

)=0,當旋轉角度為 0

00 時因此這是乙個單位四元數(unit quaternion),表示沒有旋轉。

// ogre 中的實現

mat4 torotationmatrix

(quat& q)

參考資料

[1] opengl 教程 旋轉 :

[2] ogre quaternion :

尤拉角與四元數

尤拉角是表達旋轉的最簡單的一種方式,形式上它是乙個三維向量,其值分別代表物體繞座標系三個軸 x,y,z軸 的旋轉角度。第一張 pitch,航空領域表示飛機的俯仰角。繞x軸轉動結果 第二張 yaw,表示飛機的偏航角,繞y軸轉動結果 第三張 roll,表示飛機的翻滾角,繞z軸轉動結果。四元數是由愛爾蘭數...

四元數和尤拉角

1.尤拉角 我們這裡談論尤拉角只討論在笛卡爾座標系下,不考慮飛機座標系 我不確定正規是不是叫這個名字 那種。也就是右手定則確定的笛卡爾座標系。可以把x和y放在水平面,z軸朝上,這樣想象一下。然後,很顯然存在三種旋轉方式,也就是分別繞x,繞y和繞z旋轉。我們分別把三種旋轉稱為roll 繞x軸旋轉 pi...

四元數與尤拉角之間的轉換

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