先來了解一下四元數的基本概念。
一、複數的概念
高中數學中有說到複數的概念,什麼是複數呢?
基本上你只需要了解,複數這玩意兒長這樣:
z = a + bi
a,b是實數,i2 = -1,a是複數z的實部,bi是複數z的虛部。
二、四元數是什麼
四元數是一種高階複數,他長這樣:
q=(x,y,z,w)=xi+yj+zk+w;
其中:i2
=j2
=k2
= −1;
ijk= -1;
我們可以對上述所提到的四元數q作如下改寫:
q=((x,y,z),w)=(v⃗+w);
這樣一來,四元數可以看做是乙個三維向量v⃗和齊次座標系下的w分量;
三、四元數運算
假定兩個四元數q1、q2:
* 四元數乘法q1
q2=(
v1→×
v2→+
w1v2
→+w2
v1→,
w1w2
−v1→
⋅v2→
)'>q1q2
= (v1
×v2
+w1v2+w2v1,w1w2−v1⋅v2)
* 共軛四元數(三維向量方向取反)q∗
=(−v
→,w)
'>q∗
= (−v,w)
* 四元數的平方模(三維向量的模 + w分量的平方)n(
q)=n
(v→)
+w2'>n(q)
=n(v⃗ )
+w2
* 四元數的逆(共軛四元數除以模)q−
1=q∗
n(q)
'>q−
1=q∗
/
n(q)
q−
1=q∗
n(q)
'>四、四元數實現旋轉
三維空間剛體旋轉
剛體 運動過程中不會產生形變的物體,運動過程中同乙個向量的長度和夾角都不會發生變化。剛體變換也稱為歐式變換。旋轉矩陣 四元數旋轉向量 尤拉角安裝方式 eigen庫只有標頭檔案,沒有.so和.a二進位制檔案,所以在cmakelists.txt中只需要新增標頭檔案路徑,並不需要使用target link...
四元數乘法 剛體旋轉中的四元數
四元數博大精深,用途之一圖形學中的三維旋轉。單純從應用角度考慮,四元數可以以如下方式應用於旋轉。旋轉示意圖 假定我們有乙個經過原點的旋轉軸 其中 則,3d旋轉可以通過四元數乘法來表示 1 其中,為單位四元數,等價於 和 分別為 的共軛和逆。對於單位四元數而言 根據式 1 結合四元數的乘法,可以完成一...
四元數與三維空間的旋轉
四元數與三維空間的旋轉 我們要關心的是三維空間上任意的伸縮旋轉變換是否可用四元數的乘積來表示,而這一點對四元數來說是完全能夠勝任的。如果已知乙個三維空間的伸縮旋轉的轉軸方向 旋轉角度和伸縮比例,來求相應的四元數,是比較容易的。特別地,單位化的四元數用來描述旋 以原點為旋轉中心,旋轉的軸是 2 2 2...