四元数是比较复杂的,它是一个复数,由实部和虚部组成。
-
复数的定义:
如果我们将平面上的x轴作为实轴,y轴作为虚轴。这样复数P就定义了一个p点,同时也定义了一个向量。
如果我们将两个复数相乘。就可以把原来的向量旋转一定的角度得到一个新的向量 复数的乘法就是四元数旋转的本质。
- 旋转以后:p'(2D)
3D中的旋转如何用四元数表示呢?
这时我们的四元数就需要三个虚部和一个实部。这就是真正的四元数。
3D空间中绕任意方向的旋转轴(n),旋转的角度为θ进行旋转就可以用以下四元数表示:
-
旋转公式:
四元数的计算法则。
四元数作为复数,就会遵循复数的计算法则:
负四元数:
- 单位四元数(代表没有旋转,没有角位移)
- 四元数的模(同向量差不多):
四元数的模的几何意义:将旋转公式代入其中n代表旋转轴用一个单位向量表示即可,单位向量的模就是1,化简之后四元数的模为1,这种模为1的四元数是3D数学中使用最多的(规范化四元数)
- 复数的共轭(将虚部值取反)
- 四元数的共轭(也将虚部值取反):
- 四元数的逆公式(由于我们3D中旋转都使用的是规范化四元数,所以它的模为1,这样四元数的逆就等于四元数的共轭):
-
四元数的共轭几何意义就代表绕着与之前相反的方向进行旋转。
四元数的叉乘,叉乘之后得到一个新的四元数:
- 编程时使用变换过的叉乘公式。
- 四元数的叉乘不遵循交换律。
四元数表示旋转:
3D中的一个点p(x,y,z)以四元数的方式表示出来,并将它使用四元数进行旋转。
-
四元数绕n轴旋转一个点p,θ度,旋转的公式:
- 四元数的“差”(实际上为四元数的除法)
一个四元数a表示一个方位,另外一个四元数b表示另一个方位,从方位a旋转一定的角度d到了方位b。(可以通过四元素的除法获得两个方向旋转的角位移)
- 四元数的点乘(相当于向量的点乘):
- 四元数的对数:
- 四元数的指数:
- 四元数的标量乘: