根据个人理解,大多数人用汉密尔顿四元数就只是作三维空间的旋转变换(我反正没见过其余用法)。那么你不用学群论,甚至不用复习线性代数,看我下面的几张图就能够了。
首先,定义一个你须要作的旋转。旋转轴为向量

,旋转角度为

(右手法则的旋转)。以下图所示:
此图中

,
那么与此相对应的四元数(下三行式子都是一个意思,只是不一样的表达形式)
这时它的共轭(下三行式子都是一个意思,只是不一样的表达形式),
若是你想算一个点

在这个旋转下新的坐标

,须要进行以下操做,
1.定义纯四元数
2.进行四元数运算
3.产生的

必定是纯四元数,也就是说它的第一项为0,有以下形式:
4.

中的后三项

就是

:
这样,就完成了一次四元数旋转运算。
同理,若是你有一个四元数:
那么,它对应一个以向量

为轴旋转

角度的旋转操做(右手法则的旋转)。
***********************************************************************************************************
若是你想对四元数有着更深刻的了解,请往下看。
四元数由汉密尔顿发明,这一发明起源于十九世纪的某一天。在这一天早上,汉密尔顿下楼吃早饭。这时他的儿子问他,“爸爸,咱们可以对三元数组(triplet,能够理解为三维向量)作乘法运算么?”汉密尔顿说“不行,我只能加减它们。”
这时来自21世纪的旁白旁先生说,“你们快来看十九世纪的数学家有多二,连内积和外积都不是知道。”
十九世纪的汉密尔顿也许确实不知道内积和外积,可是他知道,他想要的三维向量乘法要比内积和外积运算“高大上”不少。这一乘法运算要知足下列四条性质:
1.运算产生的结果也要是三维向量
2.存在一个元运算,任何三维向量进行元运算的结果就是其自己
3.对于任何一个运算,都存在一个逆运算,这两个运算的积是元运算
4.运算知足结合律
换而言之,汉密尔顿想定义的不是一个简单的映射关系,而是一个群!(后来咱们知道四元数所在群为S3,而四元数所表明的三维旋转是SO(3),前者是后者的两倍覆盖)内积连性质1都不知足,外积不知足性质3。
汉密尔顿先生就这么被本身儿子提出的问题难倒了。经历了无数个日日夜夜,他绞尽脑汁也没想明白这个问题。终于有一天(1843年的一天),汉密尔顿先生终于意识到了,本身所须要的运算在三维空间中是不可能实现的,但在四维空间中是能够的,他是如此的兴奋,以致于把四元数的公式刻在了爱尔兰的一座桥上。
旁白:“WTF,我让你讲三维物体的旋转,你给我扯到四维空间上去。”
(不加说明,如下所说四元数全为单位四元数)
其实,四元数有四个变量,彻底能够被看做一个四维向量。单位四元数(norm=1)则存在于四维空间的一个球面上。

,四元数

乘以四元数

其实看做(1)对

进行

左旋转,或者(2)对

进行

右旋转。因此从始至终,四元数定义的都是四维旋转,而不是三维旋转!任意的四维旋转均可以惟一的拆分为一个左旋转和一个右旋转,表达出来就是

。这里,咱们对四元数(四维向量)

进行了一个

左旋转和一个

右旋转。结果固然是一个四元数,符合性质1。这个运算也同时符合性质2,3,4。
好了,说完了四维旋转,咱们终于能够说说三维旋转了。说白了,三维旋转就是四维旋转的一个特例,就像二维旋转是三维旋转的一个特例同样。说是特例其实不许确,准确的说是一个子集或者subgroup。为了进行三维旋转运算,汉密尔顿首先在四维空间里划出了一块三维空间。汉密尔顿定义了一种纯四元数(pure quaternion),其表达式为

。纯四元数第一项为零,它存在于四维空间的三维超平面上,与三维空间中的三维向量一一对应。而后,就有了咱们常见的

这种左乘单位四元数,右乘其共轭的表达式。我真心不知道汉密尔顿是怎么想出来的,不过回过头来看,这个运算形式是为了限制其运算结果所在的空间。简单的说,当对一个三维向量进行三维旋转后,咱们但愿获得的是一个三维向量。(若是你真能获得一个四维向量,就不敢本身在家转圈圈了吧,转着转着,就进入四次元了!)那么这个左乘单位四元数,右乘其共轭的运算保证告终果是一个在三维超平面上中的纯四元数。
把左乘和右乘表达为矩阵形式会让咱们看的更清楚一些。依照

的定义,

的矩阵形式为
很明显,前面的矩阵虽然是一个4x4的四维旋转矩阵,可是它只是在右下角3x3的区域内和一个单位矩阵有所不一样。因此说,它是一个限制在三维超平面上的四维旋转。若是表达式右边不是共轭,而是任意四元数,那么咱们所做的就是一个很普通的四维旋转。若是只是左乘一个单位四元数,右边什么都不乘,那么咱们获得的是四维旋转的一个子集,这个子集并不能保证结果限制在三维超平面上。若是只右乘,不左乘也是同样同样的。
说了这么多,对于坚持到最后的你,上图一幅,以表感谢。
其实这张图解释了一个长久的疑问。为何四元数

里用的是

而不是

。这是由于

作的就是一个

的旋转,而

也作了一个

的旋转。咱们进行了两次旋转,而不是一次,这两次旋转的结果是一个旋转角为

的旋转。