假設四元數虛部在前,實部在後四元數和旋轉向量有很直接的轉換關係。繞單位軸u
uu轉了θ
\theta
θ角度,用四元數表達為:
q =[
usinθ
2cosθ
2]
\mathbf=\left[\mathbf \sin \frac \quad \cos \frac\right]
q=[u
sin2θ
cos2θ]q⊗
p=[q
4i3+
vq∧v
q−vq
tq4]
[vpp
4]=[
p4i3
−vp∧
vp−v
ptp4
][vq
q4
]\begin \mathbf \otimes \mathbf &=\left[\begin \mathbf_+v_^} & } \\ ^} & }\end\right]\left[\begin} \\ }\end\right] \\ &=\left[\begin \mathbf_-v_^} & } \\ ^} & }\end\right]\left[\begin} \\ }\end\right] \end
q⊗p=[
q4i
3+v
q∧−
vqt
vq
q4
][vp
p4
]=[
p4i
3−v
p∧−
vpt
vp
p4
][vq
q4
]注:上式分別代表了左乘和右乘
r ˙=
ω∧
r\dot}=\boldsymbol^ \mathbf
r˙=ω∧r
注:這裡速度w是參考係下的角速度
r ˙=
r(bω
)∧
\dot}=\mathbf\left(^ \omega\right)^
r˙=r(b
ω)∧注:這裡速度是體座標系的角速度
比較一下上述兩式,可以發現乙個很有趣的事實,角速度如果表達在參考座標系下,負對稱矩陣寫在左邊;如果表達在體座標系下,負對稱矩陣寫在右邊。這點微小的區別,讀者在閱讀文獻時可以特別留意。q˙=
12[ω
∧ω−ω
t0]q
:=12
ω(ω)
q=12
[q4i
3−v∧
−vt]
ω\begin \dot} &=\frac\left[\begin^} & } \\ ^} & \end\right] \mathbf :=\frac \boldsymbol(\boldsymbol) \mathbf \\ &=\frac\left[\begin \mathbf_-\boldsymbol^} \\ ^}\end\right] \boldsymbol \end
q˙=2
1[ω
∧−ωt
ω0
]q:=
21ω
(ω)q
=21
[q4
i3−
v∧−v
t]ω
注:四元數的求導公式和旋轉矩陣的求導很像,且這裡面的w也是在參考座標系下的測量。若w是在體座標系下的測量(如imu的測量值),則公式變為:
q ˙=
12[−
ω∧ω−
ωt0]
q:=1
2ω(ω
)q=1
2[q4
i3+v
∧−vt
]ω
\begin \dot} &=\frac\left[\begin^} & } \\ ^} & \end\right] \mathbf :=\frac \boldsymbol(\boldsymbol) \mathbf \\ &=\frac\left[\begin \mathbf_+\boldsymbol^} \\ ^}\end\right] \boldsymbol \end
q˙=2
1[−
ω∧−ω
tω0
]q:
=21
ω(ω)
q=21
[q4
i3
+v∧−
vt]
ω四元數乘法和其對應的兩個旋轉矩陣相乘物理意義是一樣的,即:
r (q
⊗p)=
r(q)
r(p)
\mathbf(\mathbf \otimes \mathbf)=\mathbf(\mathbf) \mathbf(\mathbf)
r(q⊗p)
=r(q
)r(p
)四元數對應的旋轉矩陣為:
r (q
)=(2
q42−
1)i3
+2q4
v∧+2
vv
t\mathbf(\mathbf)=\left(2 q_^-1\right) \mathbf_+2 q_ \boldsymbol^+2 \boldsymbol \boldsymbol^
r(q)=(
2q42
−1)
i3+
2q4
v∧+2vvt
四元數乘法 剛體旋轉中的四元數
四元數博大精深,用途之一圖形學中的三維旋轉。單純從應用角度考慮,四元數可以以如下方式應用於旋轉。旋轉示意圖 假定我們有乙個經過原點的旋轉軸 其中 則,3d旋轉可以通過四元數乘法來表示 1 其中,為單位四元數,等價於 和 分別為 的共軛和逆。對於單位四元數而言 根據式 1 結合四元數的乘法,可以完成一...
四元數的筆記
四元數 h a bi cj dk 共軛 h a bi cj dk 逆 h frac 所以單位四元數的共軛等於他的逆 單位四元數 絕對值為1的四元數 若實部為cos t 它的共軛作用是乙個角度為2t的轉動,轉軸為虛部的方向。四元數的優點是 只有單位四元數才能表示旋轉,所以在eigen中一般會有quat...
四元數左乘右乘 四元數的建立
在了解了上述知識後,我們就不需要那麼懼怕四元數了,實際上它和矩陣類似,不同的只是它的表示方式以及運算方式。那麼在unity裡如何利用四元數進行旋轉呢?unity裡提供了非常多的方式來建立乙個四元數。例如quaternion.angleaxis float angle,vector3 axis 它可以...