я сделал прогу где можно приближаться к множеству мандельброта
`
import pygame
import numpy as np
import random
pygame.init()
win = pygame.display.set_mode((720, 1020))
color = np.zeros([3000, 3])
cmax = 16
d0 = random.uniform(1, cmax)
d1 = random.uniform(1, cmax)
d2 = random.uniform(1, cmax)
r = 0
g = 0
b = 0
for i in range(3000):
if r + d0 < 0 or r + d0 > 255:
d0 *= -1
if g + d1 < 0 or g + d1 > 255:
d1 *= -1
if b + d2 < 0 or b + d2 > 255:
d2 *= -1
r += d0
g += d1
b += d2
color[i][0] = int(r)
color[i][1] = int(g)
color[i][2] = int(b)
def mandelbrot(x, y, scale):
surface = np.zeros([200, 200, 3])
q_list = np.linspace(0, 200, 200)
p_list = np.linspace(0, 200, 200)
q_list = q_list / scale + y
p_list = p_list / scale + x
q_list = (q_list - 100) / 50
p_list = (p_list - 100) / 50
for i0, i1 in enumerate(p_list):
for j0, j1 in enumerate(q_list):
z = i1 + 1j * j1
c = z
for k in range(100):
z *= z
z += c
if abs(z) > 2:
break
surface[i0][j0] = color[k]
win.blit(pygame.transform.scale(pygame.surfarray.make_surface(surface), (720, 720)), (0, 0))
pygame.display.update()
return surface
x, y, scale = 0, 0, 1
surface = mandelbrot(x, y, scale,)
while True:
if pygame.mouse.get_pressed()[0]:
x0, y0 = pygame.mouse.get_pos()
x0, y0 = x0 / 3.6, y0 / 3.6
x0, y0 = int(x0), int(y0)
z = surface[x0 - 10:x0 + 11, y0 - 10:y0 + 10]
win.blit(pygame.transform.scale(pygame.surfarray.make_surface(z), (300, 300)), (0, 720))
pygame.display.update()
for ev in pygame.event.get():
if ev.type == pygame.MOUSEBUTTONUP:
x0, y0 = ev.pos
x += (x0 / 3.6 - 10) / scale
y += (y0 / 3.6 - 10) / scale
scale *= 10
print(x, y, scale)
surface = mandelbrot(x, y, scale)
pygame.display.update()
`