glRotate produces a rotation of angle degrees around
the vector ("x", "y", "z").
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:
.ce
.EQ
left ( ~ down 20 matrix {
ccol { "x" "x" (1 - c)+ c above "y" "x" (1 - c)+ "z" s above "x" "z" (1 - c)-"y" s above ~0 }
ccol {"x" "y" (1 - c)-"z" s above "y" "y" (1 - c)+ c above "y" "z" (1 - c)+ "x" s above ~0 }
ccol { "x" "z" (1 - c)+ "y" s above "y" "z" (1 - c)- "x" s above "z" "z" (1 - c) + c above ~0 }
ccol { ~0 above ~0 above ~0 above ~1}
} ~~ right )
.EN
.sp
Where c ~=~ cos("angle"), s ~=~ sine("angle"), and
||(~"x", "y", "z"~)|| ~=~ 1 (if not, the GL
will normalize this vector).
.sp
.sp
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.