lehrkraefte:blc:informatik:glf22:turtle

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf22:turtle [2023/01/24 07:01]
Ivo Blöchliger [Koch-Kurve]
lehrkraefte:blc:informatik:glf22:turtle [2023/01/27 09:22] (current)
Ivo Blöchliger [Pythagorasbaum]
Line 198: Line 198:
 Die Funktion nimmt folgende Parameter entgegen: Die Funktion nimmt folgende Parameter entgegen:
   * Eine Turtle ''t''. Diese legt die Richtung und die Länge vom Quadrat als ''t.r'' fest.   * Eine Turtle ''t''. Diese legt die Richtung und die Länge vom Quadrat als ''t.r'' fest.
-  * Einen Winkel ''w'', der dem Winkel des rechtwinkligen Dreiecks entspricht. +  * Einen Winkel ''w'', der dem «linken» Winkel des rechtwinkligen Dreiecks entspricht. 
-  * Die Turtle startet bei «Start» und muss am Ende bei «Ende» sein. Die Schrittlänge ''t.r'' soll unverändert sein.+  * Die Turtle startet bei «Start» und muss am Ende bei «Ende» sein. Die Schrittlänge ''t.r'' soll am Schluss unverändert sein
 +  * Sie können dazu auch die Turtle-Methoden ''save'' und ''restore'' verwenden, um sich die Position und Zustand der Turtle zu merken.
  
-Hinweis: Sie können die Kathetenlängen mit trigonometrischen Funktionen berechnen. +Hinweis: Sie können die Kathetenlängen mit trigonometrischen Funktionen aus ''w'' und ''t.r'' berechnen. 
  
 </WRAP> </WRAP>
Line 208: Line 209:
 Erweitern Sie Ihre Funktion so, dass ein zusätzlicher Parameter ''stufe'' entgegengenommen wird. Erweitern Sie Ihre Funktion so, dass ein zusätzlicher Parameter ''stufe'' entgegengenommen wird.
   * Ist die ''stufe'' Null, macht die Funktion immer noch das genau gleiche.   * Ist die ''stufe'' Null, macht die Funktion immer noch das genau gleiche.
-  * Sonst wird anstelle des Zeichnens Katheten die Funktion selbst mit ''stufe-1'' aufgerufen, der Rest bleibt sich geich.+  * Sonst wird anstelle des Zeichnens der Katheten die Funktion selbst mit ''stufe-1'' aufgerufen, der Rest bleibt sich geich. 
 +  * Probieren Sie verschiedene Winkel aus. 
 +  * Anstatt die ''stufe'' als Abbruchkriterium zu verwenden, verwenden Sie ''t.r'', d.h. sobald die zu zeichnende Strecke z.B. kleiner als 3 ist, wird abgebrochen. So werden alle Äste bis zu einer sinnvollen Tiefe gezeichnet. 
 +  * Man erhält einen interessanten Baum, wenn man statt einen konstanten Winkel ''w'' zu verwenden, zwischen ''w'' und ''90-w'' abwechselt, bzw. den je nach Stufe anpasst (z.B. als Schwingung ;-))
 </WRAP> </WRAP>
 +
 +<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/180*pi)*t.r
 +    b = sin(winkel/180*pi)*t.r
 +    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)
 +</code>
 +</hidden>
  • lehrkraefte/blc/informatik/glf22/turtle.1674540113.txt.gz
  • Last modified: 2023/01/24 07:01
  • by Ivo Blöchliger