zoukankan      html  css  js  c++  java
  • 旋转矩阵 欧拉角 四元数比较

    旋转矩阵、欧拉角、四元数主要用于:

    向量的旋转、坐标系之间的转换、角位移计算、方位的平滑插值计算

    各方法比较

    任务/性质

    旋转矩阵

    欧拉角

    四元数

    在坐标系间(物体和惯性)旋转点

    不能(必须转换到矩阵)

    不能(必须转换到矩阵)

    连接或增量旋转

    ,但经常比四元数慢,小心矩阵蠕变的情况

    不能

    ,比矩阵快

    插值

    基本上不能

    ,但可能遭遇万向锁或其他问题

    Slerp提供了平滑插值

    易用程度

    在内存或文件中存储

    9个数

    3个数

    4个数

    对给定方位的表达方式是否唯一

    不是,对同一方位有无数多种方法

    不是,有两种方法,它们互相为互

    可能导致非法

    矩阵蠕变

    任意三个数都能构成合法的欧拉角

    可能会出现误差积累,从而产生非法的四元数

    不同的方位表示方法适用于不同的情况。下面是我们对合理选择格式的一些建议:

    l         欧拉角最容易使用。当需要为世界中的物体指定方位时,欧拉角能大大的简化人机交互,

    包括直接的键盘输入方位、在代码中指定方位(如为渲染设定摄像机)、在调试中测试。这个优点不应该被忽视,不要以优化为名义而牺牲易用性,除非你去顶这种优化的确有效果。

    l         如果需要在坐标系之间转换响亮,那么就选择矩阵形式。当然,这并不意味着你就不能用其他格式来保存方位,并在需要的时候转换到矩阵格式。另一种方法是用欧拉角作为方位的主拷贝但同时维护一个旋转矩阵,当欧拉角发生改变时矩阵也要同时进行更新。

    l         当需要大量保存方位数据(:动画),就使用欧拉角或四元数。欧拉角将少占用25%的内存,但它在转换到矩阵时要稍微慢一些。如果动画数据需要嵌套坐标系之间的连接,四元数可能是最好的选择。

    l         平滑的插值只能用四元数完成。如果你用其他形式,也可以先转换到四元数然后再插值,插值完毕后再转换回原来的形式。

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 相关阅读:
    sql server 错误9003:LSN无效(日志扫描号无效),对数据库的修复.
    用C#调用C++DLL时的字符串指针参数传递问题
    sql server 2005中的Service broker小示例(未完善)
    水晶报表钻取数据,在明细层导的时候,报表会从新加载,并显示主报表
    [转]gridview获取当前行索引的方法
    验证视图状态 MAC 失败的解决办法
    SQL SERVER 2005中对存储过程进行签名(转)
    MSChart图表控件的一些使用
    Repository模式
    职能式管理和流程式管理
  • 原文地址:https://www.cnblogs.com/skiwnchiwns/p/10344230.html
Copyright © 2011-2022 走看看