Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con Generatore di frattali (e insieme di Julia)
Forum - C/C++ - Problema con Generatore di frattali (e insieme di Julia)

Avatar
trenta3 (Normal User)
Newbie


Messaggi: 16
Iscritto: 17/12/2008

Segnala al moderatore
Postato alle 22:12
Lunedì, 08/06/2009
Salve a tutti!
Mi trovo con il seguente problema:

ho questo programma preso da http://www.pierotofy.it/pages/extras/forum/2/6606-frattali/ :
Codice sorgente - presumibilmente C

  1. /* Programma per disegnare l'insieme di Mandelbrot */
  2. /* Autore: Pino Navato <pnavato@libero.it> */
  3.  
  4. #include <graphics.h>
  5. #include <conio.h>
  6.  
  7.  
  8. typedef double Tfloat;        /* Tipo delle variabili floating point */
  9.  
  10. const char* PATH_TO_BGI = "c:\\tc\\bgi";
  11.  
  12. const Tfloat INFX = -2,  SUPX = 2,   /* Porzione di piano complesso */
  13.              INFY = -2,  SUPY = 2;   /*       da visualizzare       */
  14.  
  15. const unsigned MAXCONT   = 61,   /* Max num. di ripetizioni del ciclo while */
  16.                SHIFT_COL = 7;    /* Cambia questa costante per... */
  17.                                  /* ...modificare tutti i colori  */
  18.  
  19. Tfloat   cre, cim;   /* Parte reale e immaginaria di c */
  20. Tfloat   zre, zim;   /* Parte reale e immaginaria di z */
  21. Tfloat   temp_zre;   /* Variabile temporanea per Zre */
  22. Tfloat   latox,      /* Largh. del rettangolo di piano considerato */
  23.          latoy;      /* Altezza del rettangolo di piano considerato */
  24. Tfloat   incremx,    /* Distanza orizz. tra due punti consecutivi */
  25.          incremy;    /* Distanza vert. tra due punti consecutivi */
  26. unsigned i, j;       /* Coordinate di un pixel */
  27. unsigned col;        /* Colore scelto per il pixel esaminato */
  28. unsigned contatore;  /* Numero di ripetizioni del ciclo while */
  29.  
  30. int      gd, gm;
  31. int      err_code;
  32.  
  33.  
  34. int main(void)
  35. {
  36.    gd = DETECT;
  37.    initgraph(&gd, &gm, PATH_TO_BGI);
  38.    err_code = graphresult();
  39.    if (err_code != grOk)
  40.       {
  41.          cprintf("%s\n", grapherrormsg(err_code));
  42.          return 1;
  43.       }
  44.  
  45.    latox = SUPX - INFX;   latoy = SUPY - INFY;
  46.    incremx = latox/getmaxx();   incremy = latoy/getmaxy();
  47.  
  48.    for (i=0; i<=getmaxx(); i++)    /* Esamina tutte le colonne dello schermo */
  49.       {
  50.          cre = INFX + (i*incremx);
  51.          for (j=0; j<=getmaxy(); j++)  /* Esamina i pixel della colonna iesima */
  52.             {
  53.                contatore = 0;
  54.                zim = zre = 0;
  55.                cim = INFY + (j*incremy);
  56.  
  57.                if (cre>-0.49 && cim>-0.5 && cre<0.21 && cim<0.5)
  58.                   contatore = MAXCONT;
  59.  
  60.                while (zre*zre + zim*zim <= 4.00 &&   /* Applica la legge */
  61.                       contatore < MAXCONT)           /*  di  Mandelbrot  */
  62.                   {
  63.                      temp_zre = zre*zre - zim*zim + cre;
  64.                      zim = 2*zim*zre + cim;
  65.                      zre = temp_zre;
  66.                      contatore++;
  67.                   }  /* while */
  68.  
  69.                col = contatore + SHIFT_COL;
  70.                putpixel(i,j, col);   /* <-- Finalmente! */
  71.             }  /* for j */
  72.  
  73.          while (kbhit())           /* Eventuale uscita anticipata */
  74.             if (getch() == 27)     /* Per uscire premere ESC */
  75.                {
  76.                   closegraph();
  77.                   return 0;
  78.                }
  79.  
  80.       }  /* for i */
  81.  
  82.    while (kbhit()) getch();   /* Svuota il buffer */
  83.    getch();                   /* Attende un carattere */
  84.    closegraph();
  85.    return 0;
  86. }



Il programma funziona benissimo, ho anche provato a cambiare le variabili e mi vengono dei frattali bellissimi però vorrei, applicando una semplice modifica, costruire anche insiemi di Julia ed il fatto è che non so come fare.
Grazie in anticipo per l'aiuto.
Confido in voi:hail:

PM Quote