我想找到一个解决方案,将旋转表示为一个矩阵,然后重置它的一个分量。基本上,我希望能够将一个向量乘以这个矩阵,得到一个方向,即绕x轴和z轴旋转,并沿y轴恒定(向上)。我想做物体旋转,得到代表重力的向量,但在物体局部空间,不考虑偏航。所以我想重置偏航。
我不想把它转换成欧拉角。我更喜欢使用四元数,或者直接在旋转矩阵上执行一些操作序列,以避免某些角度可能出现的bug。
好的,我的想法是:
btTransform t;
mBody->getMotionState()->getWorldTransform(t);
btMatrix3x3 trans = t.getBasis().inverse();
btVector3 up = (trans * btVector3(0, 1, 0));
我意识到,如果我使用四元数,那么我会得到完全错误的结果(为什么?)现在我在对象空间中得到一个矢量,它表示世界空间中的上方向矢量。但我想旋转这个向量,以便当模型绕Y轴旋转为零时,它表示对象空间中的全局上方向向量。所以我必须以某种方式将这个向量旋转回来。多么?
发布于 2014-12-03 16:39:12
可以对传递的"Y“轴使用四元数摆动扭曲分解。它将四元数分解为绕Y轴旋转和垂直Y轴旋转。
在我的回答中,它在这里被描述。Component of a quaternion rotation around an axis
https://stackoverflow.com/questions/27258419
复制相似问题