旋转,使用四元数
我有正确旋转我的对象的问题。 我需要的是创建一条线(沿X轴)抓住该点,以便当您沿着水平,垂直或这两个移动的组合移动它时,线条的末端会围绕球体平面的一部分和起点的线保持静止。
我正在使用子弹物理引擎,它提供像四元数和函数这样的对象来设置它们的值,例如使用欧拉角或者只是创建3个四元数,填充它们的字段(W,X,Y,Z),最后将它们相乘,得到最终的四元数。
我试过使用欧拉角度,当我使用EulerYXZ设置(仅偏航和滚动)时,效果很好。 但是,当我添加音高(应该沿线的轴线方向滚动)时,物体会旋转,但它不会再循环球体。 也许我的额外轮换引入了一些错位,我不知道如何弄清楚。
首先,我创建了代表偏航和转动的四元数:
btQuaternion qx,qy,qz,
qx.setW(1);
qx.setX(0);
qx.setY(0);
qx.setZ(0);
qy.setW( btCos( -x*DEGREE/2.0f )); //x is the example angle value, * DEGREE provides radians
qy.setX(0);
qy.setY(btSin( -x*DEGREE/2.0f ));
qy.setZ(0);
qz.setW(btCos(( y+inclined )*DEGREE/2.0f ));
qz.setX(0);
qz.setY(0);
qz.setZ( btSin( (y+inclined)*DEGREE/2.0f ));
现在我可以通过乘以它们来得到最终的四元数:
TransformStick.setRotation(qx*qy*qz);
我应该如何在线的轴上添加滚动以便不改变线的最终位置?
链接地址: http://www.djcxy.com/p/81781.html上一篇: Rotation, using Quaternions
下一篇: Quaternion from Tait