/* ------------------------------------------------------- colvalue nimmt RGB-Farben auf ------------------------------------------------------- */ struct colvalue { uint8_t r; uint8_t g; uint8_t b; }; #define graphwidth 160 #define graphheight 128 /* ------------------------------------------------------- mandelbrot Fraktalgenerator ------------------------------------------------------- */ void mandelbrot(uint16_t ofsx, uint16_t ofsy) { uint16_t k, kt, x, y; float dx, dy, xmin, xmax, ymin, ymax; float jx, jy, wx, wy, tx, ty, r, m; struct colvalue mrgb; kt= 100; m= 4.0; xmin= 1.7; xmax= -0.8; ymin= -1.0; ymax= 1.0; // alternative Zahlenwerte // xmin= -0.5328; xmax= -0.2078; ymin= 0.3742; ymax= 0.892; dx= (float)(xmax-xmin) / graphwidth; dy= (float) (ymax-ymin) / graphheight; for (x= 0; x< graphwidth; x++) { jx= xmin + ((float)x*dx); for (y= 0; y< graphheight; y++) { jy= ymin+((float)y*dy); k= 0; wx= 0.0; wy= 0.0; do { tx= wx*wx-(wy*wy+jx); ty= 2.0*wx*wy+jy; wx= tx; wy= ty; r= wx*wx+wy+wy; k++; } while ((r < m) & (k < kt)); if (k< 3) {mrgb.b= k * 20; } if ((k> 2) && (k< 35)) { mrgb.b= k * 9; mrgb.g = k; mrgb.r= k*2 ; } if (k> 34) { mrgb.r= ( 128 ); mrgb.g= (k * 3 ); mrgb.b= (k); } if (k> 90) { mrgb.r= 0, mrgb.g= 0; mrgb.b= 0; } putpixel(ofsx+x,ofsy+y,rgbfromvalue(mrgb.r, mrgb.g, mrgb.b)); } } }