Mandelbrot.Mod 938 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. MODULE Mandelbrot;
  2. IMPORT G := Graph;
  3. PROCEDURE Go(sx, sy: INTEGER; x, y: REAL);
  4. CONST iter = 768;
  5. VAR c: G.Color;
  6. 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.0 * re * im; re := re2;
  11. re := re + x; im := im + y; INC(i)
  12. UNTIL (i = iter) OR (re * re + im * im > 4.0);
  13. IF i # iter THEN i := i * 5;
  14. IF i > 255 THEN i := 255 END;
  15. G.MakeCol(c, i, 0, 0);
  16. G.PutPixel(sx, sy, c)
  17. END
  18. END Go;
  19. PROCEDURE Do;
  20. VAR x, y, W, H: INTEGER;
  21. x0, y0, x1, y1: REAL;
  22. BEGIN G.Settings(0, 0, {G.fullscreen});
  23. G.Init; G.GetScreenSize(W, H); G.ClearScreen; G.Flip;
  24. y0 := 1.0; y1 := -1.0;
  25. x1 := 2.0 * FLT(W) / FLT(H) / 3.0; x0 := -x1 * 2.0;
  26. FOR y := 0 TO H - 1 DO
  27. FOR x := 0 TO W - 1 DO
  28. Go(x, y, x0 + x / (W - 1) * (x1 - x0),
  29. y0 + y / (H - 1) * (y1 - y0))
  30. END
  31. END;
  32. G.Flip; G.Pause; G.Close
  33. END Do;
  34. BEGIN
  35. Do
  36. END Mandelbrot.