quaternion rotation issues
Hi. I am using quaternions to do vector rotation. For some reason it is not working properly. When I try to rotate the vector 0,0,1 90 degrees along the x axis with this quaternion-0.70710678, 0, 0, 0.70710678(with the last number being w) the output is 0, -1,
-0.207107 which should be 0,-1,0. Here is my code for the vector rotation function.
Code:
ScePspFVector3 multvector(float quaternion[4], ScePspFVector3 vector)
{
float vectorQuaternion[4],resultQuaternion[4];
ScePspFVector3 resultVector;
vectorQuaternion[0] = vector.x;
vectorQuaternion[1] = vector.y;
vectorQuaternion[2] = vector.z;
vectorQuaternion[3] = 0.0f; float inverseQuaternion[4] = {-quaternion[0],-quaternion[1],-quaternion[2],quaternion[3]};
mult(resultQuaternion,quaternion, vectorQuaternion);
mult(resultQuaternion,resultQuaternion, inverseQuaternion);
resultVector.x = resultQuaternion[0];
resultVector.y = resultQuaternion[1];
resultVector.z = resultQuaternion[2];
return resultVector;
}
What am I doing wrong?