ÜbungBaut auf Turtle: Bilder aus Befehlen und Katas: Rekursion auf
icon: /images/icons/hilbert.svg kind: uebung duration: 1 Doppelstunde languages: [ruby, python, javascript] idea: Bäume, ein Farnblatt und Kurven, die aus kleineren Kopien ihrer selbst bestehen curriculum: "Sek I: Digitale Bilder und Visualisierung (Turtle-Grafik, rekursive Algorithmen für Grafiken), Geschichte der Informatik (Lebensläufe und Leistungen bedeutender Persönlichkeiten); Oberstufe: Algorithmen und Datenstrukturen (rekursive Verfahren)" topics: [rekursion, computergrafik, geschichte] requires: [turtle-1, kata-recursion] age: Oberstufe

Turtle: Bäume und Kurven

Ein Baum besteht aus einem Stamm und zwei kleineren Bäumen, ein Farnblatt aus einem Stück Stiel und drei kleineren Farnblättern. Mit einer Funktion, die sich selbst aufruft, zeichnet die Schildkröte solche Bilder in wenigen Zeilen: Bäume, die schief wachsen oder bis zum Boden hängen, ein Farnblatt, das Sierpiński-Dreieck, die Koch-Kurve und die Hilbert-Kurve.

Die Befehle der Schildkröte kennst du aus Turtle: Bilder aus Befehlen, Funktionen, die sich selbst aufrufen, aus den Katas: Rekursion. Hier kommt beides zusammen: Jede Figur auf dieser Seite besteht aus kleineren Kopien ihrer selbst. Wie, zeigt vor jeder Aufgabe ein Bild, das du Stufe für Stufe durchklickst; was aus der Stufe davor stammt, ist farbig.

1. Ein Baum

Ein Baum ist ein Stamm, an dem links und rechts ein kleinerer Baum wächst. Jeder davon ist wieder ein Stamm mit zwei kleineren Bäumen, und so weiter, bis die Bäume so klein sind, dass die Funktion aufhört. Klick dich durch die Stufen: Jede Stufe besteht aus einem Stamm und zwei Bäumen der Stufe davor, in Farbe.

Wer die Funktion schreibt, muss also nur zwei Fragen beantworten: Was zeichnet die kleinste Stufe? Und wie setzt sich eine Stufe aus der davor zusammen? Den Rest erledigen die Aufrufe von selbst.

Aufgabe 1Ein BaumKnobelei

Schreib tree(size, depth) für den Baum aus dem Bild oben: Bei der Tiefe 0 zeichnet sie nichts, sonst einen Stamm der Länge size mit zwei kleineren Bäumen daran. Danach steht die Schildkröte wieder unten am Stamm und schaut wie vorher.

forward 100back 100left 90right 90
Tipp

Bei der Tiefe 0 kehrt die Funktion sofort zurück. Das ist das Ende der Rekursion: Ohne diese Zeile ruft sie sich für immer selbst auf.

Nächster Tipp

Sonst: den Stamm vorwärts, 30 nach links, tree(size * 0.7, depth - 1) für den linken Baum, 60 nach rechts, derselbe Aufruf für den rechten, und 30 nach links zurück.

Nächster Tipp

Am Ende den Stamm zurück: Erst dann steht die Schildkröte nach dem linken Baum wieder dort, wo der rechte anfängt.

Aufgabe 1Ein BaumKnobelei

Schreib tree(size, depth) für den Baum aus dem Bild oben: Bei der Tiefe 0 zeichnet sie nichts, sonst einen Stamm der Länge size mit zwei kleineren Bäumen daran. Danach steht die Schildkröte wieder unten am Stamm und schaut wie vorher.

forward(100)back(100)left(90)right(90)
Tipp

Bei der Tiefe 0 kehrt die Funktion sofort zurück. Das ist das Ende der Rekursion: Ohne diese Zeile ruft sie sich für immer selbst auf.

Nächster Tipp

Sonst: den Stamm vorwärts, 30 nach links, tree(size * 0.7, depth - 1) für den linken Baum, 60 nach rechts, derselbe Aufruf für den rechten, und 30 nach links zurück.

