<style type="text/css"> 
b.green{color:DarkGreen;}
b.red  {color:#880000;}
b.code {background:#f9edd4;}
p.code {background:#f9edd4;}
body   {background:#e2fbe4;}
</style><body><pre>
<h3>Kurs: 06 Eigene Befehle</h3>

Script 1: Der Recorder.
Script 2: Punkte definieren.
Script 3: Polygon-Objekt definieren.
Script 4: Polygon-Objekte zeichnen.
Script 5: Beispiel mit sin Funktion.

<u>Erklärungen zum Script 1</u>

* <b class="code">t.recDraw("Name");</b>
  <i>"Name": Recorder einschalten. Alle folgenden Befehle
  werden als function Name() { ... } in die
  Befehlsliste 'Eigene Befehle' eingetragen.
  "":  Recorder auschalten.</i>

* <b class="code">t.draw("Name");</b>
  <i>Wiedergabe mit t.draw("Name");</i>

* <b class="code">t.msgDraw("Name");</b>
  <i>Daten zum Befehl "Name" anzeigen.</i>

<p class="code"><code>
ScriptBegin
var Grafik="Script Turtle";

function init()
{ t.setBrush("LightBlue");
  t.setPage();
  t.clrMsg();
} 

function draw()
{ t.setPen("red", 1.5);

  t.recDraw("Zufall");     // Recorder starten
  
  // Zeichnung durchführen
  t.goTo( t.rnd(50), t.rnd(30));
  for (i=0; i&lt;5; i++)
  { t.turn( t.rndW(5,120)); 
    t.move( t.rnd(30)); 
  }
 
  t.recDraw("");          // Recorder stoppen
  
  t.msgDraw("Zufall");    // Aufzeichnung ausgeben
  
  // Die Funktion kann dann direkt 
  // in ein Script kopiert werden!   
}
ScriptEnd#1 </code></p>
__________________________________________

Script 2: Punkte definieren.

<u>Erklärungen zum Script</u>

* <b class="code">t.defPoint("Name");</b>
  <i>Turtleposition Last() als Punkt "Name" merken.</i>

* <b class="code">t.moveTo("Name");</b>
  <i>Turtle auf Punkt "Name" bewegen.
  Erster Punkt bei einem Polygon.</i>

* <b class="code">t.draw("Name");</b>
  <i>Punkt "Name" zeichnen.
  draw() verwendet immer eine Schiebung auf
  (lastX(), lastY()) und  Drehung mit lastW(). </i>
 
* <b class="code">t.msgDraw("");</b>
  <i>Alle Befehle aus 'Eigene Befehle' anzeigen.</i>

<p class="code"><code>ScriptBegin  //Script 2
var Grafik="Script Turtle";

function init() //Initialisierungen
{ t.setBrush("LightBlue");
  t.setPage();
} 

function draw() //Zeichenbefehle
{ t.drawKoordSystem();
  t.drawRaster();
   
  // Punkte definieren
  t.goTo(20,30); t.defPoint("A");
  t.turnTo(30); t.move(50); t.defPoint("B");

  // Punktmarken zeichnen
  t.goTo(0,0); t.draw("A"); t.draw("B");

  // Punkte verwenden
  t.setNoStyle();   t.moveTo("A");
  t.setPen("red",0.7);t.moveTo("B");

  // Vektor AB bestimmen
  t.defVector("Schiebvektor","A","B");
  t.setPen("green",1);
  t.goTo(0,0); t.moveTo("Schiebvektor");

  // Befehle anzeigen
  t.msgDraw(); t.msgDraw("A");
}
ScriptEnd#2</code></p>
__________________________________________

Script 3: Polygon-Objekt definieren.


<u>Erklärungen zum Script</u>

* <b class="code">t.defDraw("Name", mode=0);</b>
  <i>mode=0: Befehl "Name" neu anlegen. Turtledaten speichern.
  mode=1: Befehl "Name" erweitern.
  mode=2: Befehl "Name" erweitern. Das Turtlepolygon
          wird vor dem Speichern am ersten
          Befehlspolygon geklippt.</i>

* <b class="code">t.draw("Name");</b>
  <i>defDraw-Befehle verwenden immer zuerst die 
  Abbildungsmatix drawMatrix. Danach eine Schiebung auf
  (lastX(), lastY()) und eine Drehung mit lastW().
  Position und Richtung der Turtle werden nicht gändert.
  
  drawMatrix: siehe Kurs Abbildungen.</i>
 

<p class="code"><code>ScriptBegin //Script 3
var Grafik="Script Turtle";

function init() //Initialisierungen
{ t.setBrush("LightBlue");
  t.setPage();
} 

function draw() //Zeichenbefehle
{ t.drawKoordSystem();
  t.drawRaster();
  t.setPen("white", 2);

  // 1. Polygon definieren
  t.beginPolygon();
  t.goTo(-80,10); t.turn(30); t.move(40); t.turn(112);
  t.move(60); t.turn(132); t.move(35);
  t.movePolygon(0,0);
  t.endPolygon();

  // Figur Umriss
  t.setPen("black",1)
  t.setBrush("red");
  t.defDraw("Figur");
  t.goTo(0,0); t.turnTo(0); t.draw("Figur");

//return;            // Zum Testen return's einfügen!

  // Figur + grünes Rechteck
  t.goTo(-20,0); t.turnTo(10); t.rectPolygon(50,15,1);
  t.setPen("black",1)
  t.setBrush("green");
  t.defDraw("Figur",2);

  // Figur + blaues Rechteck
  t.goTo(-20,25); t.turnTo(20); t.rectPolygon(40,10,1);
  t.setPen("black",1)
  t.setBrush("blue");
  t.defDraw("Figur",1);

  t.msgDraw("Figur");
 
  // Figur verenden
  t.goTo(70,0); t.turnTo(0); t.draw("Figur");  
  t.goTo(80,-60); t.turnTo(70); t.draw("Figur");
  t.goTo(-10,-50); t.turnTo(120); t.draw("Figur");
}
ScriptEnd#3</code></p>

__________________________________________


Script 4: Polygon-Objekte zeichnen.

<u>Erklärungen zum Script</u>

* <b class="code">t.shift("Name", t=1);</b>
  <i>Ein moveTo auf
  ( lastX(), lastY() ) + t*(Vektor "Name"))
  mit Drehung um lastW().</i>

* <b class="code">t.clrDraw("Name");</b> <i>Befehl "Name" löschen.</i>
* <b class="code">t.clrDraw();</b>       <i>Datenbank löschen.</i>
* <b class="code">t.clrDraw("0");</b>    <i>Datenbank bereinigen.</i>

<p class="code"><code>ScriptBegin
var Grafik="Script Turtle";

function init() //Initialisierungen
{ t.setBrush("LightBlue");
  t.setPage();
  t.clrDraw("0");
  t.clrMsg();
  t.msgDraw();

  if (!t.exists("Schiebvektor")) t.msg(
"\"Schiebvektor\" nicht definiert. \
 Script 2 klicken!","blue");

  if (!t.exists("Figur")) t.msg(
"\"Figur\" nicht definiert.\
 Script 3 klicken!","blue");
} 


function draw() //Zeichenbefehle
{ t.drawKoordSystem();
  t.drawRaster();
 
  t.setNoStyle();
  t.goTo(-100,-70); t.turnTo(0); t.draw("Figur"); 
  t.shift("Schiebvektor");
  t.draw("Figur");
  t.shift("Schiebvektor");
  t.draw("Figur");
  t.shift("Schiebvektor",2);
  t.draw("Figur");
}
ScriptEnd#4</code></p>

__________________________________________


Script 5: Beispiel mit sin Funktion.

<u>Erklärungen zum Script</u>

  <i>Beispiel mit "Script Funktionen".</i>

<p class="code"><code>ScriptBegin
var Grafik = "Script Funktionen"

var dt=0.04;  // Increment
var min=2.5;  // Startwert für t
var max=47.0; // Endwert für t

var v=45;
function sin(x) { return v*Math.sin(x/8);}
function cos(x) { return v*Math.cos(x/8);}


function init()
{     
  t.beginPolygon();
  t.drawGraf("sin");
  t.turnTo(-90); t.move(60);
  t.turnTo(-90); t.moveTo(0,t.lastY());
  t.goTo(0,0);
  t.endPolygon();
  t.defDraw("Welle");

  t.beginPolygon();
  t.drawGraf("cos");
  t.endPolygon(0);
  t.setPen("blue",0.8);  
  t.setBrush("gold");  
  t.defDraw("Welle",false); 
  
  t.setPen("white"); 
  t.setPen("black",0.1);  
}


function draw()
{ t.drawKoordSystem();
  t.drawRaster();

  t.msgDraw(); t.msgDraw("Welle");

  t.goTo(-120,40);
  t.draw("Welle");

  t.goTo(10,-50); t.turnTo(45);
  t.draw("Welle");
}
ScriptEnd#4</code></p>
