haut: o
bas : l
gauche : k
droite : m
agrandir : h
rétrécir : b
Quitter : q
Animer : c
Fait par Matthias RENAULT avec Dev C++4
matthias.renault@voila.fr
Nécessite GLUT
Glut.dll fourni
Source / Exemple :
//Les librairies
#include <gl/glut.h>
#include <math.h>
//on déclare les procédures
void display(void);
void init(void);
void film();
void indispensable();
//on déclare la fonction pour le cercle
void cercles(int x, int y, int rayon2);
//On déclare les variables
bool choix = false; //boolenne
int rayon[100];
int xa[100]; //entière avec tableau : la 1ere "case" de xa vaut 50
int ya[100];
int i = 1; //i détermine combien de fois on a appuyé sur une touche
float linex = 0.5; //à virgule flottante
float liney = 0.5;
float theta = 0.0f;
void display (void)
{
glClear(GL_COLOR_BUFFER_BIT);
if (!choix)
{
glBegin(GL_LINES);
glColor3f (1.0, 0.0, 0.0);
glVertex2f (linex - 0.01, liney);
glVertex2f (linex + 0.01, liney);
glVertex2f (linex, liney + 0.01);
glVertex2f (linex, liney - 0.01);
glEnd();
cercles (xa[i], ya[i], rayon[i]); //on trace le cercle
}
if (choix == true)
{
cercles (xa[i], ya[i], rayon[i]); //on trace le cercle
}
glFlush();
//On a deja fait le cercle
choix = true;
}
//Toute la gestion alphanumérique
void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case 'q': //quitter
exit(0);
break;
case 'h': //cercle + grand
rayon[i]++;
indispensable();
glutPostRedisplay();
break;
case 'b': //cercle + petit
rayon[i]--;
indispensable();
glutPostRedisplay();
break;
case 'o': //on monte
ya[i]--;
indispensable();
glutPostRedisplay();
break;
//on descend
case 'l':
ya[i]++;
indispensable();
glutPostRedisplay();
break;
case 'k': //à gauche
xa[i]--;
indispensable();
glutPostRedisplay();
break;
case 'm': //à droite...
xa[i]++;
indispensable();
glutPostRedisplay();
break;
//on lance le "film"!
case 'c':
film();
break;
default: //si rien, on retourne au début!
break;
}
}
void film()
{
int a; //le compteur
for (a = 1; a <= i; a++)
{
glClear(GL_COLOR_BUFFER_BIT);
cercles (xa[a], ya[a], rayon[a]);
}
}
void indispensable()
{
xa[i+1] = xa[i];
ya[i+1] = ya[i];
rayon[i+1] = rayon[i];
i++;
}
//initiation perso...
void init(void)
{
//on initialise les variables
rayon[1] = 10;
xa[1] = 50;
ya[1] = 50;
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 100, 100, 0, -100, 100);
}
//Histoire d'initier...
int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(600,600);
glutInitWindowPosition(100, 100);
glutCreateWindow("Cercles");
init();
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
//La fonction du cercle KITU!!!
void cercles (int x, int y, int rayon2)
{
int theta = 0;
glBegin(GL_POINTS);
while (theta <= 360)
{
glVertex2f (x + rayon2 * (cos(theta)), y + rayon2 * (sin(theta))); //la fonction du cercle
theta++;
}
glEnd();
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.