Quaterion小结

来源:互联网 发布:淘宝商品地址怎么复制 编辑:程序博客网 时间:2024/06/04 18:49

概述:

       本文的先介绍了数学上的quaternion几本概念和运算规则, 然后进行推导特定的quaternion于3D空间变换的关系。quaternion真有趣啊,竟然能和3D空间变换搞在一起.....

 

【quaternion的记法】

 

 

 

【quaternion作为complex number(复数)的扩充】

 复数由一个实部和虚部组成: a + bi,一个实数k用复数表示为[k, 0i].

 复数的运算法则:

 

 复数的共轭:

 

 复数的模:

 

 利用复数进行2D向量的旋转:

 向量p=[x, yi], 旋转角度theta, 用复数[sin8, cos8i]表示.

 

 

 

   下面对四元数进行扩展,提出3个虚部i, j, k.

  

 

【quaternion Negation(相反四元数)】

 

 

【Identity quaternion(单位四元数)】

  q = [1, 0]  or q = [-1, 0]

 

【quaternion magnitude(四元数的模)】

 

 

【quaternion Conjugate and inverse(四元数的共轭和逆)】

 

 

【Cross Product of Quaternion(叉乘)】

 

满足结合律,但不满足交换律:

 

四元数乘积的逆:

【Quaternion "Difference"】

          qa = b

  =>   qaa-1 = ba-1

   =>   q = ba-1

 

【Dot Product of Quaternion(点积)】

【Quaternion Log(求四元数的对数)】

 复习高中数学:

 ab = N         a为底数,b为指数, N为幂值. 

 logaN = b     b为a的对数

 

【Quaternion Exp(四元数作为指数运算)】

 

【Quaternion Exponentiation(求幂, power)】

 

 记住: (qt)s != q(ts)

【利用quaternion实现空间的变换】

我们用[0, (x, y, z)] 代表三维空间中的q点,[cos(θ/2), (sin(θ/2)nx, sin(θ/2)ny, sin(θ/2)nz) ] 代表四元素p, 进行以下运算后

q1 = pqp-1

你会发现得到的结果是q点绕n轴旋转了θ度。我们试着进行多次旋转,先进行a旋转再进行b旋转得到

q1  = b(aqa-1)b-1, 由于四元数叉乘满足结合率不满足交换率,

 = (ba)q(a-1b-1), 由于a-1b-1 = (ba)-1

 =(ba) q (ba)-1

              先执行a旋转再b旋转等于ba叉乘所代表的单一旋转。

 

【利用quaternion的插值实现空间的平滑变换】

 

 

 球面插值:

 

 

四元数能作为底数,记作 qt (不要和指数运算混淆,指数运算只接受一个四元数作为参数,而四元数求幂有两个参数 ---- 四元数和指数)。四元数求幂的意义类似于实数求幂。回忆一下,a0 = 1 a1 = aa为非零标量。当t0变到1时,at1a。四元数求幂有类似的结论:当t0变到1 qt[1, 0 ] q 。从四元数的叉乘可以证明这一结果。

这对四元数求幂非常有用,因为它可以从角位移中抽取"一部分"。例如,四元数 q 代表一个角位移,现在想要得到代表1/3这个角位移的四元数,可以这样计算: q1/3

指数超出[0, 1]范围外的几何行为和预期的一样(但有一个重要的注意事项)。例如, q2代表的角位移是 q 的两倍。假设 q 代表绕x轴顺时针旋转30度,那么 q2代表绕x轴顺时针旋转60度, q-1/3代表绕x轴逆时针旋转10度。

上面提到的注意事项是,四元数表达角位移时使用最短圆弧,不能"绕圈"。继续上面的例子, q4不是预期的绕x轴顺时针旋转240度,而是逆时针80度。显然,向一个方向旋转240度等价于向相反的方向旋转80度,都能得到正确的"最终结果"。但是,在此基础上的进一步运算,产生的就可能不是预期的结果了。例如,(q4)1/2不是 q 2,尽管我们感觉应该是这样。一般来说,凡是涉及到指数运算的代数公式,如(as)t = a(st),对四元数都不适用。

原创粉丝点击