mikhail_dvorkin icon

Mandelbrotness

mikhail_dvorkin | PRO | 05/22/20 12:17:04 PM UTC | 0 ⭐ | 2011 👁️ | Never ⏰ | []
Python |

1.46 KB

|

None

|

0 👍

/

0 👎

import PIL # Alt + Enter
from PIL import Image
# pip install pillow
 
def draw_something(image, size, frame):
    a = [[0] * size for _ in range(size)]
    mandelbrotness = frame
    for i in range(size):
        for j in range(size):
            # множество Жюлиа: z = разные точки прямоуг-ка; c = const
            # множество Мандельброта: z = 0; c = разные точки прямоуг-ка
            our_pixel = (i - size / 2) / (size / 2) + (j - size / 2) / (size / 2) * 1j
            z0 = (1 - mandelbrotness) * our_pixel
            c = (1 - mandelbrotness) * (0.239 + 0.566j) + mandelbrotness * our_pixel
            z = z0
            # Benoit B. Mandelbrot
            for k in range(255):
                z = z * z + c
                if abs(z) > 10:
                    break
            a[i][j] = k
            print(z)
    b = sum(a, [])
    b.sort()
    sum_iter = sum(b)
    average_sum = 127 * size * size
    median = b[len(b) // 2] # → 127
    for i in range(size):
        for j in range(size):
            iters = a[i][j]
            color = iters * average_sum // sum_iter
            image.putpixel((i, j), (0, 0, min(color, 255)))
 
size = 300
frames = 50
for frame in range(frames + 1):
    image = Image.new("RGB", (size, size), (255, 255, 255))
    draw_something(image, size, frame / frames)
    image.save("generated" + str(100 + frame) + ".png")
# image.show()

Comments