仅重置一个旋转轴

时间:2014-12-02 20:33:26

标签: matrix 3d quaternions

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

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

好的,所以我接下来了:

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

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

1 个答案:

答案 0 :(得分:1)

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

这里有我的回答。 Component of a quaternion rotation around an axis