lehrkraefte:blc:informatik:glf25:turtle:lsystems

Differences

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

Link to this comparison view

Next revision
Previous revision
lehrkraefte:blc:informatik:glf25:turtle:lsystems [2026/01/09 08:52] – created Ivo Blöchligerlehrkraefte:blc:informatik:glf25:turtle:lsystems [2026/01/09 10:28] (current) – [Sierpinski Dreieck annähern] Ivo Blöchliger
Line 57: Line 57:
 </code> </code>
 {{lehrkraefte:blc:informatik:glf25:turtle:leaves.svg?200}} {{lehrkraefte:blc:informatik:glf25:turtle:leaves.svg?200}}
 +
 +
 +==== Zufall ====
 +<code python>
 +from random import random
 +
 +nulleins = random()  # Zufällige «reelle» Zahl im Intervall [0,1)
 +</code>
 +
 +Damit kann z.B. zum Drehwinkel jeweils ein zufälliger Winkel addiert werden, bzw. vor dem Zeichnen noch zufällig etwas gedreht werden. Auch kann die Länge der Striche variiert werden.
 +
 +===== Weitere berühmte Kurven =====
 +==== Drachenkurve ====
 +Man faltet einen Papierstreifen immer wieder hälftig. Dann öffnet man diesen so, dass alle Falze 90° sind.
 +
 +<code python>
 +zeichne("A",{"A":"A+B", "B":"A-B"},13)
 +</code>
 +
 +
 +Wir führen dazu die neue Regel ein, dass alle Grossbuchstaben gezeichnet werden (wie ''F''):
 +<code python>
 +if c>="A" and c<="Z":     # anstatt c=="F":
 +</code>
 +
 +{{lehrkraefte:blc:informatik:glf25:turtle:dragon.svg?200}}
 +
 +==== Hilbertkurve ====
 +
 +  * https://en.wikipedia.org/wiki/Hilbert_curve
 +
 +Hier werden die Buchstaben ''A'' und ''B'' nicht gezeichnet... 
 +
 +<code python>
 +zeichne("A", {"A":"+BF-AFA-FB+", "B":"-AF+BFB+FA-"},2)
 +</code>
 +
 +{{lehrkraefte:blc:informatik:glf25:turtle:hilbert.svg?200}}
 +
 +==== Zu zeichnende Buchstaben festlegen ====
 +Den regeln wird ein weiterer Parameter ''draw'' hinzugefügt, indem eine Liste mit Buchstaben gespeichert wird, die gezeichnet werden sollen.
 +
 +Die Drachenkurve wird dann wie folgt definiert:
 +<code python>
 +zeichne("A",{"A":"A+B", "B":"A-B", "draw":"AB"},8)
 +</code>
 +Die Bedingung zum Zeichnen ist dann
 +<code python>
 +if c in regeln['draw']:
 +</code>
 +Damit alter Code noch läuft, kann am Anfang der Funktion ''zeichne'' die Präsenz des Schlüssels ''draw'' in den Regeln überprüft werden. Fehlt der Schlüssel wird dieser auf ''F'' gesetzt:
 +<code python>
 +if not "draw" in regeln:
 +   regeln['draw'] = 'F'
 +</code>
 +
 +
 +==== Sierpinski Dreieck annähern ====
 +<code python>
 +zeichne("A", {"A":"+B-A-B+", "B":"-A+B+A-", "draw":"AB"}, 4)
 +</code>
 +
 +{{lehrkraefte:blc:informatik:glf25:turtle:sierpinski.svg?200}}
  
  • lehrkraefte/blc/informatik/glf25/turtle/lsystems.1767948730.txt.gz
  • Last modified: 2026/01/09 08:52
  • by Ivo Blöchliger