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++ - 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
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
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


Il mio blog: https://piero.dev
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