46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
from PIL import Image
|
|
|
|
def mandelbrot (c, max_iter):
|
|
z = 0
|
|
for n in range(max_iter):
|
|
if abs(z) > 2:
|
|
return n # Wie schnell ist der Punkt entflohen?
|
|
z = z*z + c
|
|
return max_iter
|
|
|
|
width = 1000
|
|
height = 800
|
|
|
|
img = Image.new('RGB', (width, height))
|
|
|
|
# die komplexe Ebene definieren
|
|
x_min, x_max = -2 , 1
|
|
y_min, y_max = -1.2, 1.2
|
|
|
|
for x in range(width):
|
|
for y in range(height):
|
|
real = x_min + (x / width) * (x_max - x_min)
|
|
imag = y_min + (y / height) * (y_max - y_min)
|
|
c = complex(real, imag)
|
|
# print ("x-> ", x, " y-> ", y, " -> ",c)
|
|
|
|
m = mandelbrot(c, 400)
|
|
|
|
# Einfache Farbgebung: Schwarz für die Menge, Blau-Töne für den Rand
|
|
if m == 400:
|
|
color = (0, 0, 0)
|
|
else:
|
|
if m >200 and m < 233:
|
|
color = (0, 0, m * 2 % 255) # Blau-Gradient
|
|
elif m >233 and m < 266:
|
|
color = (0, m * 2 %255, 0) # Green-Gradient
|
|
else:
|
|
color = (m * 2 %255, 0, 0) # Red-Gradient
|
|
|
|
img.putpixel((x, y), color)
|
|
|
|
img.save("mandelbrot.png")
|
|
print("Bild wurde als mandelbrot.png gespeichert!")
|
|
|
|
|