Listing 1
// mandel.c - Zortech C++ program to draw Mandelbrot set. #include <conio.h> #include "fg.h" #include "dcomplex.h" inline float scale(int point, int maxpoint) { maxpoint /= 2; return 2 * (point - maxpoint)/float(maxpoint); } int resolution = 50; int maxrow; int maxcol; int mandel(float row, float col) { DComplex Z(0,0); DComplex C(col, row); int color = 0; for(int iter = 0; iter < resolution && abs(Z) < 2.0; ++iter, ++color) Z = Z * Z + C; return iter < resolution ? color : 0; } int main(int argc, char **argv) { int status = fg_init(); // initialize graphics package maxrow = fg.displaybox[FG_Y2]; maxcol = fg.displaybox[FG_X2]; int maxcolor = fg.nsimulcolor; if(status != 0) { int step = 20; for(resolution = 1; !kbhit(); ++resolution) { for(int col=maxcol; col >= 0 && !kbhit(); col -= step) for(int row = 0; row <= maxrow/2; row += step) { int color = mandel(scale(row,maxrow), scale(col,maxcol)) % maxcolor; fg_drawdot(color, FG_MODE_SET, <SUP>~</SUP>0, col, row); fg_drawdot(color, FG_MODE_SET, <SUP>~</SUP>0, col, maxrow-row); } if(step > 1) --step; } while(!kbhit()) // hit key to terminate program ; fg_term(); // return to text mode } }