Heres the code -
Code: Select all
btVector3 EulerRotation;
QuaternionToEuler(TurretPhysics->getOrientation(), EulerRotation);
vector3df Rotation = vector3df(EulerRotation[0], EulerRotation[1], EulerRotation[2]);
float rotValue=2;
Rotation = vector3df(0,Rotation.Y+rotValue,0);
btTransform transform;
transform.setIdentity();
transform.setOrigin(TurretPhysics->getWorldTransform().getOrigin());
btQuaternion quat;
quat.setEuler(Rotation.Y,Rotation.X,Rotation.Z);
transform.setRotation(quat);
TurretPhysics->setWorldTransform(transform);Code: Select all
void QuaternionToEuler(const btQuaternion &TQuat, btVector3 &TEuler)
{
btScalar W = TQuat.getW();
btScalar X = TQuat.getX();
btScalar Y = TQuat.getY();
btScalar Z = TQuat.getZ();
float WSquared = W * W;
float XSquared = X * X;
float YSquared = Y * Y;
float ZSquared = Z * Z;
TEuler.setX(atan2f(2.0f * (Y * Z + X * W), -XSquared - YSquared + ZSquared + WSquared));
TEuler.setY(asinf(-2.0f * (X * Z - Y * W)));
TEuler.setZ(atan2f(2.0f * (X * Y + Z * W), XSquared - YSquared - ZSquared + WSquared));
TEuler *= RADTODEG;
};