Anwendungsübung zur Rekursion
In diesem Notebook soll eine graphische Anwendung einer rekursiven Funktion implementiert werden. Als Grafiklibrary wird PyTamaro verwendet. In der folgenden Code Zelle werden die erforderlichen Funktionen geladen.
Im folgenden soll es darum gehen diese Scheneeflocke
aus Elementen, wie dem folgenden
zusammenzubauen.
Dabei ist die Grundkomponente offensichtlich eine kurze Gerade.
def draw_line(length: float) -> Graphic:
"""Return a simple horizontal line as a thin rectangle of given length."""
# draw a thin black rectangle and return it as a Graphic
# use named arguments to be robust against different rectangle signatures
line = rectangle(width=length, height=2, color=black)
return line
# show a short sample line (50 units)
show_graphic(draw_line(50))
Aus dieser kurzen Geraden, kann ein einzelner Zacken zusammengebaut werden.
def compose_element(element: Graphic) -> Graphic:
"""Create a simple spike element by overlaying the given"""
# Rotate copies of the basic line and overlay them to form a spike
left = rotate(30, element)
right = rotate(-30, element)
# center the original between the two rotated copies
spike = overlay(left, overlay(element, right))
return spike
# create a test line and show the composed base element
testline = draw_line(50)
basiselement = compose_element(testline)
show_graphic(basiselement)
Aus diesem einzelnen Zacken ist als nächstes ein fein gezahnte Element zu bauen. Der Funktion soll als Argument die Rekutsionstiefe übergeben werden. Die vorher programmierten Funktionen können als Hilfsfunktionen aufgerufen werden.
Die so gezeichnete gezahnte Linie bildet die Basis einer Schneeflocke. Implementieren Sie eine Funktion zum zeichnen einer Schneeflocke. Der Funktion soll die Rekursionstiefe als Argument übergeben werden können.
Hier finden sie die Musterlösung der Übung Schneeflocke.