美文网首页
[摘要]四元数

[摘要]四元数

作者: 延澈左 | 来源:发表于2017-11-21 14:51 被阅读0次

    《3D游戏编程大师技巧》 上册 4.10章节

    1.四元数的思想来源于复数
    复数:当只有一个虚部i的时候,复数的几何表示可以表示为二维复平面。
    四元数:从一个虚部i 扩展到 三个虚部 i,j,k。四元数为一个实部+3个虚部:P=p0+p1*i+p2*j+p3*k。其中q0为实部。
    其中,<i,j,k>可以看做一个三维空间,i,j,k分别为三个方向上的基向量,并且,i*j=j*k=k*j=-1。
    那么四元数可以用向量方式表示:<p0,p1,p2,p3>。
    
    1.5 用四元数表示旋转轴和旋转角度
    情况1.给定一个旋转轴Vq(单位向量),和绕此轴的旋转角度θ,得到四元数:
        Q=cos(θ/2)+sin(θ/2)*Vq
    情况2.给定了旋转的标准欧拉角(xθ,yθ,zθ),xθ为x轴的倾角,yθ为y轴的偏航角,zθ为z轴的倾斜角,要得到用Q来表示旋转轴和旋转角的四元数。
        根据Q(final)=xyz三个轴的四元数的乘积(顺序不限)
                    =Q(xθ)*Q(yθ)*Q(zθ)    (顺序不限)
                    =Q(zθ)*Q(yθ)*Q(xθ)    (3D引擎中常用顺序)
        首先分别计算出Q(xθ)、Q(yθ)、Q(zθ):
          根据Q=cos(θ/2)+sin(θ/2)*Vq知道,知道了旋转轴和角度可以获得四元数,得到:
              Q(xθ)=cos(xθ/2)+sin(xθ/2)*(1·i+0·j+0·k)   (基向量为<1,0,0>)
              Q(yθ)=cos(yθ/2)+sin(yθ/2)*(0·i+1·j+0·k)   (基向量为<0,1,0>)
              Q(zθ)=cos(zθ/2)+sin(zθ/2)*(0·i+0·j+1·k)   (基向量为<0,0,1>)
    
    2.四元数旋转
    向量V,绕Vq轴旋转θ度,用单位四元数Q=cos(θ/2)+sin(θ/2)*Vq表示旋转轴和旋转向量,Q*为Q的共轭复数,则向量V旋转结果V'为如下:
     右手坐标系:
        1.顺时针旋转:
          V'=Q*·V·Q
        2.逆时针旋转:
          V'=Q·V·Q*
     左手坐标系:
        1.顺时针旋转:
           V'=Q·V·Q*
        2.逆时针旋转:
           V'=Q*·V·Q
      得到的V'的v'0=0,因此,可以去掉v'0,用v=<v'1,v'2,v'3>来代表旋转后得到的向量
      注意,只有当Q为单位四元数的时候,Q﹣¹=Q*
    
    3.复数相关的知识

    相关文章

      网友评论

          本文标题:[摘要]四元数

          本文链接:https://www.haomeiwen.com/subject/zpvyextx.html