zoukankan      html  css  js  c++  java
  • 第五章第五节 四元数

    5.5 四元数

        最后一种方位表示可以用轴角表示的变种,实际上我们用他表示旋转的时候,也可以简化的从绕轴旋转的角度来看待这种表示法,这就是四元数,由爱尔兰数学家William Hamilton爵士与19世纪发明。并由Ken Shoemake在20世纪80年代引入计算机图形领域。四元数由四个数组成,并且没有万向锁的问题。并且在数学上面的连接操作非常简单。因此如果正确构造的话,它在旋转向量计算方面非常有效。

        虽然任何一个四元数都可以用来表示旋转。但是我们主要使用的还是单位四元素。所谓的单位四元数即是w2+ v*v=1,其中w是向量分部,v是数量分部。使用单位四元数的理由有三个:一是使得旋转和转换计算更加有效率。二是减少了浮点数错误,因为正规化后,数字都在-1到1之间,浮点数在这个范围内的精度非常高。最后单位四元素和轴角表示天然的在形式上的统一。一个单位四元数,数量w可以看做一个旋转角度θ,更规范的说法是w=cos(θ/2),

    v=sin(θ/2)r.比如我们想要绕z轴旋转90度,我们的轴向量是(0,0,1),旋转角度的一半是π/4(弧度),这个四元数各个分部就是  w=cos(π/4),x =y==0*sin(π/4)=0,z=1*sin(π/4)= sin(π/4).

        四元数的加法和内积与向量的加法和内积一样。一个四元数乘以-1,结果与原四元数互为相反数。四元数的相反数表示旋转的方向相反,但是他并不是表示原四元数表示的旋转的逆,如果原四元数表示绕轴v旋转θ度角,相反数则表示绕轴-v旋转2π-θ度角。因此旋转的结果是一样的。四元数的长度用四个分量的平方和再开方来计算。正规化一个四元数用四元数除以他的长度来获取。

        四元数的内积和向量一样,用每个分量的积然后求和。如果内积接近1,表示他们表示的旋转越接近。因为我们知道四元数的相反数表示相同的旋转,因此如果内积结果越接近-1,表示他们也是越接近相同的旋转。

        四元数求逆非常简单,因为绕一个轴旋转2θ,他的逆可以看成绕这个轴旋转-2θ,因此单位四元数 (cos(θ),sin(θ)x,sin(θ)y,sin(θ)z) 的逆是(cos(-θ),sin(-θ)x,sin(-θ)y,sin(-θ)z) 也就是(cos(θ),-sin(θ)x,-sin(θ)y,-sin(θ)z) 因此四元数(w,x,y,z)的逆为(w,-x,-y,-z)。

  • 相关阅读:
    ASP.NET WebAPI Get和Post 传参总结
    关于EF第一次加载慢或过一段时间不访问时再次访问加载慢问题的总结
    jqthumb.js缩略图插件-让缩略图正常显示而不变形
    解决kindeditor编辑器中使用百度地图时不能拖动坐标的问题
    Jzoj3591 数据
    Jzoj3590 珠链
    Jzoj3590 珠链
    C++蜂鸣器歌曲1
    C++蜂鸣器歌曲1
    Jzoj2309 辽哥游戏
  • 原文地址:https://www.cnblogs.com/qzzlw/p/2679503.html
Copyright © 2011-2022 走看看