3D中的方位和角位移(8) 摘要:
為了將角位移從歐拉角轉(zhuǎn)換到四元數(shù),可以使用從歐拉角構(gòu)造矩陣類似的方法。先將這三個旋轉(zhuǎn)分別轉(zhuǎn)換為四元數(shù),這是一個簡單的運算。再將這三個四元數(shù)連接成一個四元數(shù)。和矩陣一樣,有兩種情況需要考慮,第一種是慣性
-- 物體四元數(shù),第二種是物體-- 慣性四元數(shù)。因為它們互為共軛關(guān)系,所以我們只推導(dǎo)慣性--物體四元數(shù)。
3D中的方位和角位移(7) 摘要: 為了將角位移從四元數(shù)轉(zhuǎn)換到矩陣形式,可以利用旋轉(zhuǎn)矩陣,它能計算繞任意軸的旋轉(zhuǎn):
這個矩陣是用n和θ表示的,但四元數(shù)的分量是:
w = cos(θ/2)
x = nx sin(θ/2)
y = ny sin(θ/2)
z = nz sin(θ/2)
3D中的方位和角位移(6) 摘要: Slerp提供了兩個方位間的插值,當(dāng)有多于兩個的方位序列(它描述了我們想要經(jīng)過的插值“路徑”)時怎么辦?我們可以在”控制點“之間使用slerp。類似于基本幾何學(xué)中的線性插值,控制點之間是以直線連接的。顯然,控制點上會有不連續(xù)性
---- 這是我們想要避免的,我們給出squad(Spherical and Quadrangle)的公式,用來描繪控制點間的路徑。
設(shè)控制點由四元數(shù)序列所定義:
q1,q2,q3,…qn-2,qn-1,qn
3D中的方位和角位移(5) 摘要: 首先,讓我們重寫四元數(shù)的定義,引入一個新的變量α,等于半角θ/2:
α = θ/2
|| n || = 1
q = [cosα nsinα] = [cosα xsinα ysinα zsinα]
3D中的方位和角位移(4) 摘要: 四元數(shù)能根據(jù)復(fù)數(shù)乘法解釋來相乘,如下:
這導(dǎo)出了四元數(shù)乘法的標(biāo)準(zhǔn)定義,下面以兩種四元數(shù)記法給出,見公式10.9:
3D中的方位和角位移(3) 摘要: 一個四元數(shù)包含一個標(biāo)量和一個3D向量分量,經(jīng)常記標(biāo)量分量為w,記向量分量為單一的v或分開的x、y、z。兩種記法分別如下:
[w v]
[w, (x, y, z)]
在某些情況下,用v這樣的短記法更方便,但在另一些情況下,"擴展"的記法會更清楚。
也可以將四元數(shù)豎著寫,有時這會使等式的格式一目了然,"行"或"列"四元數(shù)沒有明顯的區(qū)別。
3D中的方位和角位移(2) 摘要: 另一種描述方位的常用方法是歐拉角,這項技術(shù)以著名的數(shù)學(xué)家Leonhard Euler(1707 -
1783)的名字命名,他證明了角位移序列等價于單個角位移。
歐拉角的基本思想是將角位移分解為繞三個互相垂直軸的三個旋轉(zhuǎn)組成的序列。這聽起來很復(fù)雜,其實它是非常直觀的(事實上,易于使用正是它的主要優(yōu)點之一)。之所以有"角位移"的說法正是因為歐拉角能用來描述任意旋轉(zhuǎn)。
3D中的方位和角位移(1) 摘要:
直觀地說,我們知道物體的“方位”主要描述的是物體的朝向。然而“方向”和“方位”并不完全一樣。向量有“方向”但沒有“方位”,區(qū)別在于,當(dāng)一個向量指向特定方向時,可以讓向量自轉(zhuǎn)(如圖10.1所示),但向量(或者說它的方向)卻不會有任何變化,因為向量的屬性只有“大小”,而沒有“厚度”和“寬度”。