#include #include #include using namespace std; typedef unsigned char uchar; void disp(void); void idle(void); void drawAxis(void); void keyb(uchar key, int x, int y); static float angle=0; int main(int argc,char **argv){ glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow("Axis4"); glClearColor(0.0,0.0,0.0,0.0); glutDisplayFunc(disp); glutIdleFunc(idle); glutKeyboardFunc(keyb); glutMainLoop(); } void disp(void){ glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); glRotatef(angle,1.0,1.0,0.0); drawAxis(); glutSwapBuffers(); } void drawAxis(){ glBegin(GL_LINES); glColor3f(1.0,0.0,0.0); glVertex3f(0.0,0.0,0.0); glVertex3f(0.80,0.0,0.0); glColor3f(0.0,1.0,0.0); glVertex3f(0.0,0.0,0.0); glVertex3f(0.0,0.80,0.0); glColor3f(0.0,0.0,1.0); glVertex3f(0.0,0.0,0.0); glVertex3f(0.0,0.0,0.80); glEnd(); glPushMatrix(); glColor3f(1.0,0.0,0.0); glTranslatef(0.80,0.0,0.0); glRotatef(90,0.0,1.0,0.0); glutSolidCone(0.05,0.1,10,10); glPopMatrix(); glPushMatrix(); glColor3f(0.0,1.0,0.0); glTranslatef(0.0,0.80,0.0); glRotatef(-90,1.0,0.0,0.0); glutSolidCone(0.05,0.1,10,10); glPopMatrix(); glPushMatrix(); glColor3f(0.0,0.0,1.0); glTranslatef(0.0,0.0,0.80); glutSolidCone(0.05,0.1,10,10); glPopMatrix(); } void idle(void){ angle++; while(angle>360){ angle-=360; } glutPostRedisplay(); } void keyb(uchar k, int x, int y){ if(k == 's'){ glutIdleFunc(NULL); }else if(k == 'S'){ glutIdleFunc(idle); }else if(k == 'q'){ exit(0); } }