Nächster Tipp

Am Ende den Stamm zurück: Erst dann steht die Schildkröte nach dem linken Baum wieder dort, wo der rechte anfängt.

Aufgabe 1Ein BaumKnobelei

Schreib tree(size, depth) für den Baum aus dem Bild oben: Bei der Tiefe 0 zeichnet sie nichts, sonst einen Stamm der Länge size mit zwei kleineren Bäumen daran. Danach steht die Schildkröte wieder unten am Stamm und schaut wie vorher.

forward(100)back(100)left(90)right(90)
Tipp

Bei der Tiefe 0 kehrt die Funktion sofort zurück. Das ist das Ende der Rekursion: Ohne diese Zeile ruft sie sich für immer selbst auf.

Nächster Tipp

Sonst: den Stamm vorwärts, 30 nach links, tree(size * 0.7, depth - 1) für den linken Baum, 60 nach rechts, derselbe Aufruf für den rechten, und 30 nach links zurück.

Nächster Tipp

Am Ende den Stamm zurück: Erst dann steht die Schildkröte nach dem linken Baum wieder dort, wo der rechte anfängt.

Aufgabe 2Ein schöner BaumKnobelei

Mach aus dem Baum von eben einen schönen: Jeder Ast ist so dick wie seine Tiefe (width depth), die Äste mit der Tiefe 1 und 2 sind grün ("forestgreen"), alle anderen braun ("saddlebrown"). Die Äste drehen sich um 25 Grad und sind 0,75-mal so lang wie der davor. Zurück geht die Schildkröte mit gehobenem Stift, sonst malt sie den braunen Ast in der Farbe des letzten Blatts nach.

forward 100back 100left 90right 90pen_uppen_downwidth 4
Tipp

Breite und Farbe setzt die Funktion am Anfang, bevor sie den Ast zeichnet: Dann gelten sie für ihn.

Nächster Tipp

Die Farbe hängt von der Tiefe ab: color depth <= 2 ? "forestgreen" : "saddlebrown", oder mit if und else.

Nächster Tipp

Am Ende: Stift hoch, den Ast zurück, Stift wieder runter.

Aufgabe 2Ein schöner BaumKnobelei

Mach aus dem Baum von eben einen schönen: Jeder Ast ist so dick wie seine Tiefe (width(depth)), die Äste mit der Tiefe 1 und 2 sind grün ("forestgreen"), alle anderen braun ("saddlebrown"). Die Äste drehen sich um 25 Grad und sind 0,75-mal so lang wie der davor. Zurück geht die Schildkröte mit gehobenem Stift, sonst malt sie den braunen Ast in der Farbe des letzten Blatts nach.

forward(100)back(100)left(90)right(90)pen_up()pen_down()width(4)
Tipp

Breite und Farbe setzt die Funktion am Anfang, bevor sie den Ast zeichnet: Dann gelten sie für ihn.

Nächster Tipp

Die Farbe hängt von der Tiefe ab: if depth <= 2: grün, else: braun.

Nächster Tipp

Am Ende: Stift hoch, den Ast zurück, Stift wieder runter.

Aufgabe 2Ein schöner BaumKnobelei

Mach aus dem Baum von eben einen schönen: Jeder Ast ist so dick wie seine Tiefe (width(depth)), die Äste mit der Tiefe 1 und 2 sind grün ("forestgreen"), alle anderen braun ("saddlebrown"). Die Äste drehen sich um 25 Grad und sind 0,75-mal so lang wie der davor. Zurück geht die Schildkröte mit gehobenem Stift, sonst malt sie den braunen Ast in der Farbe des letzten Blatts nach.

forward(100)back(100)left(90)right(90)penUp()penDown()width(4)
Tipp

Breite und Farbe setzt die Funktion am Anfang, bevor sie den Ast zeichnet: Dann gelten sie für ihn.

Nächster Tipp

Die Farbe hängt von der Tiefe ab: color(depth <= 2 ? "forestgreen" : "saddlebrown"), oder mit if und else.

