Extra: Mandelbrot verkennen¶
Mandelbrot¶

Bekijk als eerste indruk de Mandelbrot-set zoom in 4K (video):
Video: Monaneko, CC BY 4.0, via Wikimedia Commons.
In de opstap en de basis heb je de berekening voor de mandelbrotverzameling opgebouwd. In deze extra laag maak je er een afbeelding van en onderzoek je wat er gebeurt als het venster, het aantal iteraties of de kleuren veranderen.
Je gebruikt hiervoor de verstrekte PNGImage-API uit
mandelbrot.zip. Gebruik deze aanroepen:
image = PNGImage(width, height)
image.plot_point(col, row, (red, green, blue))
image.save_file("mset.png")
De code van de API hoef je niet te wijzigen. De drie aanroepen maken de afbeelding, kleuren één pixel en schrijven het bestand.
Een afbeelding tekenen¶
Kopieer je functies uit de basislaag naar mandelbrot.py. Schrijf daarna
mset() met twee geneste lussen. Gebruik het lusrecept uit lectures/4a_lussen
en beantwoord bij vraag 4 wanneer de binnenste lus klaar is met de rijen van de
huidige kolom en wanneer de buitenste lus klaar is met alle kolommen. Gebruik
scale om iedere pixel naar een
complex getal in het bereik -2.0 <= x <= 1.0 en -1.0 <= y <= 1.0 te
vertalen. Kleur punten waarvoor in_mset(c, 50) True geeft oranje en de
andere punten zwart.
def mset():
"""Schrijft een afbeelding van de mandelbrotverzameling."""
width = 300
height = 200
image = PNGImage(width, height)
for col in range(width):
for row in range(height):
x = scale(col, width, -2.0, 1.0)
y = scale(row, height, -1.0, 1.0)
c = x + y * 1j
if in_mset(c, 50):
image.plot_point(col, row, (255, 175, 0))
else:
image.plot_point(col, row, (0, 0, 0))
image.save_file("mset.png")
Controleer dat mset.png 300 pixels breed en 200 pixels hoog is. Voer de
functie daarna uit met mset().
Verkennen¶
Maak drie varianten. Verander telkens één waarde en noteer wat je in de afbeelding ziet:
Teken alleen het venster
-0.8 <= x <= -0.6en0.0 <= y <= 0.2.Gebruik 10, 25 en 100 iteraties. Welke rand wordt scherper?
Geef ontsnappende punten een andere kleur dan punten die binnen de verzameling blijven.
Bewaar alleen de variant die je wilt bekijken. De afbeelding is het zichtbare resultaat van je geneste lussen en je eerdere functies. Deze extra laag is oefenmateriaal; er is geen inleverroute.