废话不多说,直接上链接:https://eater.net/quaternions
这是一个可视化的四元数模型以及讲解,非常直观,不过还需稍加理解
推荐一个B站博主:3Blue1Brown(知道他的人都说好)
1.四元数需要解决的问题
首先我们需要知道四元数适用于计算机视觉、虚拟现实、量子物理等方面,因为四元数能够很方便地描述三维向量以及空间旋转,而且不存在问题。
那么其他方法会存在什么问题呢?
- 旋转矩阵:使用9个量来描述3个自由度的旋转,具有冗余性。
- 欧拉角和旋转向量:虽然紧凑,但存在奇异性,即万向锁问题。
2.四元数的旋转
四元数(Quaternion),是Hamilton找到的一种扩展复数,它既是紧凑的,也没有奇异性。
一个四元数 q拥有一个实部和三个虚部组成,即: q = q 0 + q 1 i + q 2 j + q 3 k q=q_0+q_1i+q_2j+q_3k q=q0+q1i+q2j+q3k
同时也可以使用一个标量S和一个向量V进行表示,即: q = [ S , V ] q=[ S ,V ] q=[S,V]
考虑到三维空间需要三个轴,所以我们采用四元数的三个虚部老表示空间中的一个点,然后通过实部与虚部的变化实现三维空间的旋转。
我们知道一个模长为一的复数可以表示复平面上的纯旋转(没有长度缩放),那么同理我们也可以使用单位四元数来表示三维空间中的任意一个旋转,但这种表达方式有着微妙的不同。首先我们得知道该四元数的形式,如下:
q = c o s ( θ / 2 ) + s i n ( θ / 2 ) ( q 1 i + q 2 j + q 3 k ) q=cos(\theta/2)+sin(\theta/2)(q_1i+q_2j+q_3k) q=cos(θ/2)+sin(θ/2)(q1i+q2j+q3