Mandelbrot.Mod 885 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. MODULE Mandelbrot;
  2. IMPORT G := Graph;
  3. VAR s: G.Bitmap;
  4. PROCEDURE Go(sx, sy: INTEGER; x, y: REAL);
  5. CONST iter = 768;
  6. VAR col, i: INTEGER;
  7. re, im, re2: REAL;
  8. BEGIN re := x; im := y; i := 0;
  9. REPEAT re2 := re * re - im * im;
  10. im := 2 * re * im; re := re2;
  11. re := re + x; im := im + y; INC(i)
  12. UNTIL (i = iter) OR (re * re + im * im > 4);
  13. IF i # iter THEN i := i * 5;
  14. IF i > 255 THEN i := 255 END;
  15. G.PutPixel(s, sx, sy, G.MakeCol(i, 0, 0))
  16. END
  17. END Go;
  18. PROCEDURE Do;
  19. VAR x, y: INTEGER;
  20. x0, y0, x1, y1: REAL;
  21. BEGIN G.Settings(0, 0, {G.fullscreen});
  22. s := G.Init(); G.Flip;
  23. y0 := 1; y1 := -1;
  24. x1 := 2 * s.w / s.h / 3; x0 := -x1 * 2;
  25. FOR y := 0 TO s.h - 1 DO
  26. FOR x := 0 TO s.w - 1 DO
  27. Go(x, y, x0 + x / (s.w - 1) * (x1 - x0),
  28. y0 + y / (s.h - 1) * (y1 - y0))
  29. END
  30. END;
  31. G.Flip; G.Pause; G.Close
  32. END Do;
  33. BEGIN
  34. Do
  35. END Mandelbrot.