You don't need quaternion to make vector spherical interpolation...

Content

四元数,一个听起来很cool的数学工具,可谓是数学里面的非主流。事实上,四元数并不是神秘的万能工具。相反,我一直觉得这是个“错误”的数学定义。错误的原因是他没有服从一些主流的数学定义,会导致很多误解。

四元数的定义:

http://zh.wikipedia.org/wiki/%E5%9B%9B%E5%85%83%E6%95%B8

我一开始觉得不能理解的是 x^2 = -1 这样的式子被认为会有无穷的解,通常我们知道在复数的理论中,这只可能有2组解,一个+/-i,但是解被认为有i ,j,k。而且i,j,k之间有些神秘的关系。这点有悖常理,不过,得知四元数与四维的向量空间同胚,让我还是勉强的接受吧。

四元数能取代矩阵乘法吗?不可以!四元数的乘法表面上看似乎只是类似向量的乘法,请注意,这个“四元数的乘法”并不简单,叫hamilton 乘法,可以跟cross product比美的。两者的数据操作是一样的!至于储存方面,四元数用计算时间换空间。本来旋转操作也只需要用旋转角度和一个3维向量表示。

万象锁节,听起来很怕的东西,实际上是基于Euler角的旋转无法进行人们所期望插值而已(http://fr.youtube.com/watch?v=rrUCBOlJdt4)。

只有四元数才能进行球形插值?显然不是。求到2个方向的平面垂直的向量即可,而四元数也悄悄的进行了类似的计算。

最后,总结起来人们真正怕的是复杂繁琐的矩阵公式,喜欢的是简介明朗的代数表示。

更多的关于Quaternion的FAQ请参考:http://www.gamedev.net/reference/articles/article1199.asp

...