Hello Guest

# How to get Yaw, Pitch, and Roll from a Matrix?

• 0 Replies
• 5486 Views #### CyanPrime

• • 1 ##### How to get Yaw, Pitch, and Roll from a Matrix?
« on: May 23, 2011, 04:26:16 »
Is this correct? If now can you post what would be?

Code: [Select]
`float yaw = (float) -(Math.tan(m.m10/m.m00));        float pitch = (float) -(Math.tan((-m.m20)/(Math.sqrt(Math.pow(m.m21, 2) + Math.pow(m.m22, 2)))));        float roll = (float) -(Math.tan(m.m21/m.m22));`
Full source

Code: [Select]
`import org.lwjgl.opengl.GL11;import org.lwjgl.util.vector.Matrix3f;import org.lwjgl.util.vector.Vector3f;public class Camera {     //3d vector to store the camera's position in    Vector3f position = null;    Vector3f lookAt = null;    //the rotation around the Y axis of the camera    float yaw = 0;    //the rotation around the X axis of the camera    float pitch = 0;    //the rotation around the Z axis of the camera    float roll = 0;    public Camera(float x, float y, float z)    {        //instantiate position Vector3f to the x y z params.        position = new Vector3f(x, y, z);        lookAt = new Vector3f();    }    public void lookThrough()    {        Matrix3f m = new Matrix3f();        Vector3f out = new Vector3f();        Vector3f.sub(position, lookAt, out);        out.normalise();        //set forward vector        m.m00 = out.x;        m.m01 = out.y;        m.m02 = out.z;        //set right vector        m.m10 = 1;        m.m11 = 0;        m.m12 = 0;        //set up vector        m.m20 = 0;        m.m21 = 1;        m.m22 = 0;        yaw = (float) -(Math.tan(m.m10/m.m00));        pitch = (float) -(Math.tan((-m.m20)/(Math.sqrt(Math.pow(m.m21, 2) + Math.pow(m.m22, 2)))));        roll = (float) -(Math.tan(m.m21/m.m22));        //roatate the pitch around the X axis        GL11.glRotatef(pitch, 1.0f, 0.0f, 0.0f);        //roatate the yaw around the Y axis        GL11.glRotatef(yaw, 0.0f, 1.0f, 0.0f);        //roatate the yaw around the Y axis        GL11.glRotatef(roll, 0.0f, 0.0f, 1.0f);        //translate to the position vector's location        GL11.glTranslatef(position.x, position.y, position.z);    }}`
« Last Edit: May 23, 2011, 04:28:06 by CyanPrime »