Courbe de gumowski & mira version glut

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 548 fois - Téléchargée 34 fois

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

Ajouter un commentaire

Commentaire

Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
juste une chose, a la place de placer un nouveau code, tu peux aussi mettre a jour l'ancien !
sinon j'ai pas testé, mais vu la capture, c'est une merveille comparé a ton ancien code :)

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.