Courbe de gumowski & mira version glut

Contenu du snippet

Ceci est une mise à jour de mon précédent code source:
http://www.cppfrance.com/code.aspx?ID=28881
En effet, contrairement à la première version j'ai rajouté un traceur de courbes.
J'ai utilisé la librairie Glut pour tracer mes points. Je débute en Glut alors peut être qu'il y a des améliorations à faire dans mon code. Faite moi le savoir si c'est le cas.
Pour compiler la source avec Dev-Cpp
il faut mettre dans Option projet=>Editeur de lien:
-lopengl32
-lglu32
-lglut32

Source / Exemple :


// main_Gumowski_Mira.c
// Auteur:	Jarod1980
// Date:	10/02/2005
// Description: Attracteur de Gumowski & Mira version Glut

#ifdef __WIN32___
#include <windows.h>
#endif

#include <math.h>
#include <GL/glut.h>

void display();
void keyboard(unsigned char key, int x, int y);

int main(int argc, char** argv)
{
/* GLUT initialisation */
 glutInit(&argc,argv);
/*Mode RGB */
 glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);     
/*Taille de la fenêtre */
 glutInitWindowSize(600,600);     
/*Position de la fenêtre en haut à gauche */
 glutInitWindowPosition(0,0);       
/*Titre de la fenêtre */
 glutCreateWindow("Attracteur e Gumowski & Mira"); 
/*Enregistrement des callbacks*/
 glutDisplayFunc(display);      
 glutKeyboardFunc(keyboard);    

/*Couleurs de fond noir*/
 glClearColor(0.0, 0.0, 0.0, 0.0);                    
/*Tracé en bleu */
 glColor3f(0.0, 0.0, 1.0);
/*ctivation de la matrice de projection */
 glMatrixMode(GL_PROJECTION);     
/*Réinitialisation de la matrice de transformation*/
 glLoadIdentity();             
/*Rotation autour de l'axe des x*/
 glRotatef(180,0.1,0.0,0.0);      
 gluOrtho2D(-12.0, 12.0, -10.0, 6.0);
/* visualisation de la matrice */
 glMatrixMode(GL_MODELVIEW);                     

/*Boucle principale */
 glutMainLoop();                                      
 return 0;
}
void display( void )
{
 typedef GLfloat point2[2]; /* type de données */          

 int i,n;
 GLfloat X, Y, XP;
 GLfloat A, B;
 
 point2 p;

 glClear(GL_COLOR_BUFFER_BIT); /*Efface la fenêtre */       
  
    X = 4.0f; /*Condition initiale sur x */
    Y = 4.0f; /* Condition initiale sur y*/
    
    A= -0.48f; /* Constante A*/
    B= 0.93f; /* Constante B */	 
  
  for(i=1;i<=200;i++) {
    XP = B*Y+A*X+2*(1-A)*X*X/(1+XP*XP);
    Y = -X+A*XP+2*(1-A)*XP*XP/(1+XP*XP);
    X = XP;
    
    glBegin(GL_POINTS);
            glVertex2fv(p);
     glEnd();
    }
      
 for(i=1;i<=30000;i++) {
    XP = B*Y+A*X+2*(1-A)*X*X/(1+X*X);
    Y = -X+A*XP+2*(1-A)*XP*XP/(1+XP*XP);
    X = XP;
    p[0] = X;
    p[1] =Y;
     
     glBegin(GL_POINTS);
            glVertex2fv(p);
     glEnd();
    }
 glFlush();   /* Efface les buffers */
}

void keyboard(unsigned char key, int x, int y)
{
 exit(0); /* Appuyer sur une touche pour sortir*/
}

A voir également

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.