Nächster Tipp

Am Ende: Stift hoch, den Ast zurück, Stift wieder runter.

Ein Baum, in dem links und rechts dasselbe passiert, sieht aus wie gezeichnet. Andere Winkel und andere Längen für jede Seite, und er wächst wie ein echter:

Aufgabe 3Ein schiefer BaumKnobelei

Echte Bäume wachsen nicht gleichmäßig. Ändere deinen schönen Baum: Der linke Ast dreht sich um 15 Grad und wird 0,8-mal so lang, der rechte dreht sich um 40 Grad und wird 0,6-mal so lang. Breite und Farben bleiben wie eben.

forward 100back 100left 90right 90pen_uppen_downwidth 4
Tipp

Der linke und der rechte Baum bekommen jetzt verschiedene Zahlen: size * 0.8 und size * 0.6.

Nächster Tipp

Die Drehungen müssen zusammenpassen: 15 nach links für den linken Baum, dann 15 + 40 = 55 nach rechts für den rechten, und am Ende 40 nach links zurück.

Aufgabe 3Ein schiefer BaumKnobelei

Echte Bäume wachsen nicht gleichmäßig. Ändere deinen schönen Baum: Der linke Ast dreht sich um 15 Grad und wird 0,8-mal so lang, der rechte dreht sich um 40 Grad und wird 0,6-mal so lang. Breite und Farben bleiben wie eben.

forward(100)back(100)left(90)right(90)pen_up()pen_down()width(4)
Tipp

Der linke und der rechte Baum bekommen jetzt verschiedene Zahlen: size * 0.8 und size * 0.6.

Nächster Tipp

Die Drehungen müssen zusammenpassen: 15 nach links für den linken Baum, dann 15 + 40 = 55 nach rechts für den rechten, und am Ende 40 nach links zurück.

Aufgabe 3Ein schiefer BaumKnobelei

Echte Bäume wachsen nicht gleichmäßig. Ändere deinen schönen Baum: Der linke Ast dreht sich um 15 Grad und wird 0,8-mal so lang, der rechte dreht sich um 40 Grad und wird 0,6-mal so lang. Breite und Farben bleiben wie eben.

forward(100)back(100)left(90)right(90)penUp()penDown()width(4)
Tipp

Der linke und der rechte Baum bekommen jetzt verschiedene Zahlen: size * 0.8 und size * 0.6.

Nächster Tipp

Die Drehungen müssen zusammenpassen: 15 nach links für den linken Baum, dann 15 + 40 = 55 nach rechts für den rechten, und am Ende 40 nach links zurück.

Aufgabe 4Ein Baum, der bis zum Boden hängtKnobelei

Dreht sich jeder Ast weit genug und wird er nur wenig kürzer, biegen sich die äußeren Äste bis zum Boden. Ändere deinen schönen Baum: Beide Äste drehen sich um 36 Grad und werden 0,84-mal so lang; die Breite ist depth * 0.7, die Äste mit einer Tiefe bis 3 sind "olivedrab", die anderen "sienna". Er beginnt mit tree(52, 10).

forward 100back 100left 90right 90pen_uppen_downwidth 4
Tipp

Es ändern sich nur Zahlen und Farben: 36 statt 25 Grad, 0,84 statt 0,75, depth * 0.7 für die Breite.

Nächster Tipp

Nach dem linken Baum dreht sich die Schildkröte 72 Grad nach rechts, für den rechten, und am Ende 36 Grad nach links zurück.

Aufgabe 4Ein Baum, der bis zum Boden hängtKnobelei

Dreht sich jeder Ast weit genug und wird er nur wenig kürzer, biegen sich die äußeren Äste bis zum Boden. Ändere deinen schönen Baum: Beide Äste drehen sich um 36 Grad und werden 0,84-mal so lang; die Breite ist depth * 0.7, die Äste mit einer Tiefe bis 3 sind "olivedrab", die anderen "sienna". Er beginnt mit tree(52, 10).

forward(100)back(100)left(90)right(90)pen_up()pen_down()width(4)
Tipp

