一、四元数概念及运算
1.
四元数引入将实数域扩充到复数域,并用复数来表示平面向量,用复数的加、乘运算表示平面向量的合成、伸缩和旋转变换,这些观念已经在中学课程中学过了。那么,很自然的问题就是,在三维,或更高维空间中是否也有复数的类似物?也就是说,像扩充实数那样,在复数域的基础上添加一个或几个新的元素,并且让它们跟原来的复数做加减乘除,是否就可以得到一个新的数集,并且其中的元素还可以像复数域那样做加、减、乘、除运算,并满足通常复数的那些运算律,包括加法和乘法的交换律与结合律、乘法对加法的分配律等待?更进一步,我们是否可以期望用这样的数来表示三维或更高维空间中的伸缩和旋转,就像用复数表示平面向量的伸缩旋转那样方便?
历史上有很多数学家试图寻找过三维的复数,但后来证明这样的三维复数是不存在的
,即使不考虑空间旋转,只从代数角度来说,三维的复数域作为普通复数域的扩张域也是不存在的。知道了复数不能推广到三维,我们把目光移向四维复数,即四元数。四元数是由爱尔兰数学家威廉·卢云·哈密顿在1843年发现的。复数推广到四元数,必须牺牲掉数域的某一条或几条性质,哈密尔顿抛弃了乘法交换律。
2.
四元数定义四元数都是 1、i、j 和 k 的线性组合,一般可表示为 d + ai
+ bj + ck, a、b、c、d是实数。
如把四元数的集合考虑成多维实数空间的话,四元数就代表着一个四维空间,相对于复数为二维空间。
3.加乘运算
要把两个四元数相加只需将相类的系数加起来就可以,就像复数一样。至于乘法则可跟随以下的乘数表:
以上表格中,最左边的列表示被乘数,最上面行表示乘数。
可以立即验证加法交换律、结合律,以及等式 p+0=0+p=p,方程 p+x=0
恒有解,乘法结合律,还有乘法对加法的分配律都是成立的,只不过没有乘法交换律。
例如:
假设:x = 3 + i,
那么:
x + y = 3
+ 6i + j - 2k
xy =( {3 +
i} )( {5i + j - 2k} ) = 15i + 3j - 6k + 5i^2 + ij - 2ik
= 15i + 3j
- 6k - 5 + k + 2j = - 5 + 15i + 5j - 5k
二、四元数与三维空间的旋转
我们要关心的是三维空间上任意的伸缩旋转变换是否可用四元数的乘积来表示,而这一点对四元数来说是完全能够胜任的。
如果已知一个三维空间的伸缩旋转的转轴方向、旋转角度和伸缩比例,来求相应的四元数,是比较容易的。
特别地,单位化的四元数用来描述旋转:
以原点为旋转中心,旋转的轴是(α,
四元数的乘法的意义类似于Matrix的乘法-可以将两个旋转合并,例如:
Q=Q1*Q2
例子代码
/// |