Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:blc:informatik:glf22:turtle [2023/01/12 10:28] Ivo Blöchliger [Funktionen] |
lehrkraefte:blc:informatik:glf22:turtle [2023/01/27 09:22] (current) Ivo Blöchliger [Pythagorasbaum] |
||
---|---|---|---|
Line 63: | Line 63: | ||
<hidden Lösungsvorschläge> | <hidden Lösungsvorschläge> | ||
- | Das kriegen Sie jetzt aber selber hin! | + | <code python 12-eck.py> |
+ | from kroete import Kroete | ||
+ | |||
+ | t = Kroete() | ||
+ | |||
+ | for i in range(12): | ||
+ | t.forward() | ||
+ | t.left(30) | ||
+ | |||
+ | </ | ||
+ | <code python 5zack.py> | ||
+ | from kroete import Kroete | ||
+ | |||
+ | t = Kroete() | ||
+ | |||
+ | for i in range(5): | ||
+ | t.forward(200) | ||
+ | t.left(144) | ||
+ | </ | ||
+ | <code python n-eck.py> | ||
+ | from kroete import Kroete | ||
+ | |||
+ | n=7 | ||
+ | |||
+ | t = Kroete() | ||
+ | for i in range(n): | ||
+ | t.forward() | ||
+ | t.left(360/ | ||
+ | |||
+ | </ | ||
+ | <code python n-zack.py> | ||
+ | from kroete import Kroete | ||
+ | |||
+ | n=11 # Anzahl Zacken | ||
+ | m=4 # Wie viele Zacken vorwärts (darf kein Teiler von n sein!) | ||
+ | |||
+ | t = Kroete() | ||
+ | for i in range(n): | ||
+ | t.forward(200) | ||
+ | t.left(m*360/ | ||
+ | </ | ||
</ | </ | ||
</ | </ | ||
Line 135: | Line 175: | ||
<WRAP todo> | <WRAP todo> | ||
- | * Schreiben und testen Sie eine Funktion '' | + | |
- | * Schreiben Sie dann eine Funktion '' | + | |
- | * Anstatt jetzt noch eine Funktion ' | + | * Schreiben Sie dann eine Funktion '' |
- | * Wie lange wird die ganze Kurve auf Stufe 0, 1, 2, 3 und allgemein $n$? Passen Sie damit die Schrittlänge an, damit die Kurve schön auf den Bildschirm passt. | + | * Wie unterscheiden sich die Funktionen '' |
- | * Zeichnen Sie dann 3 Kurven auf einem gleichseitigen Dreieck, dass damit die «Kochschneeflocke» entsteht. | + | * Anstatt jetzt noch eine Funktion |
+ | * Zusatzaufgabe: | ||
+ | |||
+ | {{: | ||
</ | </ | ||
+ | |||
+ | ==== Pythagorasbaum ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | <WRAP todo> | ||
+ | Um diesen Baum zu zeichnen, erstellen Sie erst eine Funktion '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Die Funktion nimmt folgende Parameter entgegen: | ||
+ | * Eine Turtle '' | ||
+ | * Einen Winkel '' | ||
+ | * Die Turtle startet bei «Start» und muss am Ende bei «Ende» sein. Die Schrittlänge '' | ||
+ | * Sie können dazu auch die Turtle-Methoden '' | ||
+ | |||
+ | Hinweis: Sie können die Kathetenlängen mit trigonometrischen Funktionen aus '' | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP todo> | ||
+ | Erweitern Sie Ihre Funktion so, dass ein zusätzlicher Parameter '' | ||
+ | * Ist die '' | ||
+ | * Sonst wird anstelle des Zeichnens der Katheten die Funktion selbst mit '' | ||
+ | * Probieren Sie verschiedene Winkel aus. | ||
+ | * Anstatt die '' | ||
+ | * Man erhält einen interessanten Baum, wenn man statt einen konstanten Winkel '' | ||
+ | </ | ||
+ | |||
+ | <hidden Lösungsvorschlag> | ||
+ | <code python> | ||
+ | from kroete import Kroete | ||
+ | from math import cos,sin,pi | ||
+ | |||
+ | |||
+ | |||
+ | def baum(t, winkel, stufe): | ||
+ | t.save() | ||
+ | for i in range(4): | ||
+ | t.forward() | ||
+ | t.left(90) | ||
+ | t.left(90) | ||
+ | t.move() | ||
+ | a = cos(winkel/ | ||
+ | b = sin(winkel/ | ||
+ | t.right(90-winkel) | ||
+ | t.r = a | ||
+ | if stufe==0 or (stufe<0 and t.r<3): | ||
+ | t.forward() | ||
+ | else: | ||
+ | baum(t, winkel, stufe-1) | ||
+ | t.right(90) | ||
+ | t.r = b | ||
+ | if stufe==0 or (stufe<0 and t.r<3): | ||
+ | t.forward() | ||
+ | else: | ||
+ | baum(t, winkel, stufe-1) | ||
+ | t.restore() | ||
+ | t.move() | ||
+ | |||
+ | |||
+ | |||
+ | t = Kroete() | ||
+ | t.y = -200 | ||
+ | t.x = 50 | ||
+ | t.r = 110 | ||
+ | baum(t, 30, -1) | ||
+ | </ | ||
+ | </ |