官术网_书友最值得收藏!

2.1.4 旋轉的單位四元數表示

本節介紹空間旋轉的另一種表示形式,即單位四元數。四元數是將二維空間中的復數擴展至三維空間中得到的超復數,具體可表示為

(2-26)

其中為四元數的實部,為虛部。若實部為0,則該四元數又稱為虛四元數;若虛部各項均為0,則該四元數又稱為實四元數。則為虛數單位,分別對應坐標系的三個軸,并滿足下述Hamilton表達約束[1]

  (2-27)

同時,我們也可以采用矢量形式來表示上述四元數,于是有

  (2-28)

1.四元數的運算

1)模長

通過對四元數中各元素求平方和并開根號處理,可得到其模長:

(2-29)

時,我們稱為單位四元數。我們知道,在二維空間中,單位復數實際上可以描述極坐標系下的二維旋轉,如圖2-9所示。

圖2-9 單位復數和二維旋轉

(2-30)

因此,對于單位四元數,我們可以將其改寫成下述形式,以描述三維空間的任意旋轉變換:

=1  (2-31)

2)加減法

四元數的加減法與普通向量的加減法類似,具體如下:

(2-32)

3)乘法(點乘)

四元數的點乘和向量的點乘類似,將兩個四元數的每一項相乘再取和,即有

(2-33)

4)共軛

四元數的共軛可用表示,相當于在的基礎上對虛部取負數,即

(2-34)

進一步可以計算得知,一個四元數與其共軛四元數的乘積為一個實數,即

(2-35)

5)逆

四元數的逆定義如下:

(2-36)

由式(2-32)可以看出,四元數與其逆的點乘結果為實數1。

進一步地,對于單位四元數,由于其模長為1,因此有

(2-37)

6)數乘

四元數和實數相乘,表示對四元數進行縮放,并有

(2-38)

2.基于單位四元數的連續旋轉

假設我們有三維空間中的一個點,基于單位四元數對點進行旋轉操作的過程可以通過下式來表示:

(2-39)

若有多個單位四元數可用來表示對點的連續空間旋轉,如,則該過程可表示為

(2-40)

3.單位四元數和其他旋轉表示之間的轉換

這里我們省去具體的推導過程,直接給出單位四元數和其他旋轉表示之間的轉換方程。

1)單位四元數和旋轉向量的轉換

若已知繞單位向量旋轉角度的旋轉變換,則可通過單位四元數表示該旋轉為

(2-41)

有了式(2-41)中單位四元數和旋轉向量的轉換關系,回頭看式(2-39),就可以分析出:基于單位四元數P點旋轉的過程可看作繞軸對P點旋轉角度。

2)單位四元數和旋轉矩陣的轉換

由于在式(2-39)中,我們基于四元數得到了對點的旋轉表達,而基于前面所述的旋轉矩陣同樣可以實現該旋轉過程,因此有

(2-42)

由此我們便可以推導出由單位四元數到旋轉矩陣的轉換公式:

(2-43)

實際上,在得到單位四元數和旋轉向量的轉換關系后,根據羅德里格斯旋轉公式[見式(2-22)],我們可以由旋轉向量進一步得到旋轉矩陣:

(2-44)

在這里,我們基本了解了多種空間變換的描述方式和基本原理,在具體代碼實現方面,許多經典的函數庫均已實現了高效的旋轉變換和齊次變換操作供讀者使用,如C++環境中的Eigen庫、Python環境中的tf.transformations和scipy.spatial.transform庫等。

主站蜘蛛池模板: 黄龙县| 社会| 镇雄县| 庆云县| 江北区| 中西区| 苗栗县| 三明市| 独山县| 彝良县| 锦屏县| 小金县| 大邑县| 潞西市| 邛崃市| 邵武市| 云霄县| 鄄城县| 厦门市| 克山县| 壶关县| 莎车县| 华容县| 永清县| 合江县| 凤城市| 西乌| 胶州市| 视频| 白朗县| 永春县| 松潘县| 新邵县| 行唐县| 长葛市| 黄陵县| 望奎县| 铜梁县| 昭苏县| 崇文区| 皮山县|