Real Time Zoomer del frattale di Mandelbrot in C

Un piccolo programma in C per la generazione del frattale di Mandelbrot.

I frattali sono degli oggetti geometrici che si ripetono nella loro struttura allo stesso modo su scale diverse, ossia godono della proprietà di autosimilarità e generano una complessità virtualmente infinita. La natura stessa crea e modella tutto secondo questi schemi auto-simili, ovviamente in forma approssimata; fiori, alberi, nuvole, le proteine e lo stesso universo sono tutti esempi di frattali. Il più famoso oggetto frattale è l’insieme di Mandebrot ed è generato da una formula estremamente semplice che ben si adatta ad essere elaborata da un computer.

Ecco un esempio di zoom preso da youtube:

Il programma non raggiuge questo livello di dettaglio, comunque se la cava abbastanza bene. Viene generato a video l’intero frattale iniziando a zoomare all’interno sempre più in profondità. Per disegnare ho utilizzato le librerie X11 in modalità raw, quindi senza l’aiuto della GPU.

I define del sorgente permettono di cambiare la larghezza e altezza in pixel della finestra video e la risoluzione con la quale viene calcolato il frattale (valori possibili sono 1,2,4,8 o 16, solo potenze del 2). Di default ho impostato la finestra a 512×480 anche se sarebbe meglio inserire solo potenze del 2 (tipo 512×256 o 512×512) per rendere più veloce l’esecuzione.

Codice sorgente: mandelbrot

Per compilare il programma basta dare il comando

$ gcc -o mandelbrot -L/usr/X11R6/lib -lX11

e lanciare il programma con

$ ./mandelbrot

Alcuni screenshot presi durante l’esecuzione del programma:

shot1

shot2

shot3

shot5

shot4

Leave a Reply

avatar