Mouseinput and MatrixView (OpenGL 3.2)

Hello.
I’m trying to implement/add mouse to my test app. My test app is one of the LWJGL OpenGL 3.2 app from wiki page
http://lwjgl.org/wiki/index.php?title=The_Quad_with_Projection,_View_and_Model_matrices

What I did:

  • before while loop in the constructor I add this part of code:

Mouse.setCursorPosition(800/2, 600/2);
Mouse.setGrabbed(true);

  • in method “logicCycle()” before “// Translate camera” i added this part of code:

if(Mouse.isGrabbed()) {
	horizontalAngle+= mouseSpeed * Mouse.getDX();
	verticalAngle+= mouseSpeed * Mouse.getDY();

	mouse();
}

where


float horizontalAngle = 3.14f;
float verticalAngle = 3.14f;
private float mouseSpeed = 0.005f;

private Vector3f direction = new Vector3f();
private Vector3f right = new Vector3f();
private Vector3f up = new Vector3f();

public void mouse(){
        direction.set(
                        (float)Math.cos(verticalAngle) * (float)Math.sin(horizontalAngle), 
                        (float)Math.sin(verticalAngle),
                        (float)Math.cos(verticalAngle) * (float)Math.cos(horizontalAngle));
        
        right.set( 
                        (float)Math.sin(horizontalAngle - PI/2.0f), 
                        0,
                        (float)Math.cos(horizontalAngle - PI/2.0f));
        up = cross(right, direction);
        
        viewMatrix.m00 = up.x;
        viewMatrix.m01 = up.y;
        viewMatrix.m02 = up.z;
        viewMatrix.m10 = right.x;
        viewMatrix.m11 = right.y;
        viewMatrix.m12 = right.z;
        viewMatrix.m20 = direction.x;
        viewMatrix.m21 = direction.y;
        viewMatrix.m22 = direction.z;           
}

private Vector3f cross(Vector3f b, Vector3f c){
        Vector3f cross = new Vector3f();
        cross.x = (b.y*c.z) - (b.z*c.y);
        cross.y = (b.z*c.x) - (b.x*c.z);
        cross.z = (b.x*c.y) - (b.y*c.x);
        return cross;
}

Of course mouse working but not correctly, camera is set in strange positions.
Based on this example app (which display only square), when I turn to the right by 90 degrees and I move the mouse to up another 90 degrees square will be on bottom camera but still should be on the left.
Please HELP I start freaking out how to count this matrix. I assume i have bad count in mouse method.

It seems that the code works fine problem lies in the fact that the camera is turned to the left by 90 degrees.
If the mouse is turned off camera back to the normal.
It seems that you need to set something more but i don’t have idea what.