Quaternions, Axis Angles and Rotation Matrices. Which of these should I use for FP Camera?
- by Afonso Lage
After 2 weeks of reading many math formulas and such I know what is a Quaternion, an Axis Angles and Matrices. I have made my own math libary (Java) to use on my game (LWJGL). But I'm really confused about all this.
I want to have a 3D first person camera. The move (translation) is working fine but the rotation isnt working like I need. I need a camera to rotate arround world Axis and not about its own axis. But even using Quaternions, this doesnt work and no matter how much I read about Euler Angles, everybody says to me dont touch on it!
This is a little piece of code that i'm using to make the rotation:
Quaternion qPitch = Quaternion.createFromAxis(cameraRotate.x, 1.0f, 0.0f, 0.0f);
Quaternion qYaw = Quaternion.createFromAxis(cameraRotate.y, 0.0f, 1.0f, 0.0f);
this.multiplicate(qPitch.toMatrix4f().toArray());
this.multiplicate(qYaw.toMatrix4f().toArray());
Where this is a Matrix4f view matrix and cameraRotate is a Vector3f that just handle the angles to rotate obtained from mouse move. So I think I'm doing everything right:
Translate the view Matrix
Rotate the Move Matrix
So, after reading all this, I just want to know: To obtain a correct first person camera rotate, I must need to use Quaternios to make the rotations, but how to rotate around world axis?
Thanks for reading it.
Best regards,
Afonso Lage