diff --git a/freeglut/freeglut/progs/demos/shapes/shapes.c b/freeglut/freeglut/progs/demos/shapes/shapes.c
index 3b1e98e..271ea04 100644
--- a/freeglut/freeglut/progs/demos/shapes/shapes.c
+++ b/freeglut/freeglut/progs/demos/shapes/shapes.c
@@ -14,6 +14,7 @@
- q Q Quit
- i I Show info
- p P Toggle perspective or orthographic projection
+ - r R Toggle fixed or animated rotation around model X-axis
- = + Increase \a slices
- - _ Decreate \a slices
- , < Decreate \a stacks
@@ -67,6 +68,7 @@ static double offset[ 3 ] = { 0, 0, 0 };
static GLboolean show_info = GL_TRUE;
static float ar;
static GLboolean persProject = GL_TRUE;
+static GLboolean animateXRot = GL_FALSE;
/*
* These one-liners draw particular objects, fetching appropriate
@@ -252,6 +254,7 @@ static void display(void)
{
const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
const double a = t*90.0;
+ const double b = (animateXRot?t:1)*60.0;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
@@ -270,14 +273,14 @@ static void display(void)
glPushMatrix();
glTranslated(0,1.2,-6);
- glRotated(60,1,0,0);
+ glRotated(b,1,0,0);
glRotated(a,0,0,1);
table [function_index].solid ();
glPopMatrix();
glPushMatrix();
glTranslated(0,-1.2,-6);
- glRotated(60,1,0,0);
+ glRotated(b,1,0,0);
glRotated(a,0,0,1);
table [function_index].wire ();
glPopMatrix();
@@ -333,6 +336,9 @@ key(unsigned char key, int x, int y)
case 'P':
case 'p': persProject=!persProject; break;
+ case 'R':
+ case 'r': animateXRot=!animateXRot; break;
+
default:
break;
}