zoukankan      html  css  js  c++  java
  • 关于Unity四元数相乘先后顺序的问题

    在unity中四元数和向量相乘可以变换旋转。四元数之间相乘类似矩阵之间相乘的效果。

    矩阵相乘的顺序不可互换,只有特殊条件矩阵才可互换。四元数相乘类似,今天就因为这个问题掉进坑里了,记录一下

    问题大致是,有一个cube,它会看向左边的板,用角轴旋转,但我想要y轴看向它

    Quaternion.AngleAxis(-90, Vector3.forward);

    以下代码就是没有注意相乘顺序导致的结果

    var quat1 = Quaternion.AngleAxis(-90, Vector3.forward);
    var quat2 = Quaternion.AngleAxis(Time.time * 180, referenceTransform.forward);
    transform.rotation = quat1 * quat2;

    修改后正确结果如下

    transform.rotation = quat2 * quat1;

    所以在处理四元数或者矩阵相乘操作时,注意顺序,并且避免xxx*=quat这样的操作,尽量用直观写法

  • 相关阅读:
    java-第二周学习总结
    春季总结
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
    第八周作业
    网络层思维导图
    数据链路层思维导图
    Mysql数据库的基本操作之建表操作(2)
  • 原文地址:https://www.cnblogs.com/hont/p/5958167.html
Copyright © 2011-2022 走看看