Es ändern sich nur Zahlen und Farben: 36 statt 25 Grad, 0,84 statt 0,75, depth * 0.7 für die Breite.

Nächster Tipp

Nach dem linken Baum dreht sich die Schildkröte 72 Grad nach rechts, für den rechten, und am Ende 36 Grad nach links zurück.

Aufgabe 4Ein Baum, der bis zum Boden hängtKnobelei

Dreht sich jeder Ast weit genug und wird er nur wenig kürzer, biegen sich die äußeren Äste bis zum Boden. Ändere deinen schönen Baum: Beide Äste drehen sich um 36 Grad und werden 0,84-mal so lang; die Breite ist depth * 0.7, die Äste mit einer Tiefe bis 3 sind "olivedrab", die anderen "sienna". Er beginnt mit tree(52, 10).

forward(100)back(100)left(90)right(90)penUp()penDown()width(4)
Tipp

Es ändern sich nur Zahlen und Farben: 36 statt 25 Grad, 0,84 statt 0,75, depth * 0.7 für die Breite.

Nächster Tipp

Nach dem linken Baum dreht sich die Schildkröte 72 Grad nach rechts, für den rechten, und am Ende 36 Grad nach links zurück.

2. Ein Farnblatt

Ein Farnblatt wächst wie ein Baum, nur anders: Sein Stiel biegt sich bei jedem Schritt ein wenig, und an jedem Schritt wächst links und rechts ein kleines Farnblatt. Was nach diesem Schritt kommt, ist wieder ein Farnblatt, nur ein bisschen kleiner.

Aufgabe 5Ein FarnblattKnobelei

Schreib fern(size, sign) für das Farnblatt aus dem Bild oben. sign ist 1 oder −1 und sagt, wohin sich das Blatt biegt: Mit −1 ist es gespiegelt. Danach steht die Schildkröte wieder unten am Stiel und schaut wie vorher.

forward 100back 100left 90right 90pen_uppen_downwidth 4
Tipp

Kleiner als 1 zeichnet die Funktion nichts.

Nächster Tipp

Sonst: ein Stück Stiel, 70 · sign nach rechts, ein halb so großes Blatt mit -sign, zurückdrehen; noch ein Stück Stiel, 70 · sign nach links, ein halb so großes Blatt mit sign, zurückdrehen.

Nächster Tipp

Dann der Rest des Blatts: 7 · sign nach rechts, fern(size - 1, sign), 7 · sign zurück, und den Stiel zurück, zwei Stücke: size * 2.

Aufgabe 5Ein FarnblattKnobelei

Schreib fern(size, sign) für das Farnblatt aus dem Bild oben. sign ist 1 oder −1 und sagt, wohin sich das Blatt biegt: Mit −1 ist es gespiegelt. Danach steht die Schildkröte wieder unten am Stiel und schaut wie vorher.

forward(100)back(100)left(90)right(90)pen_up()pen_down()width(4)
Tipp

Kleiner als 1 zeichnet die Funktion nichts.

Nächster Tipp

Sonst: ein Stück Stiel, 70 · sign nach rechts, ein halb so großes Blatt mit -sign, zurückdrehen; noch ein Stück Stiel, 70 · sign nach links, ein halb so großes Blatt mit sign, zurückdrehen.

Nächster Tipp

Dann der Rest des Blatts: 7 · sign nach rechts, fern(size - 1, sign), 7 · sign zurück, und den Stiel zurück, zwei Stücke: size * 2.

Aufgabe 5Ein FarnblattKnobelei

Schreib fern(size, sign) für das Farnblatt aus dem Bild oben. sign ist 1 oder −1 und sagt, wohin sich das Blatt biegt: Mit −1 ist es gespiegelt. Danach steht die Schildkröte wieder unten am Stiel und schaut wie vorher.

forward(100)back(100)left(90)right(90)penUp()penDown()width(4)
Tipp

Kleiner als 1 zeichnet die Funktion nichts.

Nächster Tipp

