四元数的表示
我们都知道四元数用来描述旋转比较简单,那他怎么描述旋转呢?首先先简单的知道一下四元数的表示方法吧。
四元数的表示可以写为
q ⃗ = ω + x i + y j + z k = ( ω , x , y , z ) = ( ω , v ) , 其 中 v ⃗ = ( x , y , z ) \vec{q} = ω+xi+yj+zk=(ω,x,y,z)=(ω,v) ,其中\vec{v}=(x,y,z) q=ω+xi+yj+zk=(ω,x,y,z)=(ω,v),其中v=(x,y,z)
简单地说就是一个实数和三个虚数的表示方法,先这样记住吧。
好了,可以看视频了,看完视频再看下面的说明。 视频传送门
描述旋转
先简单来一个复数描述旋转的引子。
复数描述旋转
复数的表示如下
z = a + b i z=a+bi z=a+bi
当我们使用 i i i去乘以一个复数时,当我们把得到的结果绘制在复平面上时,发现得到的位置正好是绕原点旋转90度的效果。
于是可以猜测,复数的乘法和旋转之间应该有某些关系。 我们可以通过定义一个复数
q
=
c
o
s
θ
+
i
s
i
n
θ
q=cos\theta+isin\theta
q=cosθ+isinθ
使用它作为一个旋转的因子,当与复数相乘时,得到:
p
=
a
+
b
i
q
=
c
o
s
θ
+
i
s
i
n
θ
p
q
=
(
a
+
b
i
)
(
c
o
s
θ
+
i
s
i
n
θ
)
a
′
+
b
′
i
=
a
c
o
s
θ
−
b
s
i
n
θ
+
(
a
s
i
n
θ
+
b
c
o
s
θ
)
i
p=a+bi \\ q=cos\theta+isin\theta \\ pq=(a+bi)(cos\theta+isin\theta)\\ a'+b'i=acos\theta-bsin\theta+(asin\theta+bcos\theta)i
p=a+biq=cosθ+isinθpq=(a+bi)(cosθ+isinθ)a′+b′i=acosθ−bsinθ+(asinθ+bcosθ)i
这个公式正好是二维的旋转公式,当把新的到的
(
a
′
+
b
′
i
)
(a'+b'i)
(a′+b′i)绘制在复平面上时,得到的正好是原来的点
(
a
+
b
i
)
(a+bi)
(a+bi)旋转
θ
\theta
θ角之后的位置。
附一张视频中的例子帮助理解。
四元数表示旋转
定义一个向量
(
⃗
v
)
=
(
x
,
y
,
z
)
\vec(v)=(x,y,z)
(v)=(x,y,z),这个向量为你想要旋转轴,旋转角度为
θ
\theta
θ(右手法则的旋转),这个
θ
\theta
θ和上面的
ω
\omega
ω不一样,
θ
\theta
θ只是一个角度,
ω
\omega
ω是一个实数,具体推倒关系见下面。此图中,
v
=
(
1
14
,
2
14
,
3
14
)
,
θ
=
π
3
v=(\frac{1}{\sqrt{14}},\frac{2}{\sqrt{14}},\frac{3}{\sqrt{14}}) , \theta=\frac{\pi}{3}
v=(141,142,143),θ=3π
那么由这个旋转轴和角度定义的四元数可以写成下面的形式
其中第一项就是 θ \theta θ和 ω \omega ω的关系。
进一步解释
图中黄线为旋转轴,三个系数平方之和为1,使用想要旋转的角构建一个四元数(该图中角度为40°)。用该角的余弦作为实部,加上该角的正弦乘以一个虚部构成一个四元数,只不过这次的虚部有三个部分,分别对应旋转角的坐标,事实上用的是半角(原因参见下面文档)
对向量
p
p
p绕
v
v
v轴旋转
θ
\theta
θ角,就可以表示成
p
′
=
q
p
q
−
1
p'=qpq^{-1}
p′=qpq−1
展开后为:
就先这么简单理解吧。
详细讲解参见:文档传送门