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, ~0, col, row);
                fg_drawdot(color, FG_MODE_SET, ~0, col, maxrow-row);
                }
           if(step > 1) --step;
           }
      while(!kbhit())     // hit key to terminate program
         ;
      fg_term();          // return to text mode
      }
 }