Old high school files. Lessson notes/codes/projects etc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
hsf/mas/fractals/mandel.py

67 lines
1.2 KiB

#!/usr/bin/python
import pygame
import numpy as np
W, H = 500, 500
ITER = 80
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def square(self):
self.x = np.square(self.x) - np.square(self.y)
self.y = 2*self.x*self.y
def add(self, p2):
self.x += p2.x
self.y += p2.y
def len(self):
return np.sqrt( np.square(self.x) + np.square(self.y) )
def mandel(n: int, c: Point):
if n == 0:
return Point(0, 0)
else:
newp = mandel(n-1, c)
newp.square()
newp.add(c)
return newp
print("Plotting...")
plots = {}
for x in range(0, W):
for y in range(0, H):
print(f"{round(100*x/W)}% \t {x=} {y=}", end="\r")
z = mandel(ITER, Point(x, y))
plots[(x,y)] = (0, 0, 0) if z.len() < 2 else (255, 255, 255)
print("Init render")
pygame.init()
window = pygame.display.set_mode( (W, H) )
run = True
while run:
for e in pygame.event.get():
if e.type == pygame.QUIT:
run = False
window.fill(0)
for coord in plots:
x, y = coord
col = plots[coord]
window.set_at(coord, col)
pygame.display.flip()
pygame.quit()
exit()