【问题标题】:Resetting only one rotation axis仅重置一个旋转轴
【发布时间】:2014-12-02 20:33:25
【问题描述】:

我想找到一种解决方案,将旋转表示为矩阵,然后重置其中一个组件。基本上,我希望能够将一个向量乘以这个矩阵,并得到一个围绕 x 和 z 轴旋转并沿 y 轴(向上)保持不变的方向。我想进行对象旋转并获得表示重力但在对象局部空间中且不考虑偏航的向量。所以我想重置偏航。

我不想将其转换为欧拉角。我更喜欢使用四元数或直接对旋转矩阵执行一些操作序列,以避免某些角度可能出现的错误。

好的,所以我有以下内容:

btTransform t; 
mBody->getMotionState()->getWorldTransform(t); 
btMatrix3x3 trans = t.getBasis().inverse(); 
btVector3 up = (trans * btVector3(0, 1, 0));

我意识到如果我使用四元数,那么我会得到完全错误的结果(为什么?)。现在我在对象空间中得到一个向量,它代表世界空间中的向上向量。但是我想旋转这个向量,以便当模型绕 Y 轴零旋转时,它代表对象空间中的全局向上向量。所以我必须以某种方式将这个向量旋转回来。如何?

【问题讨论】:

    标签: matrix 3d quaternions


    【解决方案1】:

    您可以使用传递“Y”轴的四元数摆动扭曲分解。它将四元数分解为绕Y轴旋转和绕垂直于Y轴的旋转。

    在这里,在我的回答中进行了描述。 Component of a quaternion rotation around an axis

    【讨论】:

      猜你喜欢
      • 2018-02-25
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 2017-05-28
      相关资源
      最近更新 更多