Kochkurve optional

Alt text

Eins der schönsten Fraktale ist die Kochkurve, die sich zu der Kochflocke (s. weiter unten) zusammensetzen lässt. Benannt nach ihrem Schöpfer ist ihre zweiteilige Vorschrift recht einfach zu finden.

Vorarbeit

Es stellen sich aber noch einige geometrische Probleme mit PyTamaro, die es zuerst zu lösen gilt: Sie wissen, dass sich um jede primitive oder zusammengesetzte Grafik einen rechteckigen "Fangrahmen" legt, der die Pinpositionen vorgibt.

alt text

Es gibt unschöne Lücken. Egal wie man es macht, irgendwo entsteht eine unschöne Lücke.

Sie müssen deshalb beim Erstellen der Kochkurve mit abgeschrägten Teilstücken arbeiten und diese müssen in einer bestimmten Reihenfolge aneinander gelegt werden, so dass keine unregelmässigen Lücken entstehen.

alt text

Die Winkel der Figur sind alles 60°-Winkel, die Winkel der Teilstücke sind am einfachsten mit 45°-Winkeln zu generieren, da es dafür keine Trigonometrie braucht und es muss einen rechten und einen linken Teil geben, die dann aneinander gelegt werden.

Loading...
Lösung (zum Anzeigen auf den Pfeil drücken, aber nur benutzen, wenn Sie wirklich nicht weiterkommen!)
from pytamaro import (Color, Graphic, beside, rotate, triangle, rectangle, 
                      show_graphic, red)
                      
def gleichschenkliges_trapez(laenge: float, hoehe:float, farbe: Color) -> Graphic:
    return beside(
            beside(
                rotate(90, triangle(hoehe, hoehe, 90, farbe)),
                rectangle(laenge-2*hoehe, hoehe, farbe)
            ),
            triangle(hoehe, hoehe, 90, farbe)
        )

Rekursive Funktion

Loading...
Lösung (zum Anzeigen auf den Pfeil drücken, aber nur benutzen, wenn Sie wirklich nicht weiterkommen!)
from pytamaro import compose, pin, bottom_right, bottom_left

def koch_kurve(tiefe: int, laenge: float, farbe: Color) -> Graphic:
     f = 1/3  # der Verkleinerungsfaktor
     if tiefe == 0:
         return gleichschenkliges_trapez(laenge, 0.1*laenge, farbe)
     else:
        linker_teil = compose(
                    pin(bottom_right, koch_kurve(tiefe-1, laenge*f, farbe)),
                    rotate(60, pin(bottom_left, koch_kurve(tiefe-1, laenge*f, farbe)))
                )
        rechter_teil = compose(
                 rotate(-60,pin(bottom_right, koch_kurve(tiefe-1, laenge*f, farbe))),
                pin(bottom_left, koch_kurve(tiefe-1, laenge*f, farbe))
                )
        return compose(
                pin(bottom_right, linker_teil),
                pin(bottom_left, rechter_teil)
                )

Wenn Ihre Kochkurve nun korrekt angezeigt wird, können Sie sich überlegen, wie sich die gewonnene Kurve zur Kochflocke zusammensetzen lässt. Mit der aktuellen Rekursionstiefe und der Abbildung unten wird die Aufgabe wohl eine Denksportaufgabe. Wenn Sie aber den Hinweis bekommen, dass die Flocke in der ersten Interationsebene einen sechszackigen Stern darstellt, sollte sie machbar werden.

Ansonsten finden Sie unter PyTamaro iconFibonacci ein weiteres sehr schönes Fraktal, dass es sich zu programmieren lohnt.

Viel Spass!

alt text


This activity has been created by Farner and is licensed under CC BY-SA 4.0.

Kochkurve optional

PyTamaro logo

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy Policy • Platform Version fdfbaa4f (November 6, 2026 at 4:52:44 PM UTC)