四元数基础

四元数(Quaternions)简单理解就是一个四维向量 形式以下:bash

q = w+i*x+j*y+k*z = <w,i*x,j*y,k*z>
复制代码

四元数乘法法则在四元数运算中,是如同实数乘法同样基础和重要的运算 形式以下:spa

i^2+j^2+k^2=-1
ij=-ji=k
jk=-kj=i
ki=-ik=j
复制代码

可见四元数乘法不知足交换律3d

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)所得出结果的再加工.code

(w1z2 + x1y2 - y1x2 + z1w2)k
复制代码

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

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


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

"*":就是普通乘法
"·":这是内积运算
"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
复制代码

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


四元数逆运算 q^*为四元数的共轭io

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的解释class

为了简化条件,设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所构成的三维空间盒子的相对于原点的最远点

相关文章
相关标签/搜索