我记得上大学时,我的数学老师是个个子矮小的廖教授,纺大教授,这么多年过去了,他给我们讲课时那自信满满的样子,我就会不自觉的露出笑容,即便如此,当年教授给我们的知识也很多被遗忘了,知识就是这样,长期不用了,就会遗忘了,只有不停的去使用,你才是它的主人,一旦撒手,它就是你的主人,它认识你,你不认识它!
就比如我现在心心念念的去追寻的四维时空转换问题,其实当初大学老师都教过我们了。只是那些书都在我原来的房间楼梯间里发霉了!
现在回想起来,真不能怪我,知识用来方恨少,提笔欲书坎坷多!
下面我们就来回顾一下四元数的前世今生:
四元数(Quaternions)是一种扩展了复数系统的数系,由爱尔兰数学家威廉·罗恩·哈密顿(William Rowan Hamilton)在1843年提出。四元数可以用来表示三维空间中的旋转,这在计算机图形学、机器人学和航空航天工程等领域非常有用。
一个四元数可以写成以下形式:
[ q = a + bi + cj + dk ]
其中,(a)、(b)、(c)、(d) 是实数,而 (i)、(j)、(k) 是四元数的三个虚部单位。这三个虚部单位满足以下乘法规则:
[ i^2 = j^2 = k^2 = ijk = -1 ]
[ ij = k, \quad ji = -k ]
[ jk = i, \quad kj = -i ]
[ ki = j, \quad ik = -j ]
这些规则表明四元数的乘法不满足交换律,即一般情况下 (pq eq qp)。
四元数的一个重要应用是表示三维空间中的旋转。特别是,一个单位四元数可以表示一个旋转轴和一个旋转角度。给定一个单位四元数 (q = a + bi + cj + dk),其中 (a^2 + b^2 + c^2 + d^2 = 1),它可以用来表示围绕轴 ((\theta, u)) 的旋转,其中 (\theta) 是旋转角度,(u = (b, c, d)) 是旋转轴的方向向量,(a = \cos(\theta/2))。
使用四元数进行旋转的优势在于避免了万向节锁(gimbal lock)的问题,并且在数值上更加稳定。此外,四元数的插值(如球面线性插值,Slerp)提供了平滑的旋转路径,这在动画和实时渲染中非常有用。
四元数在现代技术中的应用包括但不限于:
计算机图形学中的三维模型旋转
航空航天工程中的姿态控制