rekursive Grafiken Reklursive Grafiken
Beispiele für Grafische Rekursionen Reklursive Grafiken
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
Zustände nach diversen Klicks Zur Erinnerung: Die API der Turtle zeigt alle ihre Methoden Reklursive Grafiken
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
public void zeichne() { double l = 100; t1.jumpTo(0,150); 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
Die Turtle erweiteren Wir bauen eine Klasse RekursionsTurtle, die von Turtle erbt. import turtle.*; public class RekursionsTurtle extends Turtle{ public RekursionsTurtle(TurtleWindow tWin){ super(tWin); } public void zeichneBinaerBaum(double l){ if (l>1){ forward(-l); right(90); forward(l); left(90); zeichneBinaerBaum(l/2); right(90); forward(-2*l); left(90); right(90); forward(l); left(90); forward(l); Merke: Die erweiterte Klasse muss im gleichen Ordner liegen, in dem die Klasse liegt, die sie benutzt, es sei denn ein Classpath ist extra gesetzt Reklursive Grafiken
public class Binaerbaum extends TurtleFrame { import turtle.*; import java.awt.*; public class Binaerbaum extends TurtleFrame { RekursionsTurtle t1; public Binaerbaum(String title) { super(title); t1 = new RekursionsTurtle(tWin); } public void zeichne() { double l = 100; t1.jumpTo(0,150); t1.zeichneBinaerBaum(l); public static void main (String[] args) { new Binaerbaum("Binärbaum"); Binärbaum.java Reklursive Grafiken
Sierpinski-Dreieck Reklursive Grafiken
public void zeichneSierpinski(double l){ if (l>1) { forward(l); Siepinski-Dreieck public void zeichneSierpinski(double l){ if (l>1) { forward(l); zeichneSierpinski(l/2); forward(-l); right(120); forward(l); left(120); left(60); forward(l); left(60); forward(l); right(120); right(60); forward(l); left(60); } Reklursive Grafiken