
Sierpinski-Dreieck und Cantor Staub gehören - wie schon erwähnt - zu den Fraktalen. Fraktale sind sowohl in der freien Natur vorhanden (vgl. Romanesco), als auch in der Mathematik sehr interessant (vgl. Julia-Mengen, Mandelbrot-Menge). Am interessantesten ist es aber, sich selbst welche auszudenken. Das Handwerk dazu haben Sie nun erlernt, es fehlt Ihnen aber vermutlich noch an Übung zur Eigenkreation.
Darum gibt es nun noch einige vorgegeben Fraktale zur Bearbeitung:
Das Bild oben zeigt ein Fraktal aus Kreisen, man könnte es auch mit Quadraten oder Dreiecken gestalten. Man muss sich Gedanken darüber machen, ob sie überhaupt noch iterativ gestaltet werden können, sollen sich die primitiven Grafiken berühren oder nicht, gibt es Fraktale, die sich gleichzeitig über verschiedene Rekursionstiefen bewegen?
Betrachten Sie zuerst die einzelnen Schritte:

Es wird die vorherige Figur verkleinert und um 90° gedreht links von einem Kreis, um -90° rechts davon und einmal darüber platziert.
Der Kreis in der Mitte könnte als die vorherige Figur in der originalen Grösse verstanden werden, aber es ist einfacher, sich einen neuen Kreis vorzustellen.from pytamaro import Color, Graphic, above, ellipse, beside, show_graphic, red
def fraktal_it(tiefe: int, groesse: float, farbe: Color) -> Graphic:
f = 2/5 # der Verkleinerungsfaktor
return above(
ellipse(groesse*f, groesse*f, farbe),
beside(
ellipse(groesse*f, groesse*f, farbe),
beside(
ellipse(groesse, groesse, farbe),
ellipse(groesse*f, groesse*f, farbe)
)
)
)Keine Angst, sollte es nicht auf Anhieb geklappt haben, ist das nicht verwunderlich. Die Überlegungen, die zusätzlich gemacht werden müssen, damit genau die Figur angezeigt wird, sind umfangreich. Vergleichen Sie Ihren Code nun mit dem unten abgebildeten.
def fraktal_it(tiefe: int, groesse: float, farbe: Color) -> Graphic:
f = 2/5 # der Verkleinerungsfaktor
result = empty_graphic()
for i in range(tiefe+1):
result = above(
result,
beside(
rotate(90,result),
beside(
ellipse(groesse*f**(tiefe-i), groesse*f**(tiefe-i), farbe),
rotate(-90,result)
)
)
)
return result
show_graphic(fraktal_it(5, 500, red))
Die Überlegungen, die Sie hier gesehen haben, aber vielleicht noch nicht selbst machen konnten, sind Übungssache. Jetzt haben Sie sie das erste Mal gesehen, und nach einigen Malen können Sie sie dann auch reproduzieren.
Allenfalls ist es einfacher, die Funktion rekursiv zu schreiben um so die ganzen Überlegungen zu der Anzahl der Iterationsschritte zu umgehen.
Die Vorschrift kann nun aus dem obigen Code gut abgeleitet werden. Wichtig ist, dass Sie erkannt haben, dass es zwei verschiedene Grössen von Kreisen pro Rekursionsschritt gibt und die Abbruchbedingungung der einfache Kreis ist.
Schreiben Sie nun den Code für die rekurisive Funktion:
from pytamaro import rotate
def fraktal_rek(tiefe: int, groesse: float, farbe: Color) -> Graphic:
f = 2/5 # der Verkleinerungsfaktor
if tiefe == 0:
return ellipse(groesse,groesse, farbe)
else:
return above(
fraktal_rek(tiefe-1, groesse*f, farbe),
beside(
beside(
rotate(90,fraktal_rek(tiefe-1, groesse*f, farbe)),
ellipse(groesse, groesse, farbe)
),
rotate(-90,fraktal_rek(tiefe-1, groesse*f, farbe))
)
)Sie sehen, die komplizierten Überlegungen, die bei der Iteration notwendig waren, sind bei der Rekursion nicht mehr nötig.
Ändern Sie Ihren Code ab, sodass das untenstehende Bild entsteht, oder mit einer anderen Form gebildet wird. Versuchen Sie verschiedene Verkleinerungsfaktoren oder hängen Sie unten einen weiteren "Ast" an.

Wenn Sie Lust haben, dieses Fraktal weiter zu abstrahieren, also erst beim Aufruf entscheiden zu müssen, ob wirklich ein Kreis oder vielleicht doch ein Dreieck übergeben, mit einem anderen Verkleinerungsfaktor gearbeitet wird, schauen Sie sich die optionale Aktivität Funktionen übergeben an.
This activity has been created by Farner and is licensed under CC BY-SA 4.0.
Fraktal aus primitiven Grafiken


PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI
Privacy Policy • Platform Version 8f2269b7 (Thu, 07 May 2026 14:30:13 GMT)