四元數表示三維旋轉的數學原理

2021-09-25 15:35:56 字數 2278 閱讀 9621

之前在畢設裡做過的一些理論分析,我想並非全無意義,這邊羅列下來:

hamilton 在 1843 年經過了長達十多年的思考,試圖將複數歸納為三維,在此過程中發現了四元數。 利用三個複數來構造四維空間。正如在三維空間內去表述二維的旋轉是十分容易的,以此類推,在四維空間中去表述三維的旋轉要容易和簡便的多。事實上也的卻如此,並且利用四元數表示旋轉相比較於尤拉旋轉來說,最大的優點就是有效避免了萬向節鎖(gimbal lock)。帶來萬向節鎖的本質原因還是在於,利用尤拉旋轉去表述三維物體旋轉的時候, 是按照一定的座標順序,並且存在著第一層級、第二層級和第三層級。 但兩層級在同一水平面的時候就會帶來萬向節鎖的問題。無法正確的去表示原來三維物體的旋轉。此外,利用四元數表示三維旋轉的最直接的優點就是,表示旋轉僅僅只需要 4 個數,而矩陣旋轉需要 9 個數來表述。這樣一來大大的簡化了計算(進行兩次旋轉的時候只需要進行 16 次乘法和 12 次加法操作)。下面給出四元數的定義: 

其中 i,j,k 均是虛數,滿足以下規律:

並且對單位四元數進行定義,即滿足四元數的模為 1 :

當?0 = 0的時候,此時的四元數也可以稱之為純四元數。

那麼如何用四元數去表示三維物體的旋轉的, 首先可以想象在原先的三維座標系中,用三維座標去表示點的空間位置。但所有的三維座標的點集的模都是等於 1 的時候,也就是可以說,這些點集構成了單位球的球面。同理單位四元數抽象成向量,則是存在於四維空間裡的球面上。那麼任意的四維旋轉都可以拆分成乙個左旋轉和乙個右旋轉,即?????。而且這樣的乘積結果依舊保持了是乙個四元數,滿足最基本的性質。 

先來看複數旋轉,在如圖的復平面上:

如果將 p 旋轉θ角度得到 p1,且設 p1 的座標為(x,y),則可以先定義另乙個複數 q:

則根據三角函式,在復平面上 x,y 的關係如下:

而若是將原先 p 點乘以複數 q,將得到:

由此可以發現,在原複數上乘乙個複數,即可以表示複數旋轉。那麼在三維空間裡按照常理應該是在加入兩個複數來構造三維復平面,並且可以去定義兩個「三元數」,即兩個三維的複數:

如果按照之前二維復平面的形式對這兩個複數進行相乘將得到:

由此可以發現上述公式的問題,乘積的結果中沒有保持原來的三維複數定義。因此接下來,自然而然的去考慮處理 ij 和 ji項。這是四元數提出的根源,四元數就是為了解決此問題,從而來通過複數的乘積來表示出三維的旋轉。並且四元數有以下延伸的特性:

利用這一特性, 就可以解決之前的問題。為了方便計算,可以利用有序對來表示四元數,如下: 

在引入另乙個旋轉四元數對的前,先說明下四元數的乘積運算:

由此可見, 此時的四元數的乘積結果不存在之前的問題(出現ij和ji項),依舊保持了原先四元數的特性。最後可以利用向量的點積和叉積,對公式做簡化並轉化為有序對表示:

參照之前考慮的利用構造乙個旋轉複數去表示復平面旋轉,那麼同樣構造乙個可以旋轉三維空間的四元數:

因為只要表示的是三維旋轉,所以只需要考慮純四元數。結合公式就可以得到如下關係:

當s = cos? , ? = sin?時就可以表示成 p 繞著 v 去旋轉。但從某種程度上來,得到的結果依然是四維的向量(一般意義上的四元數), 因此還需要將得到的結果降到三維(純四元數)。這裡採用的方法是在上式再右乘??−1。所以完整的四元數旋轉公式為:

三維剛體旋轉之四元數

先來了解一下四元數的基本概念。一 複數的概念 高中數學中有說到複數的概念,什麼是複數呢?基本上你只需要了解,複數這玩意兒長這樣 z a bi a,b是實數,i2 1,a是複數z的實部,bi是複數z的虛部。二 四元數是什麼 四元數是一種高階複數,他長這樣 q x,y,z,w xi yj zk w 其中...

四元數與三維空間的旋轉

四元數與三維空間的旋轉 我們要關心的是三維空間上任意的伸縮旋轉變換是否可用四元數的乘積來表示,而這一點對四元數來說是完全能夠勝任的。如果已知乙個三維空間的伸縮旋轉的轉軸方向 旋轉角度和伸縮比例,來求相應的四元數,是比較容易的。特別地,單位化的四元數用來描述旋 以原點為旋轉中心,旋轉的軸是 2 2 2...

用於描述三維向量旋轉的四元數法的一點理解

描述三維向量的空間旋轉主要有三種方法 尤拉角法,軸角法以及四元數法,故首先對這個三種方法的特點進行描述與比較 1.尤拉角法 使用三個元素 以及世界座標系 xw,yw,zw 來描述乙個向量在經過旋轉後的空間姿態。分析其特點 旋轉不具有順序性,且很難在某一次旋轉過程中使用插值的辦法進行分析 2.軸角法 ...