In questo esempio l'insieme di Mandelbrot e' stato generato con la libreria
PngWriter che permette di creare dei file png.
La libreria e' gia' pacchettizzata in Debian ed e' di facile utilizzo perche' si deve solo indicare le dimensioni del file png da creare e le coordinate del punto da disegnare con il colore in formato RGB
Per compilare il file di esempio deve essere utilizzata la seguente stringa
g++ mand_png.c -o mand_png `freetype-config --cflags` -I/usr/local/include -L/usr/local/lib -lpng -lpngwriter -lz -lfreetype
I file del progetto sono reperibili a questo
Link
Per visualizzare il file png da linea di comando puo' essere utile installare il pacchetto ImageMagick e digitare
display mandelbrot.png
-------------------------------------------------
#include <pngwriter.h>
#define SCREEN_WIDTH 1024
#define SCREEN_HEIGHT 768
float re_min = -2.0;
float im_min = -1.2;
float re_max = 1.0;
float im_max = 1.2;
double iterazioni = 255;
double r;
float a,b;
float x,y,x_new,y_new;
int test;
int k,j,i;
int keypress = 0;
int main() {
pngwriter png(SCREEN_WIDTH, SCREEN_HEIGHT,0,"mandelbrot.png");
float re_factor = (re_max-re_min);
float im_factor = (im_max-im_min);
for (i=0;i<SCREEN_HEIGHT;i++)
{
for (j=0;j<SCREEN_WIDTH;j++)
{
a = re_min+(j*re_factor/SCREEN_WIDTH);
b = im_min+(i*im_factor/SCREEN_HEIGHT);
x = 0;
y = 0;
test = 0;
for (k=0;k<iterazioni;k++)
{
x_new = (x*x)-(y*y)+a;
y_new = (2*x*y)+b;
if (((x_new*x_new)+(y_new*y_new))>4)
{
r = k%2;
png.plot(j,i, r, r, r);
break;
}
x = x_new;
y = y_new;
}
}
}
png.close();
return(0);
}