Sonst: ein Stück Stiel, 70 · sign nach rechts, ein halb so großes Blatt mit -sign, zurückdrehen; noch ein Stück Stiel, 70 · sign nach links, ein halb so großes Blatt mit sign, zurückdrehen.

Nächster Tipp

Dann der Rest des Blatts: 7 · sign nach rechts, fern(size - 1, sign), 7 · sign zurück, und den Stiel zurück, zwei Stücke: size * 2.

3. Das Sierpiński-Dreieck

Wacław Sierpiński hat ein Dreieck beschrieben, das aus drei halb so großen Dreiecken besteht, von denen jedes wieder aus dreien besteht:

Wacław Sierpiński 1928: ein Mann mit hoher Stirn und runder Brille, in Anzug und Krawatte, ernst in die Kamera blickend.

Wacław Sierpiński (1882–1969), polnischer Mathematiker in Warschau, mit über 700 Aufsätzen und 50 Büchern. 1916 beschrieb er ein Quadrat, aus dem die Mitte fehlt, und aus jedem der acht Quadrate drumherum wieder die Mitte, ohne Ende: den Sierpinski-Teppich. Auch ein Dreieck aus Dreiecken trägt seinen Namen.

Ein Muster, das in jedem Ausschnitt wieder sich selbst enthält, heißt heute Fraktal. Dein Shader rechnet den Teppich mit einer Schleife aus vier Zeilen.

Foto: unbekannt, 1928, gemeinfrei, zugeschnitten (Wikimedia Commons)

Aufgabe 6Das Sierpiński-DreieckKnobelei

Schreib sierpinski(size, depth) für das Dreieck aus dem Bild oben, mit Seiten der Länge size. Danach steht die Schildkröte wieder, wo sie angefangen hat, und schaut wie vorher.

forward 100back 100left 90right 90
Tipp

Die Stufe 0 ist das Dreieck von ganz am Anfang, mit size statt 150.

Nächster Tipp

Jede andere Stufe besteht aus drei Dreiecken der Stufe darunter, halb so groß: sierpinski(size / 2, depth - 1), links unten, rechts unten und oben. In Ruby size / 2.0.

Nächster Tipp

Zwischen ihnen läuft die Schildkröte: die halbe Seite nach rechts für das zweite; zurück und die halbe linke Seite hinauf (60 nach links, vorwärts, 60 nach rechts) für das dritte; dann denselben Weg zurück.

Aufgabe 6Das Sierpiński-DreieckKnobelei

Schreib sierpinski(size, depth) für das Dreieck aus dem Bild oben, mit Seiten der Länge size. Danach steht die Schildkröte wieder, wo sie angefangen hat, und schaut wie vorher.

forward(100)back(100)left(90)right(90)
Tipp

Die Stufe 0 ist das Dreieck von ganz am Anfang, mit size statt 150.

Nächster Tipp

Jede andere Stufe besteht aus drei Dreiecken der Stufe darunter, halb so groß: sierpinski(size / 2, depth - 1), links unten, rechts unten und oben. In Ruby size / 2.0.

Nächster Tipp

Zwischen ihnen läuft die Schildkröte: die halbe Seite nach rechts für das zweite; zurück und die halbe linke Seite hinauf (60 nach links, vorwärts, 60 nach rechts) für das dritte; dann denselben Weg zurück.

Aufgabe 6Das Sierpiński-DreieckKnobelei

Schreib sierpinski(size, depth) für das Dreieck aus dem Bild oben, mit Seiten der Länge size. Danach steht die Schildkröte wieder, wo sie angefangen hat, und schaut wie vorher.

forward(100)back(100)left(90)right(90)
Tipp

Die Stufe 0 ist das Dreieck von ganz am Anfang, mit size statt 150.

Nächster Tipp

Jede andere Stufe besteht aus drei Dreiecken der Stufe darunter, halb so groß: sierpinski(size / 2, depth - 1), links unten, rechts unten und oben. In Ruby size / 2.0.

Nächster Tipp

Zwischen ihnen läuft die Schildkröte: die halbe Seite nach rechts für das zweite; zurück und die halbe linke Seite hinauf (60 nach links, vorwärts, 60 nach rechts) für das dritte; dann denselben Weg zurück.

