Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - frattali
Forum - C/C++ - frattali

Avatar
stella87 (Normal User)
Newbie


Messaggi: 2
Iscritto: 27/05/2006

Segnala al moderatore
Postato alle 14:29
Sabato, 27/05/2006
ciao! qualcuno saprebbe fornirmi qualche dritta per la creazione di un programma capace di generare l'insieme di Mandelbrot o di Julia (I frattali non lineari)... mi serve come parte integrante di una tesina per gli esami!!!
:k:

PM Quote
Avatar
stella87 (Normal User)
Newbie


Messaggi: 2
Iscritto: 27/05/2006

Segnala al moderatore
Postato alle 14:36
Sabato, 27/05/2006
sono ancora io...mi basta qualcosa abbastanza semplice!! Help me!!

PM Quote
Avatar
Rand (Ex-Member)
Pro


Messaggi: 163
Iscritto: 17/05/2005

Segnala al moderatore
Postato alle 15:45
Sabato, 27/05/2006
guarda che ti ho trovato.... basta solo aver voglia di usare google! :asd:

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. }




se ti interessa anche una spiegazione teorica, visita il sito dell'autore: http://digilander.libero.it/pnavato/frattali/

ciao! :k:

Ultima modifica effettuata da Rand il 27/05/2006 alle 15:47


Ero solito portare una pallottola nel taschino, all'altezza del cuore.
Un giorno un tizio mi tirò addosso una Bibbia, ma la pallottola mi salvò la vita.

(Woody Allen)
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6108
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:03
Sabato, 27/05/2006
:ot: Stella, se scrivi il tuo problema sul forum poi non inviare e-mail con la stessa domanda ai membri (me compreso). Grazie.

Ultima modifica effettuata da pierotofy il 27/05/2006 alle 16:04


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
Yi (Normal User)
Newbie


Messaggi: 6
Iscritto: 09/03/2005

Segnala al moderatore
Postato alle 9:48
Martedì, 27/06/2006
Pure io per la tesina porto i frattali..........
:k:

PM Quote