At My Fingertips
Rapid Playground
Hier ist ein wunderbares YouTube Video über den Goldenen Schnitt:
Entwickle eine Python Funktion zum Zeichnen der Animation des Goldenen Schnitts.
def bluetenstand(drehung: float, anzahl: int) -> Grafik:
pass
Diese Funktion generiert einen Blütenstand mit der gegebenen Anzahl Blüten.
Der Parameter drehung
entspricht der Anzahl Umdrehungen zwischen zwei Blüten. Er ist normalerweise eine Zahl zwischen 0 und 1. 1 wäre immer eine volle Umdrehung. (sqrt(5)-1)/2
wäre der Goldene Schnitt, die "irrationalste" Zahl, welche zur "effizientesten" Anordnung der Blüten führt.
Die Konstruktion funktioniert fast gleich wie das Erzeugen der Ticks der Bahnhofsuhr: Jede Blüte wird mit einem transparenten Rechteck etwas nach aussen verschoben.
Die erste Blüte befindet sich fast im Zentrum, die zweite Blüte ist etwas vom Zentrum weg, die dritte Blüte ist noch etwas weiter vom Zentrum weg, und so weiter. Für eine schöne Anordnung sollte die Distanz einer Blüte vom Zentrum der Quadratwurzel des Blütenindexes (numerieren wir die Blüten von 0 bis anzahl - 1
), multipliziert mit einem Konstanten Faktor, entsprechen, plus einem gewissen Minimalabstand. Zum Beispiel: abstand = sqrt(i) * 10 + 30
.
Achtung: Wenn wir keinen Minimalabstand dazuaddieren, kriegen wir für die erste Blüte einen abstand
von 0. Deshalb haben wir oben 30 dazuaddiert. Damit wird der Abstand nie kleiner als 30. Mit diesem Abstand können wir auch die Grösse des "Lochs" im Zentrum des Blütenstands kontrollieren. Wir können so zum Beispiel einen Minimalabstand von 100 wählen, um die Blüten um ein Loch vom Radius 100 im Zentrum herum anzuordnen.
GOLDENER_SCHNITT = (sqrt(5) - 1) / 2
links = bluetenstand(GOLDENER_SCHNITT, 400)
rechts = bluetenstand(1 / 24, 400)
Nun erzeuge eine Animation die den Wert des Parameters drehung
variiert.
Hier ist ein Beispiel: Das erste Frame der Animation (die erste Grafik in der Liste) zeigt einen Blütenstand mit 400 Blüten und dem Goldenen Schnitt. Die zweite Grafik dreht sich zwischen zwei Blüten um 0.00001 Drehungen mehr als die Erste. Die dritte Grafik dreht sich um 0.00002 mehr als die Erste. Und so weiter.
[bluetenstand_vor_hintergrund(goldener_schnitt + schritt * 0.00001, 400) for schritt in range(200)]
Verwende die gleiche Strategie wie für den Blütenstand um eine Blätterrosette zu konstruieren.
def blaetter_rosette(drehung: float, blatt_radius: float, abstands_faktor: float, anzahl: int) -> Grafik:
pass
Anstelle eines gelben Kreises als Blüte, verwende dazu eine Überlagerung von zwei grünen Kreissektoren als Blatt.
Der blatt_radius
ist der Radius der zwei Kreissektoren, aus denen ein Blatt besteht. Die Sektoren haben beide einen Winkel von 120 Grad und werden in ihrer Mitte überlagert.
Damit man die einzelnen Blätter sehen kann, überlagern wir zum zeichnen eines Blatts eine grüne über eine etwas grössere schwarze Figur.
Der Abstandsfaktor ist wie beim Blütenstand der Faktor, mit dem die Quadratwurzel des Blattindex zu multiplizieren ist, damit man den Abstand des Blattes vom Zentrum der Rosette berechnen kann.
Damit man die einzelnen Blätter sehen kann, bauen wir ein Blatt aus zwei überlagerten Blattfiguren: eine schwarze Blattfigur und eine etwas kleinere grüne Blattfigur.
Eine Blattfigur besteht aus einer Überlagerung von zwei Kreissektoren. Die Sektoren haben beide einen Winkel von 120 Grad und werden in ihrer Mitte überlagert.
Der blatt_radius
ist der Radius der zwei Kreissektoren, aus denen das Blatt besteht.
Der folgende Aufruf erzeugt eine Blatt-Rosette mit 43 Blättern:
blaetter_rosette(0.63303, 100, 25, 43)
This activity has been created by LuCE Research Lab and is licensed under CC BY-SA 4.0.
Goldener Schnitt
PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI
Privacy Policy • Platform Version c08406b (Wed, 20 Nov 2024 12:30:00 GMT)