4. Die Koch-Kurve

Helge von Koch hat 1904 eine Kurve beschrieben, die aus vier Kurven mit einem Drittel der Länge besteht. Je höher die Stufe, desto feiner die Zacken; ein Stück von ihr sieht aus wie die ganze Kurve.

Aufgabe 7Die Koch-KurveKnobelei

Schreib koch(size, depth) für die Koch-Kurve aus dem Bild oben: size Schritte von links nach rechts, mit so vielen Stufen, wie depth sagt.

forward 100back 100left 90right 90
Tipp

Die Stufe 0 ist eine gerade Linie: forward(size), und fertig.

Nächster Tipp

Jede andere Stufe besteht aus vier Kurven der Stufe darunter, jede ein Drittel so lang: viermal koch(size / 3, depth - 1).

Nächster Tipp

Zwischen den vier Kurven: 60 Grad nach links, 120 nach rechts, 60 nach links, so wie die Zacke in der Stufe 1.

Aufgabe 7Die Koch-KurveKnobelei

Schreib koch(size, depth) für die Koch-Kurve aus dem Bild oben: size Schritte von links nach rechts, mit so vielen Stufen, wie depth sagt.

forward(100)back(100)left(90)right(90)
Tipp

Die Stufe 0 ist eine gerade Linie: forward(size), und fertig.

Nächster Tipp

Jede andere Stufe besteht aus vier Kurven der Stufe darunter, jede ein Drittel so lang: viermal koch(size / 3, depth - 1).

Nächster Tipp

Zwischen den vier Kurven: 60 Grad nach links, 120 nach rechts, 60 nach links, so wie die Zacke in der Stufe 1.

Aufgabe 7Die Koch-KurveKnobelei

Schreib koch(size, depth) für die Koch-Kurve aus dem Bild oben: size Schritte von links nach rechts, mit so vielen Stufen, wie depth sagt.

forward(100)back(100)left(90)right(90)
Tipp

Die Stufe 0 ist eine gerade Linie: forward(size), und fertig.

Nächster Tipp

Jede andere Stufe besteht aus vier Kurven der Stufe darunter, jede ein Drittel so lang: viermal koch(size / 3, depth - 1).

Nächster Tipp

Zwischen den vier Kurven: 60 Grad nach links, 120 nach rechts, 60 nach links, so wie die Zacke in der Stufe 1.

5. Die Hilbert-Kurve Extra

Ein Extra für Schnelle. Wer es auslässt, springt zu Dein eigener Baum.

David Hilbert hat 1891 eine Kurve beschrieben, die durch ein Quadrat läuft, ohne sich je zu kreuzen, und mit jeder Stufe jeder Stelle des Quadrats näherkommt. Ihre Stufe 1 ist ein U aus drei Linien. Jede höhere Stufe setzt vier Kurven der Stufe davor an die Ecken dieses U, verbunden durch seine drei Linien. Damit sie sich zu einer Linie verbinden, sind die erste und die letzte gespiegelt.

Aufgabe 8Die Hilbert-KurveKnobeleiExtra

Schreib hilbert(level, angle, size) für die Hilbert-Kurve aus dem Bild oben: jede graue Linie size lang, angle 90. Mit -90 ist die Kurve gespiegelt.

forward 100back 100left 90right 90
Tipp

Die Stufe 0 zeichnet nichts. Die Stufe 1 ist das U: angle nach rechts, vorwärts, angle nach links, vorwärts, angle nach links, vorwärts, angle nach rechts.

Nächster Tipp

Für jede andere Stufe kommen vier Kurven der Stufe darunter in dieses U: nach der ersten Drehung, nach der zweiten, nach der zweiten Linie und vor der letzten Drehung.

Nächster Tipp

Die erste und die letzte sind gespiegelt: Sie bekommen -angle, die beiden mittleren angle.

Aufgabe 8Die Hilbert-KurveKnobeleiExtra

