rekursive Grafiken © 2004 Pohlig Turtle © 2003 Taulien Reklursive Grafiken 1 © 2004 Pohlig Turtle © 2003 Taulien Beispiele für Grafische Rekursionen Reklursive Grafiken 2 © 2004 Pohlig Turtle © 2003 Taulien Zur Erinnerung: Wie zeichnen wir mit der Turtle import turtle.*; import java.awt.*; public class Quadrat1 extends TurtleFrame { Turtle t1; public Quadrat1(String title) { super(title); t1 = new Turtle(tWin); } public void zeichne() { t1.forward(100); t1.right(90); } } public static void main (String[] args) { new Quadrat1("Quadrat1"); } Reklursive Grafiken 3 © 2004 Pohlig Turtle © 2003 Taulien Zustände nach diversen Klicks Zur Erinnerung: Die API der Turtle zeigt alle ihre Methoden Reklursive Grafiken 4 © 2004 Pohlig Turtle © 2003 Taulien Die Turtle zeichnet ein T auf dem Kopf public void zeichne() { t1.jumpTo(0,150); t1.forward(-100); t1.right(90); t1.forward(100); t1.forward(-200); } Reklursive Grafiken 5 © 2004 Pohlig Turtle © 2003 Taulien BinärBaum public void zeichne() { double l = 100; t1.jumpTo(0,150); t1.zeichneBinaerBaum(l); } Die Turtle muss dazulernen. – Wir haben aber keinen Zugriff auf die Klasse Turtle im Paket turtle. Reklursive Grafiken 6 © 2004 Pohlig Turtle © 2003 Taulien Die Turtle erweiteren Wir bauen eine Klasse RekursionsTurtle, die von Turtle erbt. import turtle.*; public class RekursionsTurtle extends Turtle{ public RekursionsTurtle(TurtleWindow tWin){ Merke: super(tWin); } Die erweiterte Klasse muss l){ im public void zeichneBinaerBaum(double gleichen Ordner liegen, in dem die if (l>1){ forward(-l); Klasse liegt, die sie benutzt, es sei right(90); forward(l); left(90); denn ein Classpath ist extra gesetzt zeichneBinaerBaum(l/2); right(90); forward(-2*l); left(90); zeichneBinaerBaum(l/2); right(90); forward(l); left(90); forward(l); } } } Reklursive Grafiken 7 © 2004 Pohlig Turtle © 2003 Taulien import turtle.*; import java.awt.*; public class Binaerbaum extends TurtleFrame { RekursionsTurtle t1; public Binaerbaum(String title) { super(title); t1 = new RekursionsTurtle(tWin); } Binärbaum.java public void zeichne() { double l = 100; t1.jumpTo(0,150); t1.zeichneBinaerBaum(l); } } public static void main (String[] args) { new Binaerbaum("Binärbaum"); } Reklursive Grafiken 8 © 2004 Pohlig Turtle © 2003 Taulien Sierpinski-Dreieck Reklursive Grafiken 9 © 2004 Pohlig Turtle © 2003 Taulien Siepinski-Dreieck public void zeichneSierpinski(double l){ if (l>1) { forward(l); zeichneSierpinski(l/2); forward(-l); right(120); forward(l); left(120); zeichneSierpinski(l/2); left(60); forward(l); left(60); forward(l); right(120); zeichneSierpinski(l/2); right(60); forward(l); left(60); } } Reklursive Grafiken 10