Oppure

Loading
08/06/09 20:12
trenta3
Salve a tutti!
Mi trovo con il seguente problema:

ho questo programma preso da pierotofy.it/pages/extras/forum/2/6606-frattali/ :
/* Programma per disegnare l'insieme di Mandelbrot */ 
/* Autore: Pino Navato <pnavato@libero.it> */ 

#include <graphics.h> 
#include <conio.h> 


typedef double Tfloat;        /* Tipo delle variabili floating point */ 

const char* PATH_TO_BGI = "c:\tc\bgi"; 

const Tfloat INFX = -2,  SUPX = 2,   /* Porzione di piano complesso */ 
             INFY = -2,  SUPY = 2;   /*       da visualizzare       */ 

const unsigned MAXCONT   = 61,   /* Max num. di ripetizioni del ciclo while */ 
               SHIFT_COL = 7;    /* Cambia questa costante per... */ 
                                 /* ...modificare tutti i colori  */ 

Tfloat   cre, cim;   /* Parte reale e immaginaria di c */ 
Tfloat   zre, zim;   /* Parte reale e immaginaria di z */ 
Tfloat   temp_zre;   /* Variabile temporanea per Zre */ 
Tfloat   latox,      /* Largh. del rettangolo di piano considerato */ 
         latoy;      /* Altezza del rettangolo di piano considerato */ 
Tfloat   incremx,    /* Distanza orizz. tra due punti consecutivi */ 
         incremy;    /* Distanza vert. tra due punti consecutivi */ 
unsigned i, j;       /* Coordinate di un pixel */ 
unsigned col;        /* Colore scelto per il pixel esaminato */ 
unsigned contatore;  /* Numero di ripetizioni del ciclo while */ 

int      gd, gm; 
int      err_code; 


int main(void) 
{ 
   gd = DETECT; 
   initgraph(&gd, &gm, PATH_TO_BGI); 
   err_code = graphresult(); 
   if (err_code != grOk) 
      { 
         cprintf("%s\n", grapherrormsg(err_code)); 
         return 1; 
      } 

   latox = SUPX - INFX;   latoy = SUPY - INFY; 
   incremx = latox/getmaxx();   incremy = latoy/getmaxy(); 

   for (i=0; i<=getmaxx(); i++)    /* Esamina tutte le colonne dello schermo */ 
      { 
         cre = INFX + (i*incremx); 
         for (j=0; j<=getmaxy(); j++)  /* Esamina i pixel della colonna iesima */ 
            { 
               contatore = 0; 
               zim = zre = 0; 
               cim = INFY + (j*incremy); 

               if (cre>-0.49 && cim>-0.5 && cre<0.21 && cim<0.5) 
                  contatore = MAXCONT; 

               while (zre*zre + zim*zim <= 4.00 &&   /* Applica la legge */ 
                      contatore < MAXCONT)           /*  di  Mandelbrot  */ 
                  { 
                     temp_zre = zre*zre - zim*zim + cre; 
                     zim = 2*zim*zre + cim; 
                     zre = temp_zre; 
                     contatore++; 
                  }  /* while */ 

               col = contatore + SHIFT_COL; 
               putpixel(i,j, col);   /* <-- Finalmente! */ 
            }  /* for j */ 

         while (kbhit())           /* Eventuale uscita anticipata */ 
            if (getch() == 27)     /* Per uscire premere ESC */ 
               { 
                  closegraph(); 
                  return 0; 
               } 

      }  /* for i */ 

   while (kbhit()) getch();   /* Svuota il buffer */ 
   getch();                   /* Attende un carattere */ 
   closegraph(); 
   return 0; 
}


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:
aaa