Basis: Mandelbrot op een raster¶
Van pixel naar complex getal¶
Neem je functies uit de opstap over in mandelbrot.py. Een afbeelding heeft
kolommen en rijen als gehele getallen. De mandelbrotberekening gebruikt
complexe getallen. De functie scale vertaalt een pixelnummer naar een waarde
in een gekozen bereik.
Stap 1: schalen¶
Schrijf scale(pix, pix_max, value_min, value_max). De eerste pixel hoort bij
value_min en de laatste pixel ligt aan de andere kant van het bereik.
def scale(pix, pix_max, value_min, value_max):
"""Vertaalt pix naar het bereik value_min tot value_max."""
...
assert scale(100, 200, -2.0, 1.0) == -0.5
assert scale(100, 200, -1.5, 1.5) == 0.0
Stap 2: een raster doorlopen¶
Schrijf count_inside(width, height, n). Doorloop alle kolommen en rijen met
geneste lussen. Gebruik scale om c = x + y * 1j te maken en tel hoeveel
punten in_mset(c, n) oplevert.
def count_inside(width, height, n):
"""Telt rasterpunten die na n updates binnen blijven."""
...
assert count_inside(1, 1, 25) == 0
De exacte waarde verandert als je het raster of het aantal iteraties verandert; de assertion maakt het kleinste geval controleerbaar. In de extra laag gebruik je hetzelfde raster om een PNG-afbeelding te schrijven.