' Programma per disegnare l'insieme di Mandelbrot ' Autore: Pino Navato <pnavato@libero.it> DEFDBL A-Z CONST INFX = -2, SUPX = 2 ' Porzione di piano complesso CONST INFY = -2, SUPY = 2 ' da visualizzare CONST MAXCONT = 61 ' Max num. di ripetizioni del ciclo WHILE CONST SHIFTCOL = 7 ' Cambia questa costante per modificare tutti i colori CONST MAXX = 639, MAXY = 479 ' Risoluzione del modo video 12 'Variaibli utilizzate: ' 'cre, cim Parte reale e immaginaria di c 'zre, zim Parte reale e immaginaria di z 'tempzre Variabile temporanea per Zre 'i%, j% Coordinate di un pixel 'col% Colore scelto per il pixel esaminato 'contatore% Numero di ripetizioni del ciclo WHILE SCREEN 12 ' Attiva la grafica VGA 640x480 WINDOW (INFX, INFY)-(SUPX, SUPY) ' Definisce un sistema di coord. logiche FOR i% = 0 TO MAXX ' Esamina tutte le colonne dello schermo cre = PMAP(i%, 2) FOR j% = 0 TO MAXY ' Esamina i pixel della colonna iesima contatore% = 0 zim = 0: zre = 0 cim = PMAP(j%, 3) IF cre > -.49 AND cim > -.5 AND cre < .21 AND cim < .5 THEN contatore% = MAXCONT END IF WHILE zre * zre + zim * zim <= 4 AND contatore% < MAXCONT 'Applica la legge di M. tempzre = zre * zre - zim * zim + cre zim = 2 * zim * zre + cim zre = tempzre contatore% = contatore% + 1 WEND col% = (contatore% + SHIFTCOL) AND 15 PSET (cre, cim), col% ' <-- Finalmente! NEXT j% a$ = INKEY$ ' Eventuale uscita anticipata IF a$ = CHR$(27) THEN ' Per uscire premere ESC SCREEN 0 SYSTEM END IF NEXT i% DO ' Svuota il buffer a$ = INKEY$ LOOP UNTIL a$ = "" DO ' Attende un tasto a$ = INKEY$ LOOP UNTIL a$ <> "" SCREEN 0 END
Torna alla pagina sui frattali