四元数基础

四元数(Quaternions)简单理解就是一个四维向量

形式如下:

q = w+i*x+j*y+k*z = 

四元数乘法法则在四元数运算中,是如同实数乘法一样基础和重要的运算

形式如下:

i^2+j^2+k^2=-1
ij=-ji=k
jk=-kj=i
ki=-ik=j

可见四元数乘法不满足交换律

q1 = w1+i*x1+j*y1+k*z1
q2 = w2+i*x2+j*y2+k*z2
q1*q2 = 
 (w1w2 - x1x2 - y1y2 - z1z2)
+(w1x2 + x1w2 + y1z2 - z1y2)i
+(w1y2 - x1z2 + y1w2 + z1x2)j
+(w1z2 + x1y2 - y1x2 + z1w2)k

q1*q2等号右侧的多项式就是根据(w1+i*x1+j*y1+k*z1)*(w2+i*x2+j*y2+k*z2)所得出结果的再加工.

(w1z2 + x1y2 - y1x2 + z1w2)k

例如上面的多项式中的第三项-y1x2就是通过j*y1*i*x2转换而来.
j*y1*i*x2 = j*i*y1*x2 = -k*y1*x2.

这里要再次重申: 四元数乘法不满足交换律,ij != ji.

基于上面q1*q2的结果,我们最终得以将四元数乘法转换成向量形式:

"*":就是普通乘法
"·":这是内积运算
"X":这是Cross product 运算(百度百科里面Outer product 和Cross product都有外积的叫法,英文避免歧义)
q = s +v,s为w,v为i*x,j*y,k*z
q1*q2 = s1*s2 - v1·v2 + s1*v2 + s2*v1 + v1 X v2

向量形式直观的告诉了我们,四元数相乘时发生了什么,其结果也为一个四元数,具体解释详见文章底部.


四元数逆运算

q^*为四元数的共轭

q^-1 = q^*q^2
q*q^-1 = (q*q^*)/q^2 = q^2/q^2 = 1
q^-1*q = (q^*q*)/q^2 = q^2/q^2 = 1

关于q1*q2的解释
为了简化条件,设s1=s2=s=1,v1和v2为平面的基向量

那么

s1*v2 + s2*v1=v2+v1,其结果就是位于v1与v2之间的一条向量v3

v3 + v1 X v2的结果则为:


这时v3 + v1 X v2的结果向量就位于由v1,v2,v4所构成的三维空间盒子的相对于原点的最远点


你可能感兴趣的:(四元数基础)