# mouse rotation

I draw a grid on the zx plain like in any 3d editing software (maya, 3dmax) and I am trying to have the same mouse rotation movement. What I mean is that when the user clicks with his mouse he can rotate the grid around like in Maya and 3dmax. Would anybody know how to do this, or maybe a tutorial on it? Thanks in advance.

It is quite easy.
Lets say the world z axis aims at you, the x to the right, the y goes up. The tricky part is that you may want to rotate around z first, then around x. But the order of operations is counter intuitive.

Get the mouse movement delta in the x and y screen axis. accumelate on some global x and y varaibles :
xrot+=xmousedelta;
yrot+=xmousedelta;

## glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glRotate( xrot,1,0,0); glRotate( yrot,0,1,0); <draw your grid and world>

You will want to clamp your xrot to an interval like [-90;90] or even more restrictive.

Some people prefer when the 2 rotations are exchanged (it is even the default mode for Blender) I really do not understand why. Anyway.

I hope it helps.

what is the “mouse movement delta” and do i need to use some sort of equation to get it?

Originally posted by <ugor>:
what is the “mouse movement delta” and do i need to use some sort of equation to get it?
i think some api’s have that info for you but just in case they don’t, you can do something like this:

``````// just an example

struct mouseinfo
{
int, x, y, oldx, oldy;
};

// ...

void mouse_callback(int x, int y, mouseinfo &mouse)
{
mouse.oldx = mouse.x;
mouse.oldy = mouse.y;
mouse.x = x;
mouse.y = y;
}

// ...

int deltax = mouse.x - mouse.oldx;
int deltay = mouse y - mouse.oldy;
``````

… something along those lines. hope that gets you in the right direction.

:regards: