#include // pour MacOSX #include // pour MacOSX #include // pour MacOSX // #include "glut.h" // pour PC /* Compilation sur MacOSX : gcc -framework OpenGL -framework GLUT -framework Cocoa -o transf transf.c Compilation sur PC : gcc transf.c -o transf -L/usr/X11R6/include/GL -L/usr/X11R6/lib -lGL -lGLU -lglut -lm -lX11 22/04/04 - Didier STRAUS - Info. graphique - Carre qui tourne en OpenGL Un carre qui tourne sur lui meme et qui decrit un cercle. http://www.Software-DS.com */ /* variables globales */ int a=0,b=0; int inca=2,incb=2; /* prototypes */ void affichage(); void clavier(unsigned char touche,int x,int y); void reshape(int x,int y); void idle(); /* main */ int main(int argc,char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); glutInitWindowPosition(200,200); glutInitWindowSize(500,500); glutCreateWindow("transf - DS"); glClearColor(0,0,0,0); glColor3f(1,1,1); glShadeModel(GL_FLAT); glutDisplayFunc(affichage); glutKeyboardFunc(clavier); glutReshapeFunc(reshape); glutIdleFunc(idle); glutMainLoop(); return 0; } /* ********************************************************* */ void affichage() { glClear(GL_COLOR_BUFFER_BIT); // dessin glLoadIdentity(); glRotatef(b,0,0,1); glTranslatef(0.5,0,0); glRotatef(a,0,0,1); glBegin(GL_POLYGON); glVertex3f(-0.2,-0.2,0); glVertex3f( 0.2,-0.2,0); glVertex3f( 0.2, 0.2,0); glVertex3f(-0.2, 0.2,0); glEnd(); glFlush(); glutSwapBuffers(); } /* affichage */ void clavier(unsigned char touche,int x,int y) { switch(touche) { case 'a': inca++; if (inca>10) inca=10; glutPostRedisplay(); break; case 'A': inca--; if (inca<(-10)) inca=-10; glutPostRedisplay(); break; case 'b': incb++; if (incb>10) incb=10; glutPostRedisplay(); break; case 'B': incb--; if (incb<(-10)) incb=-10; glutPostRedisplay(); break; case 'q': exit(0); } } /* clavier */ /* ********************************************************* */ void reshape(int x,int y) { if (x360) a-=360; b+=incb; if (b>360) b-=360; glutPostRedisplay(); } /* idle */