【空间变换】欧拉角与四元数
核心
欧拉角
描述的是一种变换,只关注变换后的结果,不关注变换过程中的运动
而四元数
不仅良好地表示了一种变换,也很好地表示了一种运动过程,又避免了万向节死锁Gimbal Lock- 变换顺序,是欧拉角变换的一部分,仅仅说明三个轴的角度是不完整的;在用欧拉角说明某一个物体的姿态时,一定要加上先后顺序
- 无论是欧拉角还是四元数,它们都只描述旋转,不包含任何拉伸平移
从低维开始
参考3B1B的四元数视频
在复频域分析中,我们常见的
j
j
j 或者
i
i
i 其实就是一种旋转表示
如
e
π
i
e^{\pi i}
eπi 表示绕某一个轴旋转180°
即:(欧拉公式,可从三角函数推得)
e
i
θ
=
s
i
n
θ
+
i
c
o
s
θ
e^{i \theta} = sin\theta + icos\theta
eiθ=sinθ+icosθ
令:
w
=
s
i
n
θ
w = sin\theta
w=sinθ,
x
=
c
o
s
θ
x = cos\theta
x=cosθ
进而:
e
i
θ
=
w
+
x
i
e^{i \theta} = w + x i
eiθ=w+xi
也就是说,我们用两个量描述了一个在二维平面中的旋转,但是这两个量满足某种约束关系(本质上是一个量分解出的两个量,用一维的量描述了二维的旋转)
举例来说,
0
+
1
i
0+1i
0+1i表示逆时针旋转90°,
2
2
−
2
2
i
\frac{\sqrt2}{2}-\frac{\sqrt2}{2}i
22−22i表示顺时针旋转45°
进入高维
就像常规复数描述二维旋转时,一个二维单位圆覆盖了整个一维空间,一个三维单位球覆盖了整个二维空间,同样的,一个四维的单位超球也会覆盖整个三维空间;
相应的,我们用一维量描述二维旋转,用二维量描述三维旋转,那么我们用三维量描述四维旋转就合乎情理了
事实上,四元数描述的是四维中单位超球的旋转,三维坐标系的原点是
1
+
0
i
+
0
j
+
0
k
1+0i+0j+0k
1+0i+0j+0k,这是由超球的投影决定的,球上的该点投影下来,正好落在原点处
对于四元数来说:
q
=
w
+
x
i
+
y
j
+
z
k
q = w+xi+yj+zk
q=w+xi+yj+zk
w
∈
[
0
,
1
]
,
x
,
y
,
z
∈
[
−
1
,
1
]
w∈[0, 1], \ \ x, y, z∈[-1, 1]
w∈[0,1], x,y,z∈[−1,1]的部分(正实部的部分)被映射到了三维坐标系中的单位球中,其他部分(负实部的部分)映射到了三维单位球以外的空间
但请时刻记住:无论这个四元数的点映射到三维空间的哪里,它原本所在的位置都是那个四维单位超球,满足
w
2
+
x
2
+
y
2
+
z
2
=
1
w^2+x^2+y^2+z^2=1
w2+x2+y2+z2=1
此外,等价于普通复数的虚轴表示二维中的一个圆,在四元数中,
i
,
j
,
k
i, j, k
i,j,k 每个轴都代表超球上的一个圆环,进一步的,三维中的每一个平面,都代表了超球上的一个球面
四元数运算
运算的本质
让我们回忆一下文章开头所讲的:
四元数不仅是变换,也是一种状态
因此,四元数乘法可以类比于矩阵向量运算
当两个四元数相乘时,可以认为是一个四元数状态应用了另一个四元数变换,从而得到下一个四元数状态,
换而言之,变换将状态量的四个基分别应用了该变换,再重新组成了新的状态量
对应的几何含义
四元数变换所描述的旋转方向符合右手螺旋定则
举例来说:右手拇指从1指向 i ,当应用 i 变换时,jk圆会绕着手指蜷曲的方向旋转;
推广:右手拇指从1指向变换四元数,当应用该变换时,垂直于该四元数向量的圆会绕着手指蜷曲的方向旋转
每应用一次单位四元数变换,相当于绕某一个轴旋转90度,连续应用4次就转回来了
由此,我们可以简单得出一个性质:四元数运算不满足乘法交换律