四元数在旋转中的应用(一)
四元数有着神奇的代数结构(人造的代数结构,提出者站在什么样的高度思考出来的,暂时不得而知),本文尝试从简单的角度去讨论四元数在姿态变换中的应用,顺带着给出推导中需要的四元数的代数性质。关于四元数的介绍,由于优快云中的一篇博客中的字数限制,所以写了两个部分,这是第一部分。剩下的部分请见我的另外一篇博客四元数在旋转中的应用(二)。
一、四元数的定义
先给出四元数的形式:
q
=
a
+
b
i
+
c
j
+
d
k
(1)
q=a+b\mathbf{i}+c\mathbf{j}+d\mathbf{k} \tag{1}
q=a+bi+cj+dk(1)
其中
a
,
b
,
c
,
d
∈
R
a,b,c,d \in \mathbb{R}
a,b,c,d∈R,
i
,
j
,
k
\mathbf{i}, \mathbf{j}, \mathbf{k}
i,j,k可以理解为另外三个维度的基(四元数
q
q
q一共四个维度,第一个维度
a
a
a是实数,它的基可以看做是实数1)。
然后两个四元数
q
1
q_{1}
q1和
q
2
q_{2}
q2可以相乘,其遵循的乘法规则如下,
q
1
q
2
=
(
a
1
+
b
1
i
+
c
1
j
+
d
1
k
)
(
a
2
+
b
2
i
+
c
2
j
+
d
2
k
)
=
a
1
a
2
+
b
1
b
2
i
2
+
c
1
c
2
j
2
+
d
1
d
2
k
2
+
a
1
(
b
2
i
+
c
2
j
+
d
2
k
)
+
a
2
(
b
1
i
+
c
1
j
+
d
1
k
)
+
(
b
1
c
2
i
j
+
b
2
c
1
j
i
)
+
(
c
1
d
2
j
k
+
c
2
d
1
k
j
)
+
(
d
1
b
2
k
i
+
d
2
b
1
i
k
)
\begin{align} q_{1}q_{2} \notag \\ &= (a_{1}+b_{1}\mathbf{i}+c_{1}\mathbf{j}+d_{1}\mathbf{k})(a_{2}+b_{2}\mathbf{i}+c_{2}\mathbf{j}+d_{2}\mathbf{k}) \notag \\ &= a_{1}a_{2} + b_{1}b_{2}\mathbf{i}^2+c_{1}c_{2}\mathbf{j}^2+d_{1}d_{2}\mathbf{k}^{2} \notag \\ &\quad +a_{1}(b_{2}\mathbf{i}+c_{2}\mathbf{j}+d_{2}\mathbf{k}) + a_2(b_{1}\mathbf{i}+c_{1}\mathbf{j}+d_{1}\mathbf{k}) \notag \\ &\quad +(b_{1}c_{2}\mathbf{i}\mathbf{j}+b_{2}c_{1}\mathbf{j}\mathbf{i})+(c_{1}d_{2}\mathbf{j}\mathbf{k}+c_{2}d_{1}\mathbf{k}\mathbf{j}) + (d_{1}b_{2}\mathbf{k}\mathbf{i}+d_{2}b_{1}\mathbf{i}\mathbf{k}) \tag{2} \end{align}
q1q2=(a1+b1i+c1j+d1k)(a2+b2i+c2j+d2k)=a1a2+b1b2i2+c1c2j2+d1d2k2+a1(b2i+c2j+d2k)+a2(b1i+c1j+d1k)+(b1c2ij+b2c1ji)+(c1d2jk+c2d1kj)+(d1b2ki+d2b1ik)(2)
四元数的运算规则有如下规定(为什么这么规定?这是个好问题,当数学家定义一个代数结构,可以研究这个代数结构的性质,这么规定,后续发现这些运算规则在计算向量旋转中完美适配,我目前的理解程度只能达到这个程度,肯定有更高的代数角度来看待这个问题,但是目前的我还达不到),
规定 1:
i
2
=
−
1
,
j
2
=
−
1
,
k
2
=
−
1
\mathbf{i}^2 = -1, \mathbf{j}^2=-1, \mathbf{k}^2=-1
i2=−1,j2=−1,k2=−1
规定 2:
i
j
=
−
j
i
=
k
,
j
k
=
−
k
j
=
i
,
k
i
=
−
i
k
=
j
,
i
2
=
−
1
,
j
2
=
−
1
,
k
2
=
−
1
\mathbf{i}\mathbf{j} = -\mathbf{j}\mathbf{i} = \mathbf{k}, \mathbf{j}\mathbf{k} = -\mathbf{k}\mathbf{j} = \mathbf{i}, \mathbf{k}\mathbf{i} = -\mathbf{i}\mathbf{k}=\mathbf{j}, \mathbf{i}^2=-1, \mathbf{j}^2=-1, \mathbf{k}^{2}=-1
ij=−ji=k,jk=−kj=i,ki=−ik=j,i2=−1,j2=−1,k2=−1
有了规定 1和规定 2,则(2)式的四元数乘法可以重写为
q
1
q
2
=
(
a
1
+
b
1
i
+
c
1
j
+
d
1
k
)
(
a
2
+
b
2
i
+
c
2
j
+
d
2
k
)
=
a
1
a
2
−
b
1
b
2
−
c
1
c
2
−
d
1
d
2
+
a
1
(
b
2
i
+
c
2
j
+
d
2
k
)
+
a
2
(
b
1
i
+
c
1
j
+
d
1
k
)
+
(
b
1
c
2
−
b
2
c
1
)
k
+
(
c
1
d
2
−
c
2
d
1
)
i
+
(
d
1
b
2
−
d
2
b
1
)
j
\begin{align} q_{1}q_{2} \notag \\ &= (a_{1}+b_{1}\mathbf{i}+c_{1}\mathbf{j}+d_{1}\mathbf{k})(a_{2}+b_{2}\mathbf{i}+c_{2}\mathbf{j}+d_{2}\mathbf{k}) \notag \\ &= a_{1}a_{2} - b_{1}b_{2} - c_{1}c_{2} - d_{1}d_{2} \notag \\ &\quad +a_{1}(b_{2}\mathbf{i}+c_{2}\mathbf{j}+d_{2}\mathbf{k}) + a_2(b_{1}\mathbf{i}+c_{1}\mathbf{j}+d_{1}\mathbf{k}) \notag \\ &\quad +(b_{1}c_{2}-b_{2}c_{1})\mathbf{k}+(c_{1}d_{2} - c_{2}d_{1})\mathbf{i} + (d_{1}b_{2}-d_{2}b_{1})\mathbf{j} \tag{3} \end{align}
q1q2=(a1+b1i+c1j+d1k)(a2+b2i+c2j+d2k)=a1a2−b1b2−c1c2−d1d2+a1(b2i+c2j+d2k)+a2(b1i+c1j+d1k)+(b1c2−b2c1)k+(c1d2−c2d1)i+(d1b2−d2b1)j(3)
为了书写的更加紧凑一些,也为了后续推导的方便,我们记四元数 q = s + v ⃗ q=s+\vec{v} q=s+v,其中 s s s是实数部分, v ⃗ = b i + c j + d k \vec{v} = b\mathbf{i}+c\mathbf{j}+d\mathbf{k} v=bi+cj+dk。
那么可以将(3)式中四元数的乘法重写为
q
1
q
2
=
(
s
1
+
v
⃗
1
)
(
s
2
+
v
⃗
2
)
=
s
1
s
2
−
(
v
⃗
1
,
v
⃗
2
)
+
a
1
v
⃗
2
+
a
2
v
⃗
1
+
v
⃗
1
×
v
⃗
2
\begin{align} q_{1}q_{2} \notag \\ &= (s_{1}+\vec{v}_{1})(s_{2}+\vec{v}_{2}) \notag \\ &= s_{1}s_{2} - (\vec{v}_1,\vec{v}_2) \notag \\ &\quad +a_{1}\vec{v}_{2} + a_2\vec{v}_{1} \notag \\ &\quad + \vec{v}_{1} \times \vec{v}_{2} \tag{4} \end{align}
q1q2=(s1+v1)(s2+v2)=s1s2−(v1,v2)+a1v2+a2v1+v1×v2(4)
式中,
(
v
⃗
1
,
v
⃗
2
)
=
b
1
b
2
+
c
1
c
2
+
d
1
d
2
(\vec{v}_1,\vec{v}_2) = b_{1}b_{2} + c_{1}c_{2} + d_{1}d_{2}
(v1,v2)=b1b2+c1c2+d1d2,
v
⃗
1
×
v
⃗
2
=
(
b
1
c
2
−
b
2
c
1
)
k
+
(
c
1
d
2
−
c
2
d
1
)
i
+
(
d
1
b
2
−
d
2
b
1
)
j
\vec{v}_{1} \times \vec{v}_{2} = (b_{1}c_{2}-b_{2}c_{1})\mathbf{k}+(c_{1}d_{2} - c_{2}d_{1})\mathbf{i} + (d_{1}b_{2}-d_{2}b_{1})\mathbf{j}
v1×v2=(b1c2−b2c1)k+(c1d2−c2d1)i+(d1b2−d2b1)j。这里
(
v
⃗
1
,
v
⃗
2
)
(\vec{v}_1,\vec{v}_2)
(v1,v2)等同于向量的内积,
v
⃗
1
×
v
⃗
2
\vec{v}_{1} \times \vec{v}_{2}
v1×v2等同于向量的外积。
这里,另外对四元数
q
=
a
+
b
i
+
c
j
+
d
k
q=a+b\mathbf{i}+c\mathbf{j}+d\mathbf{k}
q=a+bi+cj+dk有如下的额外定义。
定义1: 共轭(类似复数中的共轭)
q
‾
=
a
−
(
b
i
+
c
j
+
d
k
)
(5)
\overline{q}=a-(b\mathbf{i}+c\mathbf{j}+d\mathbf{k}) \tag{5}
q=a−(bi+cj+dk)(5)
定义2: 模长 (类似复数中的模长,另外如果一个四元数的模长为1,则称为单位四元数)
∣
q
∣
=
a
2
+
b
2
+
c
2
+
d
2
(6)
|q| = \sqrt{a^{2}+b^{2}+c^{2}+d^{2}} \tag{6}
∣q∣=a2+b2+c2+d2(6)
定义3: 逆 (四元数与它自身的逆相乘等于单位1,可自行验证)
q
−
1
=
q
‾
∣
q
∣
2
(7)
q^{-1} = \frac{\overline{q}}{|q|^{2}} \tag{7}
q−1=∣q∣2q(7)
二、向量绕定轴旋转
Fig. 1 向量
v
⃗
\vec{v}
v绕旋转轴
w
⃗
\vec{w}
w逆时针旋转
θ
\theta
θ角度
如Fig. 1所示,对于向量
v
⃗
\vec{v}
v绕旋转轴
w
⃗
\vec{w}
w逆时针旋转
θ
\theta
θ角度,可以把向量分解成投影在
w
⃗
\vec{w}
w上面的分量
v
⃗
2
\vec{v}_{2}
v2和与
w
⃗
\vec{w}
w垂直的分量
v
⃗
1
\vec{v}_{1}
v1, 则
v
⃗
2
=
(
w
⃗
,
v
⃗
)
w
⃗
(8)
\vec{v}_{2}=(\vec{w},\vec{v})\vec{w} \tag{8}
v2=(w,v)w(8)
其中
(
w
⃗
,
v
⃗
)
(\vec{w},\vec{v})
(w,v)表示
w
⃗
\vec{w}
w和
v
⃗
\vec{v}
v的内积。
v
⃗
1
=
v
⃗
−
(
w
⃗
,
v
⃗
)
w
⃗
(9)
\vec{v}_{1}=\vec{v}-(\vec{w},\vec{v})\vec{w} \tag{9}
v1=v−(w,v)w(9)
向量
v
⃗
\vec{v}
v绕旋转轴
w
⃗
\vec{w}
w逆时针旋转
θ
\theta
θ角度,实际上只有垂直于
w
⃗
\vec{w}
w的分量
v
⃗
1
\vec{v}_{1}
v1会绕着
w
⃗
\vec{w}
w逆时针旋转
θ
\theta
θ角度,
v
⃗
1
\vec{v}_{1}
v1逆时针旋转
θ
\theta
θ后得到的向量
v
⃗
3
\vec{v}_{3}
v3为
v
⃗
3
=
(
w
⃗
×
v
⃗
1
)
sin
θ
+
v
⃗
1
cos
θ
(10)
\vec{v}_{3} = (\vec{w} \times \vec{v}_{1})\sin\theta + \vec{v}_{1}\cos\theta \tag{10}
v3=(w×v1)sinθ+v1cosθ(10)
其中
w
⃗
×
v
⃗
1
\vec{w}\times\vec{v}_{1}
w×v1是
w
⃗
\vec{w}
w和
v
⃗
1
\vec{v}_{1}
v1的外积。式(10)中,相当于将
v
⃗
3
\vec{v}_{3}
v3分解为在两个正交分量
v
⃗
1
\vec{v}_{1}
v1和
w
⃗
×
v
⃗
1
\vec{w}\times\vec{v}_{1}
w×v1下的表示形式。
向量
v
⃗
\vec{v}
v绕旋转轴
w
⃗
\vec{w}
w逆时针旋转
θ
\theta
θ角度得到的向量
v
′
⃗
\vec{v^{'}}
v′为
v
′
⃗
=
v
⃗
2
+
v
⃗
3
=
(
w
⃗
,
v
⃗
)
w
⃗
+
(
w
⃗
×
v
⃗
1
)
sin
θ
+
v
⃗
1
cos
θ
=
(
w
⃗
,
v
⃗
)
w
⃗
+
[
w
⃗
×
(
v
⃗
−
(
w
⃗
,
v
⃗
)
w
⃗
)
]
sin
θ
+
(
v
⃗
−
(
w
⃗
,
v
⃗
)
w
⃗
)
cos
θ
=
(
w
⃗
,
v
⃗
)
w
⃗
+
(
w
⃗
×
v
⃗
)
sin
θ
+
(
v
⃗
−
(
w
⃗
,
v
⃗
)
w
⃗
)
cos
θ
=
(
w
⃗
×
v
⃗
)
sin
θ
+
v
⃗
cos
θ
+
2
sin
2
θ
2
(
w
⃗
,
v
⃗
)
w
⃗
\begin{align} \vec{v^{'}} \notag \\ &= \vec{v}_{2} + \vec{v}_{3} \notag \\ &= (\vec{w}, \vec{v})\vec{w} + (\vec{w} \times \vec{v}_{1})\sin\theta + \vec{v}_{1}\cos\theta \notag \\ &= (\vec{w}, \vec{v})\vec{w} + [\vec{w} \times (\vec{v}-(\vec{w},\vec{v})\vec{w})]\sin\theta + (\vec{v}-(\vec{w},\vec{v})\vec{w})\cos\theta \notag \\ &= (\vec{w}, \vec{v})\vec{w} + (\vec{w} \times \vec{v})\sin\theta + (\vec{v}-(\vec{w},\vec{v})\vec{w})\cos\theta \notag \\ &= (\vec{w} \times \vec{v})\sin\theta + \vec{v}\cos\theta + 2\sin^{2}\frac{\theta}{2}(\vec{w},\vec{v})\vec{w} \tag{11} \end{align}
v′=v2+v3=(w,v)w+(w×v1)sinθ+v1cosθ=(w,v)w+[w×(v−(w,v)w)]sinθ+(v−(w,v)w)cosθ=(w,v)w+(w×v)sinθ+(v−(w,v)w)cosθ=(w×v)sinθ+vcosθ+2sin22θ(w,v)w(11)
到这里,我们通过基本的向量运算计算出来向量 v ⃗ \vec{v} v绕旋转轴 w ⃗ \vec{w} w逆时针旋转 θ \theta θ角度得到的向量 v ′ ⃗ \vec{v^{'}} v′。
对于(11)式,可以重新整理为
v
′
⃗
=
(
w
⃗
×
v
⃗
)
sin
θ
+
v
⃗
cos
θ
+
2
sin
2
θ
2
(
w
⃗
,
v
⃗
)
w
⃗
=
sin
θ
[
0
−
w
z
w
y
w
z
0
−
w
x
−
w
y
w
x
0
]
v
⃗
+
cos
θ
[
1
0
0
0
1
0
0
0
1
]
v
⃗
+
2
sin
2
θ
2
[
w
x
2
w
x
w
y
w
x
w
z
w
x
w
y
w
y
2
w
y
w
z
w
x
w
z
w
y
w
z
w
z
2
]
v
⃗
=
[
cos
θ
+
2
sin
2
θ
2
w
x
2
−
w
z
sin
θ
+
2
sin
2
θ
2
w
x
w
y
w
y
sin
θ
+
2
sin
2
θ
2
w
x
w
z
w
z
sin
θ
+
2
sin
2
θ
2
w
x
w
y
cos
θ
+
2
sin
2
θ
2
w
y
2
−
w
x
sin
θ
+
2
sin
2
θ
2
w
y
w
z
−
w
y
sin
θ
+
2
sin
2
θ
2
w
x
w
z
w
x
sin
θ
+
2
sin
2
θ
2
w
y
w
z
cos
θ
+
2
sin
2
θ
2
w
z
2
]
v
⃗
=
[
1
−
w
z
θ
w
y
θ
w
z
θ
1
−
w
x
θ
−
w
y
θ
w
x
θ
1
]
v
⃗
\begin{align} \vec{v^{'}} \notag \\ &= (\vec{w} \times \vec{v})\sin\theta + \vec{v}\cos\theta + 2\sin^{2}\frac{\theta}{2}(\vec{w},\vec{v})\vec{w} \notag \\ &=\sin\theta\left[ \begin{array}{ccc} \ 0 & -w_{z} & w_{y} \\ \ w_{z} & 0 & -w_{x}\\ \ -w_{y} & w_{x} & 0 \end{array} \right]\vec{v} + \cos\theta\left[ \begin{array}{ccc} \ 1 & 0 & 0 \\ \ 0 & 1 & 0\\ \ 0 & 0 & 1 \end{array} \right]\vec{v} + 2\sin^{2}\frac{\theta}{2}\left[ \begin{array}{ccc} \ w^{2}_{x} & w_{x}w_{y} & w_{x}w_{z} \\ \ w_{x}w_{y} & w^{2}_{y} & w_{y}w_{z} \\ \ w_{x}w_{z} & w_{y}w_{z} & w^{2}_{z} \end{array} \right]\vec{v} \notag \\ &=\left[ \begin{array}{ccc} \ \cos\theta+2\sin^{2}\frac{\theta}{2}w^{2}_{x} & -w_{z}\sin\theta+2\sin^{2}\frac{\theta}{2}w_{x}w_{y} & w_{y}\sin\theta+2\sin^{2}\frac{\theta}{2}w_{x}w_{z} \\ \ w_{z}\sin\theta+2\sin^{2}\frac{\theta}{2}w_{x}w_{y} & \cos\theta+2\sin^{2}\frac{\theta}{2}w^{2}_{y} & -w_{x}\sin\theta+2\sin^{2}\frac{\theta}{2}w_{y}w_{z} \\ \ -w_{y}\sin\theta+2\sin^{2}\frac{\theta}{2}w_{x}w_{z} & w_{x}\sin\theta+2\sin^{2}\frac{\theta}{2}w_{y}w_{z} & \cos\theta+2\sin^{2}\frac{\theta}{2}w^{2}_{z} \end{array} \right]\vec{v} \notag \\ &=\left[ \begin{array}{ccc} \ 1 & -w_{z}\theta & w_{y}\theta \\ \ w_{z}\theta & 1 & -w_{x}\theta \\ \ -w_{y}\theta & w_{x}\theta & 1 \end{array} \right]\vec{v} \tag{12} \end{align}
v′=(w×v)sinθ+vcosθ+2sin22θ(w,v)w=sinθ
0 wz −wy−wz0wxwy−wx0
v+cosθ
1 0 0010001
v+2sin22θ
wx2 wxwy wxwzwxwywy2wywzwxwzwywzwz2
v=
cosθ+2sin22θwx2 wzsinθ+2sin22θwxwy −wysinθ+2sin22θwxwz−wzsinθ+2sin22θwxwycosθ+2sin22θwy2wxsinθ+2sin22θwywzwysinθ+2sin22θwxwz−wxsinθ+2sin22θwywzcosθ+2sin22θwz2
v=
1 wzθ −wyθ−wzθ1wxθwyθ−wxθ1
v(12)
式(12)中的倒数第二步到倒数第一步,成立的前提是转动角度
θ
\theta
θ趋向于0时。
三、用四元数来旋转“向量”
现在,记单位四元数
q
=
s
+
n
⃗
q=s+\vec{n}
q=s+n,其中
n
⃗
=
b
i
+
c
j
+
d
k
\vec{n}=b\mathbf{i}+c\mathbf{j}+d\mathbf{k}
n=bi+cj+dk,则
q
q
q的逆
q
−
1
=
s
−
n
⃗
q^{-1}=s-\vec{n}
q−1=s−n。 (请参照(6)式和(7)式的定义)
另外,记四元数
v
=
0
+
n
⃗
v = 0 + \vec{n}
v=0+n。(注意这个四元数是一个普通的四元数,并不一定是单位四元数,但是它的实数部分为0)
下面来计算
q
v
q
−
1
qvq^{-1}
qvq−1,
q
v
q
−
1
=
(
s
+
n
⃗
)
(
0
+
v
⃗
)
(
s
−
n
⃗
)
=
[
−
(
n
⃗
,
v
⃗
)
+
s
v
⃗
+
n
⃗
×
v
⃗
]
(
s
−
n
⃗
)
=
−
s
(
n
⃗
,
v
⃗
)
+
(
(
s
v
⃗
+
n
⃗
×
v
⃗
)
,
n
⃗
)
+
(
n
⃗
,
v
⃗
)
n
⃗
+
s
2
v
⃗
+
s
n
⃗
×
v
⃗
−
(
s
v
⃗
+
n
⃗
×
v
⃗
)
×
n
⃗
=
−
s
(
n
⃗
,
v
⃗
)
+
s
(
v
⃗
,
n
⃗
)
+
(
(
n
⃗
×
v
⃗
)
,
n
⃗
)
+
(
n
⃗
,
v
⃗
)
n
⃗
+
s
2
v
⃗
+
s
n
⃗
×
v
⃗
−
s
(
v
⃗
×
n
⃗
)
−
(
n
⃗
×
v
⃗
)
×
n
⃗
=
s
2
v
⃗
+
(
n
⃗
,
v
⃗
)
n
⃗
+
2
s
(
n
⃗
×
v
⃗
)
−
(
n
⃗
×
v
⃗
)
×
n
⃗
\begin{align} qvq^{-1} \notag \\ &= (s+\vec{n})(0+\vec{v})(s-\vec{n}) \notag \\ &= [-(\vec{n},\vec{v})+s\vec{v}+\vec{n}\times\vec{v}](s-\vec{n}) \notag \\ &= -s(\vec{n},\vec{v})+((s\vec{v}+\vec{n}\times\vec{v}),\vec{n})+(\vec{n},\vec{v})\vec{n}+s^{2}\vec{v}+s\vec{n}\times\vec{v}-(s\vec{v}+\vec{n}\times\vec{v})\times\vec{n} \notag \\ &= -s(\vec{n},\vec{v}) + s(\vec{v},\vec{n})+((\vec{n}\times\vec{v}),\vec{n})+(\vec{n},\vec{v})\vec{n}+s^{2}\vec{v}+s\vec{n}\times\vec{v}-s(\vec{v}\times\vec{n})-(\vec{n}\times\vec{v})\times\vec{n} \notag \\ &= s^{2}\vec{v}+(\vec{n},\vec{v})\vec{n}+2s(\vec{n}\times\vec{v})-(\vec{n}\times\vec{v})\times\vec{n} \tag{13} \end{align}
qvq−1=(s+n)(0+v)(s−n)=[−(n,v)+sv+n×v](s−n)=−s(n,v)+((sv+n×v),n)+(n,v)n+s2v+sn×v−(sv+n×v)×n=−s(n,v)+s(v,n)+((n×v),n)+(n,v)n+s2v+sn×v−s(v×n)−(n×v)×n=s2v+(n,v)n+2s(n×v)−(n×v)×n(13)
对于(13)式的化简,需要使用下式引理
(
n
⃗
×
v
⃗
)
×
n
⃗
=
(
n
⃗
,
n
⃗
)
v
⃗
−
(
n
⃗
,
v
⃗
)
n
⃗
(14)
(\vec{n}\times\vec{v})\times\vec{n}=(\vec{n},\vec{n})\vec{v}-(\vec{n},\vec{v})\vec{n} \tag{14}
(n×v)×n=(n,n)v−(n,v)n(14)
将(14)式代入(13)式中,得到
q
v
q
−
1
=
s
2
v
⃗
+
(
n
⃗
,
v
⃗
)
n
⃗
+
2
s
(
n
⃗
×
v
⃗
)
−
(
n
⃗
×
v
⃗
)
×
n
⃗
=
s
2
v
⃗
+
(
n
⃗
,
v
⃗
)
n
⃗
+
2
s
(
n
⃗
×
v
⃗
)
−
[
(
n
⃗
,
n
⃗
)
v
⃗
−
(
n
⃗
,
v
⃗
)
n
⃗
]
=
(
s
2
−
∣
∣
n
⃗
∣
∣
2
)
v
⃗
+
2
(
n
⃗
,
v
⃗
)
n
⃗
+
2
s
(
n
⃗
×
v
⃗
)
\begin{align} qvq^{-1} \notag \\ &= s^{2}\vec{v}+(\vec{n},\vec{v})\vec{n}+2s(\vec{n}\times\vec{v})-(\vec{n}\times\vec{v})\times\vec{n} \notag \\ &= s^{2}\vec{v}+(\vec{n},\vec{v})\vec{n}+2s(\vec{n}\times\vec{v})-[(\vec{n},\vec{n})\vec{v}-(\vec{n},\vec{v})\vec{n}] \notag \\ &= (s^{2}-||\vec{n}||^{2})\vec{v}+2(\vec{n},\vec{v})\vec{n}+2s(\vec{n}\times\vec{v}) \tag{15} \end{align}
qvq−1=s2v+(n,v)n+2s(n×v)−(n×v)×n=s2v+(n,v)n+2s(n×v)−[(n,n)v−(n,v)n]=(s2−∣∣n∣∣2)v+2(n,v)n+2s(n×v)(15)
对(15)式,我们令
n
⃗
=
t
n
⃗
0
\vec{n}=t\vec{n}_{0}
n=tn0,其中
n
⃗
0
\vec{n}_{0}
n0为单位向量。则(15)式可以重写为
q
v
q
−
1
=
(
s
2
−
∣
∣
n
⃗
∣
∣
2
)
v
⃗
+
2
(
n
⃗
,
v
⃗
)
n
⃗
+
2
s
(
n
⃗
×
v
⃗
)
=
(
s
2
−
t
2
)
v
⃗
+
2
t
2
(
n
⃗
0
,
v
⃗
)
n
⃗
0
+
2
s
t
(
n
⃗
0
×
v
⃗
)
\begin{align} qvq^{-1} \notag \\ &= (s^{2}-||\vec{n}||^{2})\vec{v}+2(\vec{n},\vec{v})\vec{n}+2s(\vec{n}\times\vec{v}) \notag \\ &= (s^{2}-t^{2})\vec{v}+2t^{2}(\vec{n}_{0},\vec{v})\vec{n}_{0}+2st(\vec{n}_{0}\times\vec{v}) \tag{16} \end{align}
qvq−1=(s2−∣∣n∣∣2)v+2(n,v)n+2s(n×v)=(s2−t2)v+2t2(n0,v)n0+2st(n0×v)(16)
令(16)式中的
s
=
cos
θ
2
s=\cos\frac{\theta}{2}
s=cos2θ,
t
=
sin
θ
2
t=\sin\frac{\theta}{2}
t=sin2θ,
n
⃗
0
=
w
⃗
\vec{n}_{0}=\vec{w}
n0=w,则
q
v
q
−
1
=
(
s
2
−
t
2
)
v
⃗
+
2
t
2
(
n
⃗
0
,
v
⃗
)
n
⃗
0
+
2
s
t
(
n
⃗
0
×
v
⃗
)
=
cos
θ
v
⃗
+
2
sin
2
θ
2
(
w
⃗
,
v
⃗
)
w
⃗
+
sin
θ
(
w
⃗
×
v
⃗
)
\begin{align} qvq^{-1} \notag \\ &= (s^{2}-t^{2})\vec{v}+2t^{2}(\vec{n}_{0},\vec{v})\vec{n}_{0}+2st(\vec{n}_{0}\times\vec{v}) \notag \\ &= \cos\theta\vec{v} + 2\sin^{2}\frac{\theta}{2}(\vec{w},\vec{v})\vec{w}+\sin\theta(\vec{w}\times\vec{v}) \tag{17} \end{align}
qvq−1=(s2−t2)v+2t2(n0,v)n0+2st(n0×v)=cosθv+2sin22θ(w,v)w+sinθ(w×v)(17)
比较(17)式和(11)式,发现两个式子的结果是一样的。也就是说,如果需要计算向量
v
⃗
\vec{v}
v绕旋转轴
w
⃗
\vec{w}
w逆时针旋转
θ
\theta
θ角度得到的向量
v
′
⃗
\vec{v^{'}}
v′,可以使用四元数的框架进行计算,令单位四元数
q
=
cos
θ
2
+
sin
θ
2
w
⃗
q=\cos\frac{\theta}{2} + \sin\frac{\theta}{2}\vec{w}
q=cos2θ+sin2θw,(旋转轴
w
⃗
\vec{w}
w是单位向量),令四元数
v
=
0
+
v
⃗
v=0+\vec{v}
v=0+v,此时
q
−
1
=
cos
θ
2
−
sin
θ
2
w
⃗
q^{-1}=\cos\frac{\theta}{2}-\sin\frac{\theta}{2}\vec{w}
q−1=cos2θ−sin2θw,然后计算出来的四元数
q
v
q
−
1
qvq^{-1}
qvq−1的实数部分为0,虚数部分就是旋转后得到的向量
v
′
⃗
\vec{v^{'}}
v′。
请转移到我的另外一篇博客四元数在旋转中的应用(二)