void glRotated
|
( |
GLdouble angle
, GLdouble x
, GLdouble y
, GLdouble z
); |
void glRotatef
|
( |
GLfloat angle
, GLfloat x
, GLfloat y
, GLfloat z
); |
glRotate produces a rotation of angle degrees around the vector (xyz). 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:
x2(1−c)+c | xy(1−c)−zs | xz(1−c)+ys | 0 |
yx(1−c)+zs | y2(1−c)+c | yz(1−c)−xs | 0 |
xz(1−c)−ys | yz(1−c)+xs | z2(1−c)+c | 0 |
0 | 0 | 0 | 1 |
Where c=cos(angle), s=sin(angle), and ||(xyz)||=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.
This rotation follows the right-hand rule, so if the vector (xyz) points toward the user, the rotation will be counterclockwise.
GL_INVALID_OPERATION is generated if glRotate is executed between the execution of glBegin and the corresponding execution of glEnd.
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