对四元数旋转方法的一个更直观说明

听说现在搞空间控制都得学四元数,于是找了几篇文章看了看,但是一直二蒙二蒙的,前几天看到了《Understanding Quaternions 理解四元数》http://www.qiujiawei.com/understanding-quaternions/  这篇文章,茅塞顿开,自己拿纸笔画了画,终于搞明白了。搞明白了以后,我觉得其实还可以写得再直观一点,再简洁一点,所以我决定写一篇博客试着挑战一下,一来巩固自己的理解,二来试一试用新学的LaTex写公式。

四元数的发明者的历史什么的就不多说了,相信大家都看了很多了,我们还是聚焦于四元数本身吧。不过呢,说到四元数,还不得不先从复数说起。我们都知道复数,或者说虚数单位“i”这个东西的来历,是因为实在在已知的数轴上找不到一个数来对应\sqrt{-1}这个东西了,这个问题困扰了思想质朴的古代数学学们几千年,特别是在解方程的时候,二次方程判别式\Delta小于0时就无解,这还罢了,到了三次方程,好不容易鼓捣出了通用求根公式,却发现经常会遇到开负数平方的情况,如果还像二次方程那样认为它无解吧,又偏偏很多情况下实际上是有实解的,现在我们知道,很多情况下求根公式中间过程中会产生一对共轭复根,最后它们的虚部会抵消掉,但是那时的数学家虽然已经知道偷偷摸摸的加入这么一个中间变量,但还是不能接受这也是一种数的概念,只能自欺欺人的说这只不过是个无意义的临时变量,没有实际意义,所以叫“虚数”。最后终于有那么位比较离经叛道的某人不管三七二十一地说“我觉得不要偷偷摸摸拐弯抹角的用他又不承认他,应该给他个名分”。这个做法真是石破天惊,一下子打开了一扇通往一 个神秘新世界的大门。

现在i终于有了个名分了,可是,实数可以用数轴上的一个点来表示,那虚数怎么办呢?数轴上,或者严格说实轴上可是没有他的位子的。也不知道是哪位先贤,某天在纸上画了一条线,这个是大家都知道的实轴,当他想画一个复数时,他的眼光停留在了数轴上下方广阔的空白空间上,突然想到了既然可以用平面直角座标系来表示一个二元函数x,y的关系,为什么不用来表示复数中的实部和虚部这一对二元关系呢?于是用平面直角座标系来表示复数的方法诞生了,复数从此与平面空间联系了起来,人们逐渐发现用复数来表示二维平面的关系有非常大的便利,因此复数的使用越来越广,复变成为一种重要的数学分支。

这里我们不讲太多复变函数方面的东西,只关注一下复数与二维平面的关系。一个实数,比如1吧,乘以i ,就变成了一个纯虚数 i ,从复平面图上来看,就是从实轴上跳到了虚轴上,再乘以一个 ii×i=-1,又跳到了负实轴上,接着乘下去,就会一直绕着原点逆时针转圈圈,所以可以看出每乘一次 i,就是逆时钟转 \pi/2。那么如果乘 -i 呢,就是顺时针转(注意这个结论)。那么是不是任意一个复数乘 i都是转\pi/2呢?结论大家其实都知道,只是我这里还是要用一个比较特别的思路说一下。

假设一个复数z=a+bi,我们可以把它拆开来,看作是两个相互垂直的矢量a\cdot\vec{r}和矢量b\cdot\vec{i}的和,这里\vec{r}是实轴方向的单位矢量,\vec{i}是虚轴方向的单位矢量,a ,b是实系数,代表矢量的长度。一个复数就可以看作是这么两个矢量的矢量和。那么将这个z去乘i , 也可以看作是将两个分量 a\cdot\vec{r}b\cdot\vec{i}分别去乘 i再加起来。此时  a\cdot\vec{r}变成了 a\cdot\vec{i}},旋转了\pi/2b\cdot\vec{i}变成了 b\cdot-\vec{r},也旋转了\pi/2,它们之间的相对位置和大小都没有变,只是整体旋转了\pi/2,因此他们的合矢量当然也就旋转了\pi/2,其它都没有变。所以我们可以得到结论,任意复数 z=\vec{z},它乘以 i都是逆时针旋转\pi/2

为什么要这样解释这个\pi/2的转动呢?因为这样比较好理解如何旋转任意角度。我们可以把一个矢量的旋转过程分成两个过程,比如要把矢量 z=\vec{z}旋转 \theta角度,我们可以先把 \vec{z}旋转\pi/2,并且把它的长度缩短为 \sin\theta,这个过程相当于  z \cdot i \sin\theta,然后,再将原来的矢量缩短为\cos\theta倍大小,并加上这个旋转并缩小过后的矢量,也就是 z\cdot \cos\theta + z\cdot i \sin\theta, 最终的结果就是将z旋转了\theta角度。而

 z\cdot \cos\theta + z\cdot i \sin\theta = z \cdot(\cos\theta + i \sin\theta),所以旋转 \theta角度就相当于乘以一个复数\cos\theta + i \sin\theta 。  

                                                             

                                              

        好了,说了这么多,总算把复数的有关知识复习完了,之所以先说这些,是因为四元数的思想,其实和这个是相同的。接下来我们正式开始四元数的介绍。

自从发现了复数可以表示二维平面后,很多人就在想三维空间能不能也用一种复数来表示,能不能也有像二维复数这样方便的表示旋转、拉申等操作的方法。一个很自然的想法是把复数空间简单的扩展成三维的,比如在实轴、虚轴  i之外,再扩展一个与这两个轴正交的轴 j轴,顺便说一下,这个j轴的正方向如果朝背离我们的方向而去,就是一个左手系,如果朝着我们的方向就是一个右手系。两种定义都有人用,我们从小学习的数学书上一般都是左手系,而上面引的那篇文章用的是右手系。我个人习惯还是倾向左手系。

                                                      

 

好了,我们现在得到了一个三维空间,有三个轴,分别是实轴、i轴 和 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值