# glRotate.3G - Man Page

multiply the current matrix by a rotation matrix

## C Specification

void glRotated( GLdouble angle,

```	GLdouble x,
GLdouble y,
GLdouble z )```

void glRotatef( GLfloat angle,

```	GLfloat x,
GLfloat y,
GLfloat z )```

## Parameters

angle

Specifies the angle of rotation, in degrees.

x,  y,  z

Specify the x, y, and z coordinates of a vector, respectively.

## Description

glRotate produces a rotation of angle degrees around  the vector $\left(\text{x},\text{y},\text{z}\right)$. The current matrix (see glMatrixMode) is multiplied by a rotation  matrix with the product replacing the current matrix, as if glMultMatrix were called with the following matrix as its argument:

$\left(\text{ }\begin{array}{cccc}\hfill {\text{x}}^{2}\left(1\text{}-\text{}c\right)\text{ }+\text{ }c\hfill & \hfill \text{ }\text{ }\text{x}\text{y}\left(1\text{}-\text{}c\right)\text{ }-\text{ }\text{z}s\hfill & \hfill \text{ }\text{ }\text{x}\text{z}\left(1\text{}-\text{}c\right)\text{ }+\text{ }\text{y}s\hfill & \hfill \text{ }0\hfill \\ \hfill \text{y}\text{x}\left(1\text{}-\text{}c\right)\text{ }+\text{ }\text{z}s\hfill & \hfill \text{ }\text{ }{\text{y}}^{2}\left(1\text{}-\text{}c\right)\text{ }+\text{ }c\hfill & \hfill \text{ }\text{ }\text{y}\text{z}\left(1\text{}-\text{}c\right)\text{ }-\text{ }\text{x}s\hfill & \hfill \text{ }0\hfill \\ \hfill \text{x}\text{z}\left(1\text{}-\text{}c\right)\text{ }-\text{ }\text{y}s\hfill & \hfill \text{ }\text{ }\text{y}\text{z}\left(1\text{}-\text{}c\right)\text{ }+\text{ }\text{x}s\hfill & \hfill \text{ }\text{ }{\text{z}}^{2}\left(1\text{}-\text{}c\right)\text{ }+\text{ }c\hfill & \hfill \text{ }0\hfill \\ \hfill \text{ }0\hfill & \hfill \text{ }\text{ }\text{ }0\hfill & \hfill \text{ }\text{ }\text{ }0\hfill & \hfill \text{ }1\hfill \end{array}\text{ }\text{ }\right)$

Where $c\text{ }=\text{ }\text{cos}\left(\text{angle}\right)$, $s\text{ }=\text{ }\text{sin}\left(\text{angle}\right)$, and  $||\left(\text{ }\text{x},\text{y},\text{z}\text{ }\right)||\text{ }=\text{ }1$ (if not, the GL  will normalize this vector).

If the matrix mode is either GL_MODELVIEW or GL_PROJECTION, all objects drawn after glRotate is called are rotated. Use glPushMatrix and glPopMatrix to save and restore the unrotated coordinate system.

## Notes

This rotation follows the right-hand rule, so if the vector $\left(\text{x},\text{y},\text{z}\right)$ points toward the user, the rotation will be counterclockwise.

## Errors

GL_INVALID_OPERATION is generated if glRotate is executed between the execution of glBegin and the corresponding execution of glEnd.

## Associated Gets

glGet with argument GL_MATRIX_MODE
glGet with argument GL_COLOR_MATRIX
glGet with argument GL_MODELVIEW_MATRIX
glGet with argument GL_PROJECTION_MATRIX
glGet with argument GL_TEXTURE_MATRIX