Schreib hilbert(level, angle, size) für die Hilbert-Kurve aus dem Bild oben: jede graue Linie size lang, angle 90. Mit -90 ist die Kurve gespiegelt.

forward(100)back(100)left(90)right(90)
Tipp

Die Stufe 0 zeichnet nichts. Die Stufe 1 ist das U: angle nach rechts, vorwärts, angle nach links, vorwärts, angle nach links, vorwärts, angle nach rechts.

Nächster Tipp

Für jede andere Stufe kommen vier Kurven der Stufe darunter in dieses U: nach der ersten Drehung, nach der zweiten, nach der zweiten Linie und vor der letzten Drehung.

Nächster Tipp

Die erste und die letzte sind gespiegelt: Sie bekommen -angle, die beiden mittleren angle.

Aufgabe 8Die Hilbert-KurveKnobeleiExtra

Schreib hilbert(level, angle, size) für die Hilbert-Kurve aus dem Bild oben: jede graue Linie size lang, angle 90. Mit -90 ist die Kurve gespiegelt.

forward(100)back(100)left(90)right(90)
Tipp

Die Stufe 0 zeichnet nichts. Die Stufe 1 ist das U: angle nach rechts, vorwärts, angle nach links, vorwärts, angle nach links, vorwärts, angle nach rechts.

Nächster Tipp

Für jede andere Stufe kommen vier Kurven der Stufe darunter in dieses U: nach der ersten Drehung, nach der zweiten, nach der zweiten Linie und vor der letzten Drehung.

Nächster Tipp

Die erste und die letzte sind gespiegelt: Sie bekommen -angle, die beiden mittleren angle.

6. Dein eigener Baum

Zum Schluss ein Baum, den sich niemand vorher ausgedacht hat. Geprüft wird hier nichts: Jeder Baum ist richtig.

Aufgabe 9Dein eigener BaumÜbung

Lass deinen eigenen Baum wachsen, wie er dir gefällt: schief, hängend, mit drei Ästen statt zwei, im Herbst rot und gelb. Wer mag, lässt den Zufall mitbestimmen.

forward 100back 100left 90right 90pen_uppen_downwidth 4
Tipp

Fang mit deinem schönen Baum an und ändere eine Zahl nach der anderen: Winkel, Längen, Farben, die Tiefe.

Nächster Tipp

Ein dritter Ast in der Mitte: ein weiterer Aufruf von tree zwischen den beiden, ohne Drehung.

Aufgabe 9Dein eigener BaumÜbung

Lass deinen eigenen Baum wachsen, wie er dir gefällt: schief, hängend, mit drei Ästen statt zwei, im Herbst rot und gelb. Wer mag, lässt den Zufall mitbestimmen.

forward(100)back(100)left(90)right(90)pen_up()pen_down()width(4)
Tipp

Fang mit deinem schönen Baum an und ändere eine Zahl nach der anderen: Winkel, Längen, Farben, die Tiefe.

Nächster Tipp

Ein dritter Ast in der Mitte: ein weiterer Aufruf von tree zwischen den beiden, ohne Drehung.

Aufgabe 9Dein eigener BaumÜbung

Lass deinen eigenen Baum wachsen, wie er dir gefällt: schief, hängend, mit drei Ästen statt zwei, im Herbst rot und gelb. Wer mag, lässt den Zufall mitbestimmen.

forward(100)back(100)left(90)right(90)penUp()penDown()width(4)
Tipp

Fang mit deinem schönen Baum an und ändere eine Zahl nach der anderen: Winkel, Längen, Farben, die Tiefe.

Nächster Tipp

Ein dritter Ast in der Mitte: ein weiterer Aufruf von tree zwischen den beiden, ohne Drehung.

Ausprobieren: Lass die Winkel und die Längen bei jedem Ast ein wenig vom Zufall abhängen: random(15, 35) ist eine zufällige Zahl von 15 bis 35, random(0.6, 0.8) eine Kommazahl dazwischen. Lass den Baum dann mehrmals wachsen. Achte darauf, ob er so eher wie ein echter Baum aussieht und welche Tiefe dafür reicht.