Advertisement
mikhail_dvorkin

Mandelbrotness

May 22nd, 2020
1,619
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.46 KB | None | 0 0
  1. import PIL # Alt + Enter
  2. from PIL import Image
  3. # pip install pillow
  4.  
  5. def draw_something(image, size, frame):
  6.     a = [[0] * size for _ in range(size)]
  7.     mandelbrotness = frame
  8.     for i in range(size):
  9.         for j in range(size):
  10.             # множество Жюлиа: z = разные точки прямоуг-ка; c = const
  11.             # множество Мандельброта: z = 0; c = разные точки прямоуг-ка
  12.             our_pixel = (i - size / 2) / (size / 2) + (j - size / 2) / (size / 2) * 1j
  13.             z0 = (1 - mandelbrotness) * our_pixel
  14.             c = (1 - mandelbrotness) * (0.239 + 0.566j) + mandelbrotness * our_pixel
  15.             z = z0
  16.             # Benoit B. Mandelbrot
  17.             for k in range(255):
  18.                 z = z * z + c
  19.                 if abs(z) > 10:
  20.                     break
  21.             a[i][j] = k
  22.             print(z)
  23.     b = sum(a, [])
  24.     b.sort()
  25.     sum_iter = sum(b)
  26.     average_sum = 127 * size * size
  27.     median = b[len(b) // 2] # → 127
  28.     for i in range(size):
  29.         for j in range(size):
  30.             iters = a[i][j]
  31.             color = iters * average_sum // sum_iter
  32.             image.putpixel((i, j), (0, 0, min(color, 255)))
  33.  
  34. size = 300
  35. frames = 50
  36. for frame in range(frames + 1):
  37.     image = Image.new("RGB", (size, size), (255, 255, 255))
  38.     draw_something(image, size, frame / frames)
  39.     image.save("generated" + str(100 + frame) + ".png")
  40. # image.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement