Turtlegrafik
Turtlegrafik
Realisierung einer rudimentären Turtlegrafik mit geogebra auf Grundlage eines Objektes Schildkroete.
- Vorsicht: Jeder Schritt der Turtle wird als einzelner Punkt und als Strecke abgespeichert. Bereits die 20 Schritte in dem unten angegebenen Demo benötigen bei einem modernen Rechner einige Sekunden Rechenzeit. D.h. in dieser Variante sind Anwerndungen wie rekursive Fraktale nicht möglich (siehe dazu Zum-Wiki: Turtlegrafik).
Anleitung
- Die Turtlegrafik benötigt ein leeres Worksheet mit dem Namen test_worksheet.ggb (vgl. Applet-Aufruf)
- t= new Schildkroete (1,1,90); legt ein neues Objekt Schildköte mit dem Namen t an. Anfangskoordinaten (1,1). Blickwinkel 90°
- t.vor(2); t geht um 2 Einheiten nach vorne
- t.drehe(30); t dreht sich um 30° im mathematischen Uhrzeigersinn.
Turtleobjekt und Demo
Download
Screenshot zum Demo
Quelltext zum Demo
<input type="button" value="Starte" onclick="starte();">
<applet name="ggbApplet" code="geogebra.GeoGebraApplet" codebase="./" archive="geogebra.jar" width="892" height="498">
<param name="filename" value="test_worksheet.ggb">
<param name="framePossible" value="false">
Sorry, the GeoGebra Applet could not be started. Please make sure that Java 1.4.2 (or later) is installed and activated. (<a href="http://java.sun.com/getjava">click here to install Java now</a>)
</applet>
<script language="JavaScript">
var applet = document.ggbApplet;
function starte () {
t= new Schildkroete (1,1,90)
for (i=0;i<20;i++){
t.vor(i/10);
t.drehe(30);
}
}
// ---------------------------------------------------------------------
// TURTLE Grafik
// ---------------------------------------------------------------------
//
// Konstruktor: new Schildkroete()
// Konstruktor: new Schildkroete(x,y,winkel)
//
// Die Eigenschaften zur Schildkroete
// x : x-Koordinate
// y : y-Koordinate
// winkel : zahl - in Grad (NICHT Bogenmaß!)
// Stiftan : boolean - false falls Bewegung ohne Linie
// Die Methoden zur Schildkröte
// vor(länge) - geht länge in Pixeln vor
// this.drehe (grad) dreht um grad gegen den Uhrzeihersinn
// this.zumStart (x,y) - setzt die aktuellen Koordinaten
// this.setRichtung (grad) - setzt den aktuellen Winkel auf grad
// this.hebeStift() - setzt Stiftan auf false
// this.senkeStift() - setzt Stiftan auf true
turtlezaehler=0;
schritte=0;
function Schildkroete (x,y,winkel) {
// Konstruktor: Legt Anfangswerte fest
if (x) this.x=x
else this.x=0;
if (y) this.y=y
else this.y=0;
applet.evalCommand("A"+schritte+" = ("+x+","+y+")");
if (winkel) this.winkel=winkel
else this.winkel=0;
this.Stiftan=true;
// Die Methoden zur Schildkröte
this.vor = schildkroetevor;
this.drehe = schildkroetedreh;
this.zumStart = schildkroetezumstart;
this.setRichtung= schildkroetesetRichtung;
this.hebeStift = schildkroetehebeStift;
this.senkeStift = schildkroetesenkeStift;
//Es folgen die Funktionen, die als Methoden aufgerufen werden.
function schildkroetevor (a) {
gradwinkel=this.winkel*Math.PI/180;
x2=1*this.x+Math.cos(gradwinkel)*a;
y2=1*this.y+Math.sin(gradwinkel)*a;
if (this.Stiftan) {
schritte++;
applet.evalCommand("A"+schritte+" = ("+x2+","+y2+")");
applet.evalCommand("Strecke[A"+schritte+", A"+(schritte-1)+"]");
}
this.x=x2;
this.y=y2;
}
function schildkroetedreh (w) {
this.winkel=this.winkel*1+w;
}
function schildkroetesetRichtung (w) {
this.winkel=w;
}
function schildkroetezumstart (x,y) {
this.x=x
this.y=y
}
function schildkroetehebeStift () {
this.Stiftan=false;
}
function schildkroetesenkeStift () {
this.Stiftan=true;
}
} //Ende Turtle Grafik
</script>
Weblinks