对四元数的一些理解

对四元数的一些理解

编写时间:2017-5-23

1、先看个小视频,对四元数有点印象:【Numberphile数字狂】神奇四元数 @柚子木字幕组

2、再来四元数的基本概念,这篇文章是我找到的最好的,基本上四元数讲得比较详细了

Understanding Quaternions 中文翻译《理解四元数》

3、有了上面的基础后我们知道了一个公式:p=qpq1

    因为看了一些资料,但是基本只有公式,对于为何这样旋转很多都避重就轻,就演示公式怎么算出结果,

  基本没有见到讲为什么这样旋转的,氛围有这么差?有点气。

    这里记录下对个人对四元数旋转的理解,许久不碰数学很多内容忘了都是跟着上面第二条的内容边看

  边查。对旋转的理解也只能算是由结果猜原理,对此仍然有许多不理解的地方。

    三维中p点绕三维向量v旋转Θ时q=(cos(Θ/2),sin(Θ/2)v),比如我们需要旋转90°,这里却分成了2个45°。

  我对这里的理解是:如果不是特殊情况的话qp结果将是一个普通的四维数,这没办法正确地映射到

  三维超平面(第四维为0的特殊的四维),因为第四维不为零,结果就不与我们最初的点在同一三维空间。

    为了解决这个问题,所以先只旋转一半,再用逆反过来旋转另一半,这样正好将第一次旋转产生的第四

  维变为0,这样就能正确地映射到三维超平面。

  第一次旋转使用右手螺旋,第二次旋转应该用逆的左手螺旋。

 

    例如:

      以下格式不特别说明都是(x,y,z,w),w为第四维,与一般常用的(w,x,y,z)格式有点区别,但不影响结果。

      p=(1,2,3,0)//需要旋转的3维点坐标为(1,2,3)

      q=(a,b,c,d)//旋转轴与角度的组合

      q-1=(-a,-b,-c,d)//q的逆等于q*(这里是单位四元数:a2+b2+c2+d2=1,q-1=q*/|q|2=q*)

      四元数乘积公式:

        qaqb=[Sa,A][Sb,B]         //A,B是三维向量,Sa,Sb是实数

             =[SaSb-A·B , SaB+SbA+AxB]      //向量的 “·” 乘与 “x” 乘

      qp  =(3b-2c+d,3a-c+2d,2a-b+3d,a+2b+3c)//右手螺旋的正旋转

      pq-1=(3b-2c+d,3a-c+2d,2a-b+3d,-a-2b-3c)//逆的左手螺旋正旋转?不知道是不是这样说的

      通过qp与pq-1的结果对比我们发现这2个旋转的结果除了第四维互为相反数,前三维的结果是一样

    的。如果只看前三维部分,就是沿着相同的方向转过了相同的角度,到达相同的位置。加上第四维互

    为相反数,我们可以大胆猜想一下是否可以通过这样连续的2次旋转将不为零的第四维抵消,重回三维

    超平面(纯四维数),即我们需要旋转的点同一个三维空间?这不就是四元数旋转公式p=qpq1吗,

    p'第四维就是0。

      

      这也就是为什么我们经常看到的四元数旋转时,为什么三维中p点绕三维向量v旋转Θ时q=(cos(Θ/2),

    sin(Θ/2)v)(这是常用表示法第四维在前)其中为什么Θ/2与2维旋转(x+y*i)*(cosΘ+sinΘ*i)的Θ不同,因为2维一次

    旋转就可以了,四元数却要连续旋转2次相同角度来抵消第四维的变化所以当然是Θ/2了。

 

  

 

从这里借个图:四元数与旋转

 

                      然后自己画了一个图(将pq-1移动到(qp)q-1的位置)

四元数的差:

  所谓的 “差”,被定义为一个方位到另一个方位的角位移,顺序是不能错的,从左向右.

  由    P1P'=P2

  =>    P1-1P1P'=P1-1P2

  =>    EP'=P1-1P2

  =>    P'=P1-1P2

posted @ 2017-05-23 17:35  dyan1024  阅读(760)  评论(0编辑  收藏  举报