home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mandelc.zip / julia.cpp < prev    next >
C/C++ Source or Header  |  1993-08-01  |  990b  |  52 lines

  1. #include <mem.h>
  2.  
  3.  
  4. #include "dllFractal.h"
  5.  
  6.  
  7. const char * _export getName(void)
  8. {    return "simple Julia set";
  9. }
  10.  
  11.  
  12. void _export calculateFractal(
  13.     unsigned int iSizeX,
  14.     unsigned int iMaxColors,
  15.     unsigned int iMaxIterations,
  16.     unsigned char *pData,
  17.     double dLimit,
  18.     double dxdx,
  19.     double dydx,
  20.     double dx,
  21.     double dy)
  22. {       unsigned int ixi;
  23.     // You don't need to write the following stuff in assembler!
  24.     // Use a good compiler like EMX for OS/2!
  25.     for (ixi = 0,
  26.        memset(pData, 0, iSizeX*sizeof*pData),
  27.        iMaxColors -= 1;
  28.        ixi < iSizeX;
  29.        ixi++,
  30.        dy += dydx, dx += dxdx
  31.        )
  32.     {    double xit = dx, yit = dy;
  33.         unsigned int it;
  34.  
  35.         for (it = 0;
  36.             it < iMaxIterations;
  37.             it++)
  38.         {    double x2 = xit*xit;
  39.             double y2 = yit*yit;
  40.             double r = y2 + x2;
  41.             if (r > dLimit)
  42.             {    pData[ixi] = it
  43.                     % iMaxColors + 1;
  44.                 break;
  45.             }
  46.             r = 2*xit*yit + yit;
  47.             xit = x2 - y2 + xit;
  48.             yit = r;
  49.         }
  50.     }
  51. }
  52.