Fractale tree (arbre) version glut

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 706 fois - Téléchargée 37 fois

Contenu du snippet

Programme permettant de générer la fractale tree avec affichage graphique (Librairie Glut).
N'hésitez pas à mettre des commentaires.
Pour ceux qui utilisent Dev-Cpp comme moi, n'oublier pas de mettre dans projet=>Options du Projets=>Paramètres=>éditeur de liens:
-lopengl32
-lglut32
-lglu32

Source / Exemple :


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

#define drand48 1.0/RAND_MAX*rand 
#define srand48 srand    
#define max 30000		/* nombre d'iterations */
#define seed 68111

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

int main(int argc, char** argv)
{
/* initialisation GLUT */
 glutInit(&argc,argv);
 /* ModeRGB */
 glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);    
 /* Taille de la fenêtre */ 
 glutInitWindowSize(300,300);       
 /* Position fenêtre */              
 glutInitWindowPosition(0,0);   
 /* Titre fenêtre */    
 glutCreateWindow("Tree Fractale");
 /* Enregistrements des callbacks */                
 glutDisplayFunc(display);         
 glutKeyboardFunc(keyboard);                        

/* Couleurs de fond noir */
 glClearColor(0.0, 0.0, 0.0, 0.0);  
 /* Tracé en vert */                  
 glColor3f(0.0, 1.0, 0.0);   
 /* activation de la matrice de projection */                          
 glMatrixMode(GL_PROJECTION);     
 /* Réinitialisation de la matrice de transformation */
 glLoadIdentity();    
 /* Rotation autour de l'axe x */          
 glRotatef(0.0,0.1,0.0,0.0);  
 /* visualisation de la matrice */                  
 gluOrtho2D(-1.0, 1.0, 0.0, 2.5);
 glMatrixMode(GL_MODELVIEW);                      

/* Boucle principale */
 glutMainLoop();                                      
 return 0;
}

void display( void )
{
     int i;
   GLfloat x,y,r,xn,yn;
   /* Efface la fenêtre */
   glClear(GL_COLOR_BUFFER_BIT);                         
   srand48(seed);		
   
   x     = 0.5f;  /*position initiale */
   y     = 0.0f;
   for(i=1 ; i<=max; i++)
   {
      r = drand48();
      if (r<=0.1)
      { 
         xn = 0.05*x;
         yn = 0.6*y;
      }
      else if((r>0.1) && (r<0.2))
      { 
         xn  = 0.05*x;
         yn  = -0.5*y+1.0;
      }
      else if ((r>0.2) && (r<0.4))
      {
         xn  = 0.46*x-0.32*y;
         yn  = 0.39*x+0.38*y+0.6;
      }  
      else if((r>0.4) && (r<0.6))
      {
         xn  = 0.47*x-0.15*y;
         yn  = 0.17*x+0.42*y+1.1;
      }
      else if ((r>0.6) && (r<0.8))
      {
         xn  = 0.43*x+0.28*y;
         yn  = -0.25*x+0.45*y+1.0;
      }  
      else 
      {
         xn  = 0.42*x+0.26*y;
         yn  = -0.35*x+0.31*y+0.7;
      }  
     
      glBegin(GL_POINTS);
      glVertex2f(xn,yn);
      x = xn;
      y = yn;
     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

Commentaires

Jarod1980
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
1 -
Salut,
Gabriel_JM essais d'aller jeter un coup d'oeil sur ce site:

http://www.dil.univ-mrs.fr/~garreta/generique/autres/OGL/

Tu pourras télécharger la même version de Glut que moi. Normalement il n'y aura plus de problèmes de compilation.
Ne pas oublier de faire projet=>Options du Projets=>Paramètres=>éditeur de liens:
-lopengl32
-lglut32
-lglu32
avant de compiler.
gabriel_jm
Messages postés
3
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
18 juillet 2005
-
bonjour,
en fait j'ai essayé de faire marcher ce code chez moi, mais devcpp ne reconnait pas les fonctions glut, alors que dois je faire?
merci
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
tes arbres sont en 3D. c'est super beau, mais forcément t'as bcp de code pr le rendering.
cs_Lightness1024!
Messages postés
162
Date d'inscription
jeudi 15 mars 2001
Statut
Membre
Dernière intervention
1 avril 2005
-
moi aussi dernierement j'ai progé un générateur d'arbres procéduraux. voir:

http://serhum.epsylon.org/arbres14.png

par contre je sais pas comment tu peux faire le tiens en si peu de lignes, le miens en fait 1000.
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
8 -
nickel cette source !!!
:)

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.