GeoGebra

Turtlegrafik

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

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

Demo Turtlegrafik

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