在计算机图形学、惯性陀螺仪、机器人编程等领域涉及到物体或关节在三维空间旋转的算法时,我们基本上都会用到四元数。四元数这个概念对于大多数同学来说是个很特别的存在:它没有出现在大学高等数学的课本中,也是大多数同学第一次遇到的在四维空间做运算的数学概念,很难建立直观的理解,所以很多程序员也只是复制粘贴代码来实现功能,但并不知道其中的原理。而网上大部分资料都在介绍计算法则,基本不讨论其在线性空间的意义和作用,这正是本文要重点讨论的内容。
看一下四元数在百科中的介绍:
看到这样的解释我是很崩溃的,而网上大部分资料也都是这种思路:先说明四元数的结构,然后告诉你i,j,k的运算关系(如上面的乘法表)。给人感觉这个概念就像是数学家William Hamilton拍脑袋硬编个规则而来的。某些同学不禁会问,为什么i*j等于k,而i*k怎么就等于了-j了?这是硬生生定下的规则吗?如