home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / d / djdev108.zip / SAMPLES / ESCAPE / MAIN.CC next >
C/C++ Source or Header  |  1991-03-20  |  2KB  |  100 lines

  1. #include <stdio.h>
  2. #include <std.h>
  3. #include <graphics.h>
  4. #include <pc.h>
  5.  
  6. double x, y;
  7.  
  8. #if 1
  9. #define ESCAPE    2.0
  10. #define LEFT    (0.0)
  11. #define RIGHT    (1.0)
  12. #define TOP    (1.0)
  13. #define BOTTOM    (0.0)
  14. void escape()
  15. {
  16.   if (y>0.5)
  17.     { x = 2*x; y = 2*y-1; }
  18.   else if (x>0.5)
  19.     { x = 2*x-1; y = 2*y; }
  20.   else
  21.     { x = 2*x; y = 2*y; }
  22. }
  23. #endif
  24.  
  25. #if 0
  26. #define ESCAPE 2
  27. #define LEFT    (-1.0)
  28. #define RIGHT    (1.0)
  29. #define TOP    (1.0)
  30. #define BOTTOM    (-1.0)
  31. escape()
  32. {
  33.   double nx, ny, mx, my;
  34.   nx = x*x - y*y;
  35.   ny = 2 * x * y;
  36.   mx = nx*nx - ny*ny;
  37.   my = 2 * nx * ny;
  38.   x = mx - x - 0.78;
  39.   y = my - y;
  40. }
  41. #endif
  42.  
  43. #if 0
  44. #define ESCAPE 2
  45. #define LEFT    (-1.0)
  46. #define RIGHT    (1.0)
  47. #define TOP    (1.0)
  48. #define BOTTOM    (-1.0)
  49. escape()
  50. {
  51.   double nx, ny, mx, my;
  52.   nx = x*x - y*y;
  53.   ny = 2 * x * y;
  54.   x = nx - 1;
  55.   y = ny;
  56. }
  57. #endif
  58.  
  59. main()
  60. {
  61.   GrSetMode(GR_default_graphics);
  62.   GrRegion *s = GrScreenRegion();
  63.   int px, py;
  64.   int pxmax = s->MaxX();
  65.   int pymax = s->MaxY();
  66.   int n;
  67.   for (n=2; n<256; n++)
  68.   {
  69.     GrSetColor(n, (n&1)*255, (n&2)*127, (n&4)*63);
  70.   }
  71.   double escape2 = ESCAPE*ESCAPE;
  72.   double ix, iy;
  73.   for (py=0; py<pymax; py++)
  74.   {
  75.     iy = py * (BOTTOM-TOP) / pymax + TOP;
  76.     for (px=0; px<pxmax; px++)
  77.     {
  78.       s->Plot(px, py, GrWhite());
  79.       ix = px * (RIGHT-LEFT) / pxmax + LEFT;
  80.       x = ix;
  81.       y = iy;
  82.       n = 0;
  83.       while (n<256)
  84.       {
  85.         if ((x*x+y*y) > escape2)
  86.         {
  87.           s->Plot(px, py, n);
  88.           break;
  89.         }
  90.         escape();
  91.         n++;
  92.       }
  93.     }
  94.     if (kbhit())
  95.       py = pymax;
  96.   }
  97.   getkey();
  98.   GrSetMode(GR_default_text);
  99. }
  100.