Manual

Was ist GeoScript?

GeoScript ist eine Programmiersprache, die geometrische Darstellungen zu Demonstrations- und Ausbildungszwecken produziert. Man kann damit statische und bewegte geometrische Konstruktionen programmieren, mit oder ohne Intervention des Benutzers. Programm-Scripts werden nicht zu Anwendungsprogrammen kompiliert, sondern werden vom Interpretierprogramm "GeoScript.exe" interpretiert.
Das Ziel von GeoScript ist nicht Professionalismus, sondern Einfachheit. Es gibt kompliziertere und professionellere Geometrieprogramme, aber deren Anwendung ist entsprechend schwieriger zu erlernen. GeoScript möchte einfach solche Konstruktionen simulieren, die mit Lineal und Zirkel ausgeführt werden können (und gelegentlich einem Transporteur), in einer Art und Weise, die auch von Lehrern und Schülern mit wenig Programmiererfahrung gelernt und angewandt werden kann.
(Trotzdem würde ich gerne noch einige Programmfunktionen hinzufügen, falls ich einmal Zeit für eine Aktualisation finde.)

GeoScript ist gratis und darf weiterverbreitet werden; aber es ist nicht erlaubt, irgendeine Art von Bezahlung zu verlangen für die Weitergabe oder den Gebrauch dieses Programms.

Was is ein GeoScript-Programm?

Programm-Scripts für GeoScript sind einfache Textdateien ohne Format, und ihr Name kann irgendeine Extension haben. Somit kannst Du GeoScript-Programme mit jedem Texteditor schreiben, der Dokumente als unformatierten Text speichert (wie z.B. der "Text-Editor" von Windows). Formatierte Textdokumente (wie z.B. *.rtf, *.doc, *.htm, usw.) werden jedoch fvom GeoScript-Interpretierer nicht erkannt.

GeoScript ausführen (für Windows)

Wenn Du "GeoScript.exe" direkt öffnest, wird ein Dialog "Datei öffnen" gezeigt, wo Du ein Script auswählen kannst, das ausgeführt werden soll.
Von der Befehlszeile aus kannst Du "GeoScript [Dateiname]" schreiben, und das Script [Dateiname] wird ausgeführt. Beachte, dass Du die Datei-Extension angeben MUSST (z.B. ".txt", wenn Du das Script als Textdatei gespeichert hast), da keine spezielle Extension für GeoScript-Programme definiert ist.
Du kannst auch eine Script-Datei auf das Icon von "GeoScript" ziehen, und das Script wird ausgeführt.
Du kannst auch eine spezifische Extension für GeoScript-Programme definieren (z.B. .geo), und diese Extension mit "GeoScript.exe" verknüpfen.

GeoScript lernen

Wenn Du das komplette GeoScript-Paket erhalten hast, findest Du darin einen Lehrgang (tutorial.htm) mit Beispiel-Scripts (tutorial*.geo), und auch mehrere zusätzliche Beispielprogramme, die Dir den Start erleichtern werden.

GeoScript-Website


Übersicht über die GeoScript-Programmiersprache:
Datentypen - Benutzeroberfläche - Syntax - Fehlermeldungen

Übersicht über die Programmbefehle:

Initialisierungsbefehle:
POINT
LINE
LINEPOLAR
CIRCLE

Konstruktionsbefehle:
MIDDLE
ADVANCETO, ADVANCEON
LINE
LINEPOLAR
STARTLINE
MIDLINE
BISECTOR
TANGENT
CROSS
CIRCLEND
CIRCLE
ARC
COPY
MOVECIRCLE
REVERT
ORDERLINES

Markierungsbefehle:
MARKPOINT
MARKLINE
MARKANGLE
MARKNUMBERLINE
MARKNUMBERANGLE
FILL(TRIANGLE, CIRCLE)

Subroutinen und Programmflussbefehle:
CONSTRUCTION
ANIMATION
INTERACTION
REPEAT
CALL / CONSTRUCT / ANIMATE / INTERACT
Modes: FAST, PACE, SLOW / TOOLS
MENU / MENUITEM / ENDMENU / REPEATMENU
STEP (ALONG)
TRACE
CLICKABLE (ALONG)
WAIT(ALWAYS)

Bildschirmbefehle:
SCREEN
WINDOW
TITLE
TEXTWINDOW, TWINDOW
TEXT
CLS

Andere Befehle:
(FRAME)SPEED
(TOOL)DEFAULTS


Datentypen:

Da GeoScript ein Geometrieprogramm ist, benutzt es geometrische Objekte als Datenvariablen. Es gibt drei Datentypen: Punkte, Geraden und Kreise. Diese Objekte haben zwei Arten von Eigenschaften: Positions-Eigenschaften und graphische Eigenschaften. Die Positions-Eigenschaften geben an, wo sich ein Objekt im Koordinatensystem befindet, und sind obligatorisch. Die graphischen Eigenschaften geben an, wie ein Objekt auf dem Bildschirm dargestellt wird, und sind fakultativ. Wenn Du einem Objekt keine graphischen Eigenschaften gibst, erhält es einfach die vorgegebenen Eigenschaften.

Die folgende Tabelle gibt eine Übersicht über die verfügbaren Eigenschaften von Objekten:

Datentyp Positions-Eigenschaften Graphische Eigenschaften
Punkt x, y Farbe, Breite, Stil
Gerade x, y (Ursprung)
dx, dy (Vektor-Richtung)
Farbe, Breite, Muster
Kreis x, y (Mittelpunkt), Radius
Anfang, Ende (Anfangs- und Endwinkel des Bogens)
Farbe, Breite

Eine Kreis-Variable kann auch ein Teilkreis sein (ein Bogen), von dem der Anfangs- und Endwinkel angegeben wird. Wenn Anfang und Ende beide Null sind, ist es ein voller Kreis. (Das ist die vorgegebene Eigenschaft.)

Stil (für Punkte) kann die folgenden Werte annehmen:

0 = Ein feines Kreuz von der Ausdehnung Breite. Das ist der vorgegebene Wert.
1 = Ein einziger Pixel.
2 = Ein ausgefüllter Kreis vom Durchmesser Breite.
3 = Ein leerer Kreis vom Durchmesser Breite.
4 = Ein ausgefülltes Quadrat mit der Seitenlänge Breite.
5 = Ein leeres Quadrat mit der Seitenlänge Breite.
8 = Eine Pfeilspitze nach links.
9 = Eine Pfeilspitze nach rechts.
10 = Eine Pfeilspitze nach oben.
11 = Eine Pfeilspitze nach unten.

Muster (für Geraden) ist ein Wert von 16 Bits, der angibt, welche Pixel gezeichnet bzw. nicht gezeichnet werden sollen in einem wiederholten Muster von 16 Pixels. Du kannst diesen Wert als hexadezimale Zahl im BASIC-Stil angeben (mit einem vorgesetzten &H), oder als Binärzahl (mit vorgesetztem &B). So ist z.B. &HFFFF (&B1111111111111111) eine voll ausgezogene Linie. &HFF00 (&B1111111100000000) zeichnet eine gleichmässig gestrichelte Linie (- - - - -). Ein Wert von 1 zeichnet eine dünn punktierte Linie; ein Wert von 0 zeichnet gar nichts.

Farben können in einer der folgenden Formen angegeben werden:
- Ein hexadezimaler RGB-Wert in der Form &HRRGGBB. (Für Farben - aber nur für Farben - sind auch die Formen 0xRRGGBB und 0RRGGBBh erlaubt.)
- Drei Werte (für Rot, Grün und Blau) von 0 bis 255, in Klammern: (RR, GG, BB)
So würde z.B. ein volles Rot als &HFF0000 dargestellt, oder als (255, 0, 0).

- Vielleicht fragst Du, warum es in GeoScript keine anderen geometrischen Elemente gibt wie Ellipsen, Parabeln, Sinuskurven, Bézierkurven, usw. Aber diese sind keine Elemente der klassischen Geometrie im eigentlichen Sinne, da sie nicht direkt mit Zirkel und Lineal konstruiert werden können. Deshalb beschloss ich, sie nicht in dieses Programm aufzunehmen. Solche Kurven können aber in GeoScript Punt für Punkt konstruiert werden mit Hilfe einer ANIMATION-Subroutine und des Befehls TRACE. (Siehe die Beispiel-Scripts.)

Ungültige Daten:

Es kann vorkommen, dass gewisse Befehle kein gültiges Resultat ergeben. (Z.B. wenn Du versuchst, den Schnittpunkt zweier paralleler Geraden zu konstruieren.) In solchen Fällen erzeugt das Programm keinen Fehler; aber das entsprechende Objekt wird als ungültig erklärt, und alle folgenden Operationen mit diesem Objekt als Parameter werden ihrerseits ungültige Ergebnisse erzeugen (solange, bis die Variable wieder mit einem gültigen Wert initialisiert wird).


Benutzeroberfläche:

In einem GeoScript-Fenster nimmt anfangs die geometrische Konstruktion den ganzen Raum ein, ausgenommen die untersten 20 Pixel, wo drei Knöpfe gezeigt werden: "Pause / Weiter", "Wiederholen", und "Beenden". Diese Knöpfe tun ganz einfach, was darauf steht: Wenn der Benutzer auf den "Pause"-Knopf klickt, bleibt die gegenwärtige Konstruktion stehen, und die Aufschrift auf dem Knopf ändert auf "Weiter". Wenn auf "Weiter" geklickt wird, läuft das Programm weiter. - Der "Wiederholen"-Knopf wiederholt die aktuelle Subroutine von Anfang an. - Der "Beenden"-Knopf verlässt die aktuelle Subroutine. Wenn dieser Knopf wiederholt geklickt wird, wird schliesslich das ganze Programm beendet.
Die folgenden Tasten entsprechen diesen Knöpfen:
"Pause / Weiter" = [Enter]
"Wiederholen" = "R" oder [PageUp]
"Beenden" = [Esc].

Wenn irgendeine andere Taste gedrückt wird ausser diesen, oder mit der Maus irgendwo anders geklickt wird als auf den Knöpfen, dann hat das einen "Schnellauf-Effekt": Die Wartezeiten im Modus PACE oder SLOW werden übersprungen.

Dein Script kann den Bereich der geometrischen Konstruktion im Fenster begrenzen mit dem Befehl WINDOW, und kann Textausgabe-Bereiche definieren mit dem Befehl TEXTWINDOW. Du kannst auch den Fenstertitel ändern mit dem Befehl TITLE.


Syntax:

Gross- und Kleinbuchstaben

GeoScript-Befehle unterscheiden nicht zwischen Gross- und Kleinschreibung. Du kannst also schreiben POINT, point, Point, oder pOiNt, usw, wie Du willst.

Andererseits werden die Namen von Variabeln je nach Gross- oder Kleinschreibung unterschiedlich behandelt. Die Variable a ist also nicht dasselbe wie die Variable A. Das dient dem Zweck, die übliche Gewohnheit zuzulassen, Punkte mit Grossbuchstaben und Geraden mit Kleinbuchstaben zu bezeichnen.

Vorgegebene Parameter:

Viele Befehle haben wahlweise Parameter. Wenn sie weggelassen werden, wird GeoScript ihnen automatisch gewisse vorgegebene Werte zuweisen. (Einige dieser vorgegebenen Werte können mit dem Befehl DEFAULTS geändert werden.) - Du kannst auch einen Wert von -1 oder das Wort DEFAULT angeben, um den vorgegebenen Wert zu bezeichnen. Ein Beispiel: POINT A, 300, 250, -1, DEFAULT, 20 initialisiert einen Punkt mit dem vorgegebenen Stil, der vorgegebenen Farbe, und der Breite 20.
Beachte, dass Du ausgelassene wahlweise Parameter nicht mit leeren Kommas angeben kannst wie z.B. in der Programmiersprache BASIC. Wenn Du im obigen Beispiel schreibst POINT A, 300, 250, , , 20 , dann wird die Zahl 20 als der vierte Parameter interpretiert, nicht der sechste. Du MUSST ausdrücklich -1 oder DEFAULT als Platzhalter angeben, wenn Du vorgegebene Parameter zwischen von Dir gewählten haben möchtest.

Trennzeichen:

Eine kurze Anmerkung zur Funktion des GeoScript-Parsers ist hier angebracht. Der Parser behandelt Leerzeichen, Kommas und Gleichheitszeichen = (und Kombinationen von diesen) unterschiedslos als Trennzeichen. Es macht also keinen Unterschied, ob Du schreibst a = LINE B, C oder a LINE B C oder sogar a,=LINE,= =, B =,,C .
Andererseits kannst Du Parameter nicht in Klammern einschliessen. Ein Befehl wie a = LINE (B, C) wird einen Fehler erzeugen. Klammern sind ausschliesslich für Farbangaben der Form (R, G, B) reserviert.

Wörtlicher Text (zur Ausgabe auf dem Bildschirm) muss in Anführungszeichen "" gesetzt werden, wie in den meisten Programmiersprachen.

Anmerkungen:
Jeder Ausdruck, der mit einem Zeichen mit einem ASCII-Code unter 65 beginnt, und der weder eine Zahl noch ein Trennzeichen ist, wird als ungültig verworfen (bzw. als Anmerkung behandelt); und ebenso alle Ausdrücke, die dem ungültigen Ausdruch auf derselben Linie folgen. Das bedeutet, dass Du Anmerkungen in Dein Script einschliessen kannst, beginnend mit irgendeinem dieser Zeichen: ! # $ % ' * + . / : ; < > ? @. Als Beispiel: Alle folgenden Linien werden als Anmerkungen interpretiert:

'  Das ist eine Anmerkung im Stil von BASIC.
// Das ist eine Anmerkung im Stil von C.
/* Das ist auch eine Anmerkung; aber sie wird NICHT als mehrzeilige Anmerkung interpretiert.
;  Das ist eine Anmerkung im Stil von Assembler.
a = LINE A, B !Das ist eine Anmerkung, die einem gültigen Befehl folgt.

Fehlermeldungen:

Wenn Du versuchst ein Script auszuführen, das Fehler enthält, kannst Du eine der folgenden Fehlermeldungen erhalten:

Fehler 10 = Typen stimmen nicht überein: Zuerst definiert als ..., jetzt benutzt als ...
Du hast eine Variable als einen bestimmten Datentyp benutzt (Punkt, Gerade oder Kreis), und sie dann in einem Kontext angewendet, der einen anderen Datentyp verlangt. Wenn ein Datentyp "Keiner" angegeben wird, dann bedeutet das, dass Du einen Variablennamen benutzt, der nie in einem Kontext angewendet wurde, der es erlauben würde, den Datentyp dieser Variable festzulegen.

11 = Zu viele Argumente / 12 = Zu wenige Argumente.
Du hast mehr, oder weniger, Argumente angegeben, als von dem entsprechenden Befehl verlangt werden.

13 = Syntaxfehler: kein Schlüsselwort in der Linie.
Jeder gültige Befehl in GeoScript enthält mindestens ein Schlüsselwort. Wenn keines da ist (und es handelt sich auch nicht um eine Anmerkung), dann ist die Linie ungültig und erzeugt diesen Fehler.

14 = Syntaxfehler: Schlüsselwort als Argument
Du versuchtest, ein reserviertes Wort als Variablennamen oder als Zahl zu benutzen.

16 = Anderer Syntaxfehler
Irgendein anderer falscher Gebrauch eines Befehls.

20 = Verschachtelte Subroutinen
Du versuchtest, eine neue Subroutine innerhalb einer anderen Subroutine zu definieren (d.h. es fehlt ein REPEAT-Befehl vor dem Beginn der neuen Subroutine).

21 = Interner Parserfehler: 2.Durchgang fand anderen Befehl/Index als 1.Durchgang.
23 = Interner Parserfehler: 2.Durchgang fand andere Zahl von Parametern für CONSTRUCTION
24 = Interner Parserfehler (anderer)

Du solltest keine dieser Fehlermeldungen erhalten. Wenn Du eine solche bekommst, dann ist ein Fehler in GeoScript.exe vorhanden. Bitte sende eine detaillierte Beschreibung des Fehlers, zusammen mit dem Script, das den Fehler verursacht hat.

22 = Keine Entsprechung gefunden für Subroutinen-Namen in CALL.
Du versuchtest eine Subroutine mit einem Namen aufzurufen, der nicht existiert.

26 = Name der Subroutine existiert bereits
Es gibt bereits eine andere Subroutine mit demselben Namen.

27 = Falscher Subroutinen-Typ nach CONSTRUCT / ANIMATE / INTERACT.
Du hast zum Aufrufen einer Subroutine ein Schlüsselwort verwendet, das nicht zum Typ der Subroutine passt (z.B. eine ANIMATION mit CONSTRUCT aufgerufen).

28 = Falsche Anzahl von Parametern in CALL.
Beim Aufrufen einer CONSTRUCTION stimmt die Anzahl der Parameter in CALL nicht überein mit der Anzahl der Parameter in der Definition der CONSTRUCTION.

29 = Typen stimmen nicht überein in CALL
Du versuchtest einen Parameter eines falschen Datentyps weiterzugeben.

30 = Zuviele Parameter für CONSTRUCTION (>12), CLICKABLE (>14) oder TRACE (>14)
Eine CONSTRUCTION kann höchstens 12 Parameter haben. Die Befehle CLICKABLE und TRACE können höchstens 14 Argumente haben. Du hast dieses Maximum überschritten.

31 = Ungültiger Befehl in dieser Art von Subroutine.
Gewisse Befehle sind nur in bestimmten Arten von Subroutinen erlaubt. (Z.B. CLICKABLE kann nur in einer INTERACTION verwendet werden.) Du gebrauchtest einen Befehl in der falschen Art von Subroutine.

32 = MENU ohne ENDMENU / REPEATMENU
Du hast ein MENU-Liste, die nicht mit ENDMENU oder REPEATMENU endet.

33 = Zuviele MENUITEMs
Es gibt ein internes Maximum von 126 Einträgen pro Menuliste. Aber in der Praxis kannst Du nie so viele haben, denn sogar 40 Einträge wären zuviel für die meisten Bildschirmauflösungen, da jeder Eintrag 20 Pixel in vertikaler Richtung braucht, sodass die untersten Einträge nicht mehr auf dem Bildschirm erscheinen würden.

34 = MENUITEM / EXITMENU / ENDMENU / REPEATMENU ohne MENU
Einer der erwähnten Befehle wurde ausserhalb einer MENU-Liste gefunden.

- Fehlermeldungen werden nicht nur auf dem Bildschirm angezeigt, sondern auch in eine Datei "geoerror.txt" geschrieben, im selben Ordner, in welchem sich das Script befindet, das die Fehler verursacht hat.


Initialisierungsbefehle:

Diese Befehle initialisieren Variablen mit numerischen Werten. Das ist die einzige Art, in einem Script numerische Werte festzulegen, da es in GeoScript keinen Datentyp für reine Zahlen gibt.
Diesen Befehlen kann ein "I" vorangesetzt werden (für "Invisibility" = Unsichtbarkeit). Z.B. ein Punkt, der mit POINT initialisiert wird, wird auf dem Bildschirm angezeigt; aber ein Punkt, der mit IPOINT initialisiert wird, erscheint nicht auf dem Bild. Ebenso gibt es ILINE, ICIRCLE, usw.

POINT Name, x, y [, Stil, Farbe, Breite]

Initialisiert einen Punkt mit den Koordinaten x,y. Die anderen Parameter sind nicht obligatorisch. (Siehe hier zu Stilen und Farben.)
Beachte, dass die y-Werte als Bildschirmkoordinaten angegeben werden, die von oben nach unten zunehmen (umgekehrt als im normalen kartesianischen Koordinatensystem). Der Ursprung des Koordinatensystems ist die obere linke Ecke des Fensters.

LINE Name, x1, y1, x2, y2 [, Muster, Farbe, Breite]

Initialisiert eine Gerade mit dem Ursprung x1, y1 und einem Vektor, der von da nach x2, y2 zeigt. Die anderen Parameter sind nicht obligatorisch.
Geraden, die mit zwei Punkten initialisiert werden, werden nur zwischen diesen beiden Punkten gezeichnet, während polar initialisierte Geraden auf ihrer ganzen Länge gezeichnet werden, die auf dem Bildschirm sichtbar ist.

LINEPOLAR Name, x1, y1, Winkel [, Muster, Farbe, Breite]

Initialisiert eine Gerade mit dem Ursprung x1, y1, und einem Vektor, der in die Richtung von Winkel zeigt (in Grad).
Die Werte von Winkel beginnen mit 0º = nach rechts, und nehmen im Gegenuhrzeigersinn zu. So ist 90º nach oben, 180º nach links, und 270º nach unten.
Geraden, die mit zwei Punkten initialisiert werden, werden nur zwischen diesen beiden Punkten gezeichnet, während polar initialisierte Geraden auf ihrer ganzen Länge gezeichnet werden, die auf dem Bildschirm sichtbar ist.

CIRCLE Name, x, y, Radius [, Farbe, Breite, Anfang, Ende]

Initialisiert einen Kreis mit dem Mittelpunkt x1, y1 und dem Radius Radius.


Konstruktionsbefehle:

Diese Befehle sind das Herz von GeoScript. Sie führen geometrische Konstruktionen aus.
Wie die Initialisierungsbefehle, können auch diese Befehle mit vorangestelltem "I" (Unsichtbarkeit) verwendet werden (mit Ausnahme von COPY, REVERT und ORDERLINES).

Punkt = MIDDLE Punkt1, Punkt2 [, Stil, Farbe, Breite]

Setzt Punkt in die Mitte zwischen Punkt1 und Punkt2. Die anderen Parameter sind nicht obligatorisch. (Siehe hier zu Stilen und Farben.)

Punkt = ADVANCETO Punkt1, Punkt2, Distanz [, Stil, Farbe, Breite]

Bewegt sich von Punkt1 in gerader Linie in Richtung Punkt2 um Distanz Pixels, und setzt Punkt dort.

Punkt = ADVANCEON Punkt1, Gerade, Distanz [, Stil, Farbe, Breite]

Bewegt sich von Punkt1 entlang Gerade (in der Richtung ihres Vektors) um Distanz Pixels, und setzt Punkt dort.
Dieser Befehl nimmt an (ohne es nachzuprüfen), dass Punkt1 auf Gerade liegt. Wenn das nicht der Fall ist, wird die Bewegung einfach von Punkt1 aus parallel zu Gerade stattfinden.

Gerade = LINE Punkt1, Punkt2 [, Muster, Farbe, Breite]

Zeichnet eine Gerade, die Punkt1 und Punkt2 verbindet. Ihr Vektor zeigt von Punkt1 zu Punkt2.
Geraden, die mit zwei Punkten initialisiert werden, werden nur zwischen diesen beiden Punkten gezeichnet, während polar initialisierte Geraden auf ihrer ganzen Länge gezeichnet werden, die auf dem Bildschirm sichtbar ist.

Gerade = LINEPOLAR Punkt, Gerade2, Winkel [, Muster, Farbe, Breite]

Zeichnet eine Gerade, die durch Punkt geht und mit Gerade2 den Winkel Winkel bildet.
Geraden, die mit zwei Punkten initialisiert werden, werden nur zwischen diesen beiden Punkten gezeichnet, während polar initialisierte Geraden auf ihrer ganzen Länge gezeichnet werden, die auf dem Bildschirm sichtbar ist.

Gerade, Punkt2 = STARTLINE Punkt, Winkel, Distanz [, Muster, Farbe, Breite]

Zeichnet eine Gerade, die durch Punkt geht und die Richtung des absoluten Winkels Winkel hat (0º = nach rechts, 90º 0 nach oben, usw.) Beendet die Gerade in einer Entfernung von Distanz Pixels von Punkt, und speichert diesen Endpunkt in Punkt2.
Die wahlweisen Parameter geben die Eigenschaften von Gerade an. Punkt2 nimmt die graphischen Eigenschaften von Punkt an.
- Dieser Befehl hat zum Zweck, eine Strecke von bekannter Länge genau in der Weise zu zeichnen, wie man es in einer geometrischen Konstruktion auf dem Papier machen würde: beginnend mit einem Punkt, wird eine Gerade gezeichnet und dann der zweite Punkt in der gegebenen Entfernung vom ersten gesetzt.

Gerade = MIDLINE Punkt1, Punkt2 [, Muster, Farbe, Breite]

Zeichnet die Mittelsenkrechte zwischen Punkt1 und Punkt2. Ihr Vector dreht sich nach rechts (d.h. im Uhrzeigersinn) vom Vektor Punkt1->Punkt2 aus gesehen.

Gerade = BISECTOR Gerade1, Gerade2 [, Muster, Farbe, Breite]

Zeichnet die Winkelhalbierende zwischen Gerade1 und Gerade2. Der Ursprung von Gerade liegt im Schnittpunkt von Gerade1 und Gerade2.

Gerade1, Gerade2 = TANGENT Punkt, Kreis [, Muster, Farbe, Breite]

Speichert in Gerade1 und Gerade2 die zwei Tangenten zu Kreis, die durch Punkt gehen. Wenn Punkt innerhalb des Kreises liegt, werden beide Geraden ungültig. Wenn Punkt auf der Kreislinie liegt, wird Gerade2 ungültig.

Punkt = CROSS Gerade1, Gerade2 [, Stil, Farbe, Breite]

Bildet den Schnittpunkt von Gerade1 und Gerade2. Wenn diese Geraden parallel sind, wird Punkt ungültig.

Punkt1, Punkt2 = CROSS Gerade, Kreis [, Stil, Farbe, Breite]
Punkt1, Punkt2 = CROSS Kreis, Gerade [, Stil, Farbe, Breite]

Bildet die zwei Schnittpunkte von Gerade und Kreis. Punkt1 ist der erste Punkt und Punkt2 der zweite, wenn in der Richtung des Vektors von Gerade vorwärtsgeschritten wird. - Wenn Gerade und Kreis sich nicht schneiden, werden die Ergebnisse ungültig.
Es macht keinen Unterschied, ob Gerade oder Kreis zuerst angegeben wird; aber der Dateityp von beiden muss in einem anderen Befehl irgendwo im Programm klar definiert sein.

Punkt1, Punkt2 = CROSS Kreis1, Kreis2 [, Stil, Farbe, Breite]

Bildet die zwei Schnittpunkte von Kreis1 und Kreis2. Punkt1 ist der Punkt rechts und Punkt2 der Punkt links, vom Mittelpunkt von Kreis1 aus in Richtung des Mittelpunkts von Kreis2 gesehen. - Wenn Kreis1 und Kreis2 sich nicht schneiden, werden die Ergebnisse ungültig.

Punkt1, Punkt2 = CIRCLEND Kreis [, Stil, Farbe, Breite]

Ergibt die zwei Endpunkte des Bogens, der durch die Anfang- und Ende-Eigenschaft von Kreis definiert sind.
Statt CIRCLEND sind auch CIRCLEEND und ENDCIRCLE erlaubt.

Kreis = CIRCLE Mittelpunkt, Punkt [, Farbe, Breite, Anfang, Ende]

Bildet einen Kreis um Mittelpunkt, der durch Punkt geht.

Kreis = CIRCLE Mittelpunkt, Gerade [, Farbe, Breite, Anfang, Ende]

Bildet einen Kreis um Mittelpunkt, der Gerade berührt.

Kreis = ARC Mittelpunkt, Punkt [, Weite , Farbe, Breite]
Kreis = ARC Gerade1, Gerade2, Radius [, Farbe, Breite]

Die erste Form bildet einen Bogen um Mittelpunkt, der durch Punkt geht, von einer Winkelweite Weite (in Grad). - Dieser Befehl wird hauptsächlich in detaillierten Demonstrationen von Konstruktionen mit dem Zirkel gebraucht, wo nur der Schnittpunkt von zwei Bogen benötigt wird; so können genau die benötigten Bögen gezeichnet werden anstelle der ganzen Kreise. (Siehe das Beispielprogramm "Dreiecke.geo".)
Die zweite Form bildet einen Bogen um den Schnittpunkt von Gerade1 mit Gerade2, mit dem Radius Radius, der in der Richtung des Vektors von Gerade1 beginnt und im Gegenuhrzeigersinn drehend in der Richtung des Vektors von Gerade2 aufhört..

Name1 = COPY Name2

Kopiert ein bereits existierendes Objekt. Name1 und Name2 müssen vom selben Dateityp sein.
Diesem Befehl kann kein "I" (für Unsichtbarkeit) vorangesetzt werden, und er bewirkt keine Ausgabe auf dem Bildschirm.

MOVECIRCLE Kreis, Punkt [, Farbe, Breite]

Verschiebt den Mittelpunkt von Kreis su Punkt, mit gleichbleibendem Radius.

REVERT Gerade

Dreht den Vektor von Gerade in die entgegengesetzte Richtung, wobei die Gerade äusserlich gleich bleibt.
Diesem Befehl kann kein "I" (für Unsichtbarkeit) vorangesetzt werden, und er bewirkt keine Ausgabe auf dem Bildschirm.

ORDERLINES Gerade1, Gerade2

Gibt Gerade1 und Gerade2 in einer solchen Reihenfolge zurück, dass der Winkel zwischen ihren Vektoren, im Gegenuhrzeigersinn von Gerade1 zu Gerade2, kleiner als 180º (oder gleich) ist. Wenn dieser Winkel anfangs grösser als 180º ist, dann werden Gerade1 und Gerade2 vertauscht.


Markierungsbefehle:

MARKPOINT Punkt [, Grösse, Position]

Markiert Punkt auf dem Bildschirm mit seinem Namen.
- Der wahlweise Parameter Grösse gibt die Schriftgrösse in Pixeln an. (Siehe
Anmerkung.)
- Der wahlweise Parameter Position gibt die Position des Textes an in bezug auf Punkt:
1 = oben, 2 = unten, 4 = links, 8 = rechts, 5 = oben links, 9 = oben rechts, 6 = unten links, 10 = unten rechts.

MARKLINE Gerade [, Punkt1, Punkt2, Grösse, Position]
MARKLINE Gerade [, Grösse, Position]

Markiert Gerade auf dem Bildschirm mit ihrem Namen, in der Mitte zwischen Punkt1 und Punkt2.
Dieser Befehl nimmt an (ohne nachzuprüfen), dass Punkt1 und Punkt2 auf Gerade liegen.
- Der wahlweise Parameter Grösse gibt die Schriftgrösse in Pixeln an. (Siehe
Anmerkung.)
- Der wahlweise Parameter Position gibt die Position des Textes an in bezug auf Gerade:
0 = oben bzw. links (je nach der Neigung der Geraden), 1 = unten bzw. rechts.

MARKANGLE Gerade1, Gerade2, "Text" [, Grösse, Position, Radius]

Markiert den Winkel zwischen Gerade1 und Gerade2 auf dem Bildschirm mit Text, in griechischen Buchstaben.
- Der wahlweise Parameter Grösse gibt die Schriftgrösse in Pixeln an. (Siehe
Anmerkung.)
- Der wahlweise Parameter Position gibt die Position des zu markierenden Winkels an:
0 = Im Gegenuhrzeigersinn von Gerade1 zu Gerade2 gemäss ihren Vektoren, aber immer der kleinere Winkel (<180º).
1, 2, 3 = Der zweite, dritte, bzw. vierte folgende Winkel im Gegenuhrzeigersinn.
4 = Genau vom Vektor von Gerade1 zum Vektor von Gerade2, auch wenn dieser Winkel grösser als 180º ist.
- Der wahlweise Parameter Radius gibt den Radius des Bogens an, in Pixeln, der den Winkel markiert.

MARKANGLE Punkt1, Punkt2, Punkt3, "text" [, Grösse, Radius]

Markiert den Winkel Punkt1-Punkt2-Punkt3 auf dem Bildschirm mit Text, in griechischen Buchstaben.
- Der wahlweise Parameter Grösse gibt die Schriftgrösse in Pixeln an. (Siehe
Anmerkung.)
- Der wahlweise Parameter Radius gibt den Radius des Bogens an, in Pixeln, der den Winkel markiert.

MARKNUMBERLINE Gerade [, Punkt1, Punkt2, Faktor, Grösse, Position]

Markiert Gerade auf dem Bildschirm mit ihrem Namen und Länge, in der Mitte zwischen Punkt1 und Punkt2.
Dieser Befehl nimmt an (ohne nachzuprüfen), dass Punkt1 und Punkt2 auf Gerade liegen.
- Der wahlweise Parameter Faktor gibt eine (ganze) Zahl an, durch die die Länge der Strecke (in Pixeln) geteilt wird. Wird dieser Parameter weggelassen, wird die Länge in Pixeln angezeigt.
- Der wahlweise Parameter Grösse gibt die Schriftgrösse in Pixeln an. (Siehe
Anmerkung.)
- Der wahlweise Parameter Position gibt die Position des Textes an in bezug auf Gerade:
0 = oben bzw. links (je nach der Neigung der Geraden), 1 = unten bzw. rechts.

MARKNUMBERANGLE Gerade1, Gerade2, "Text" [, Grösse, Position, Radius]

Markiert den Winkel zwischen Gerade1 und Gerade2 auf dem Bildschirm mit Text, in griechischen Buchstaben, und gibt dessen Grösse in Grad an.
- Der wahlweise Parameter Grösse gibt die Schriftgrösse in Pixeln an. (Siehe
Anmerkung.)
- Der wahlweise Parameter Position gibt die Position des zu markierenden Winkels an:
0 = Im Gegenuhrzeigersinn von Gerade1 zu Gerade2 gemäss ihren Vektoren, aber immer der kleinere Winkel (<180º).
1, 2, 3 = Der zweite, dritte, bzw. vierte folgende Winkel im Gegenuhrzeigersinn.
4 = Genau vom Vektor von Gerade1 zum Vektor von Gerade2, auch wenn dieser Winkel grösser als 180º ist.
- Der wahlweise Parameter Radius gibt den Radius des Bogens an, in Pixeln, der den Winkel markiert.

MARKNUMBERANGLE Punkt1, Punkt2, Punkt3, "Text" [, Grösse, Radius]

Markiert den Winkel Punkt1-Punkt2-Punkt3 auf dem Bildschirm mit Text, in griechischen Buchstaben, und gibt dessen Grösse in Grad an.
- Der wahlweise Parameter Grösse gibt die Schriftgrösse in Pixeln an. (Siehe
Anmerkung.)
- Der wahlweise Parameter Radius gibt den Radius des Bogens an, in Pixeln, der den Winkel markiert.

FILLTRIANGLE Punkt1, Punkt2, Punkt3 [, Farbe, Intensität]

Füllt das Dreieck Punkt1-Punkt2-Punkt3 mit Farbe aus.
Intensität ist ein Wert von 0 bis 255, der die Intensität der Farbfüllung angibt (0 = völlig transparent, 255 = volle Farbe).
Wenn Farbe weggelassen wird, wird die Farbe von Punkt1 benützt.
Wenn Intensität weggelassen wird, wird ein Wert von 255 angenommen.
- Statt FILLTRIANGLE kann man einfach FILL schreiben, sofern der Datentyp der Parameter irgendwo anders im Programm klar als Punkt definiert ist.

FILLCIRCLE Kreis [, Farbe, Intensität]

Füllt Kreis mit Farbe.
Intensität ist ein Wert von 0 bis 255, der die Intensität der Farbfüllung angibt (0 = völlig transparent, 255 = volle Farbe).
Wenn Farbe weggelassen wird, wird die Farbe von Kreis benützt.
Wenn Intensität weggelassen wird, wird ein Wert von 255 angenommen.
- Statt FILLCIRCLE kann man einfach FILL schreiben, sofern der Datentyp des Parameters irgendwo anders im Programm klar als Kreis definiert ist.


Subroutinen und Programmflussbefehle:

Ein GeoScript-Programm besteht aus dem Hauptmodul (wo die Ausführung des Programms beginnt), gefolgt von einer beliebigen Anzahl von Subroutinen.
GeoScript bietet drei Arten von Subroutinen:

CONSTRUCTION Name [, Parameter ... ]

Diese Art Subroutine führt geometrische Konstruktionen aus. Sie kann Initialisierungsbefehle, Konstruktionsbefehle und Markierungsbefehle enthalten, und auch Textbefehle, WAIT, SPEED und FRAMESPEED.
CONSTRUCTION ist die einzige Art von Subroutine, die Parameter verarbeiten kann. Es sind höchstens 12 Parameter erlaubt. - Beachte, dass alle Variabeln, die nicht als Parameter deklariert sind, global sind. Wenn also eine CONSTRUCTION eine Variable ändert, die kein Parameter ist, dann bleibt der Wert dieser Variable auch geändert, nachdem die Subroutine beendet ist. - Parameter werden als Referenz weitergegeben; d.h. wenn eine CONSTRUCTION den Wert eines Parameters ändert, dann ist die entsprechende Variable geändert, nachdem die Subroutine beendet ist.
Eine CONSTRUCTION kann keine andere Subroutine aufrufen. (Das hat mit der Art und Weise zu tun, wie GeoScript Parameter weitergibt, und das wäre ziemlich schwierig zu ändern, tut mir leid...)
(Anmerkung: Leicht geändert in der aktuellen Version. Eine CONSTRUCTION, die keine Parameter hat, kann jetzt eine andere CONSTRUCTION (mit oder ohne Parameter) aufrufen.)
Die Ergebnisse einer CONSTRUCTION bleiben auf dem Bildschirm, nachdem die Subroutine beendet ist.

Vordefinierte Konstruktionen

Einige der Konstruktionsbefehle von GeoScript sind eigentlich ganze vordefinierte Konstruktionen. Z.B. der Befehl BISECTOR, wenn er im Modus PACE oder SLOW (siehe unten) ausgeführt wird, zeichnet zuerst einen Bogen im Winkel, der halbiert werden soll; dann zeichnet er zwei Bögen von den Endpunkten dieses ersten Bogens aus, und verbindet schliesslich den Schnittpunkt dieser beiden Bögen mit dem Ursprung des Winkels. In ähnlicher Weise, wenn TANGENT im Modus SLOW ausgeführt wird, wird zuerst der Punkt mit dem Kreismittelpunkt verbunden, dann die Mitte dieser Strecke markiert und ein Kreis darüber gezeichnet (Thaleskreis), um die Berührungspunkte der Tangenten mit dem Kreis zu finden; und schliesslich wird der Punkt mit diesen Schnittpunkten der zwei Kreise verbunden.

ANIMATION Name

Eine ANIMATION kann geometrische Konstruktionen mit verschiedenen Anfangswerten wiederholen, indem die Anfangspunkte alllmählich verschoben werden und die resultierenden Punkte nachgezeichnet werden.
Sie kann alle Arten von Befehlen enthalten, ausser MENU, CLICKABLE, SCREEN und WINDOW.
Zwei Befehle sind speziell für ANIMATION: STEP gibt an, wie sich die Anfangspunkte von einer Wiederholung zur nächsten verschieben, und TRACE gibt an, welche Punkte auf dem Bildschirm nachgezeichnet werden. Das erlaubt die Konstruktion komplizierter Kurven Punkt für Punkt.
Wenn eine ANIMATION beendet wird, stellt sie den Bildschirm in dem Zustand wieder her, der vor dem Beginn der ANIMATION vorlag.

INTERACTION Name

Eine INTERACTION erlaubt dem Benutzer, bestimmte Punkte auf dem Bildschirm mit der Maus zu "ziehen", wodurch die Ergebnisse einer Konstruktion verändert werden. Eine INTERACTION hört erst dann auf, wenn der Benutzer auf den "Beenden"-Knopf klickt oder die [Esc]-Taste drückt.
Sie kann alle Arten von Befehlen enthalten, ausser MENU, STEP, TRACE, SCREEN und WINDOW.
Wenn eine INTERACTION beendet wird, stellt sie den Bildschirm in dem Zustand wieder her, der vor dem Beginn der INTERACTION vorlag.

REPEAT [wieviele]

Jede Subroutine endet mit REPEAT. Der wahlweise Parameter wieviele gibt an, wie viele Male die Subroutine wiederholt werden soll, bevor sie aufhört. (Für eine INTERACTION ist dieser Parameter bedeutungslos.) Solange die Zahl der Wiederholungen nicht voll ist, wird die Subroutine von Anfang an wiederholt.
Wenn wieviele weggelassen wird, wird die Subroutine nur einmal ausgeführt.

CALL / CONSTRUCT / ANIMATE / INTERACT Name [, Modus] [, Parameter ... ]

Dieser Befehl ruft eine Subroutine auf. Die vier Schlüsselwörter CALL, CONSTRUCT, ANIMATE und INTERACT sind austauschbar. Der einzige Unterschied besteht darin, dass CALL für jede Art von Subroutine benutzt werden kann, während bei den anderen drei nachgeprüft wird, ob die aufgerufene Subroutine von der richtigen Art ist (z.B. kann man eine ANIMATION nicht mit "CONSTRUCT" aufrufen.)
Der wahlweise Parameter Modus ist eines der folgenden Schlüsselwörter:
FAST = Führt alle Konstruktionen unmittelbar aus; hält nur beim Befehl WAITALWAYS an (oder wenn der Benutzer auf "Pause" klickt, sofern er überhaupt Zeit hat dazu...)
PACE = Führt Konstruktionen Schritt für Schritt aus, und wartet jedesmal zwei Sekunden, wenn ein neues Objekt auf dem Bildschirm erscheint. (Der Befehl SPEED kann diese Wartezeit ändern.)
SLOW (oder TOOLS) = Zeichnet zusätzlich zur Konstruktion sich bewegende Werkzeuge auf dem Bildschirm (Bleistift, Lineal, Zirkel, usw.), als ob jemand die Konstruktion tatsächlich auf Papier ausführen würde. Dieser Modus ist hauptsächlich für Demonstrationen für Anfänger gedacht, wo die Praxis des geometrischen Zeichnens im Detail dargestellt werden soll.

Im Modus PACE und SLOW kann der Benutzer die Wartezeiten überspringen, indem er irgendeine Taste drückt (ausser den reservierten: [Enter], [Esc], [PageUp] und "R"), oder indem er mit der Maus irgendwo ins Fenster klickt, ausser auf die Knöpfe.
Wenn während einer CONSTRUCTION der "Beenden"-Knopf geklickt oder die [Esc]-Taste gedrückt wird, dann wird die CONSTRUCTION zuerst im Modus FAST fertiggezeichnet, bevor sie beendet wird.

Wenn Modus weggelassen wird, werden ANIMATIONen und INTERACTIONen im Modus FAST aufgerufen. CONSTRUCTIONen werden im Modus der aufrufenden Subroutine aufgerufen, bzw. im Modus PACE, wenn sie vom Hauptmodul her aufgerufen werden.

Eine INTERACTION im Modus FAST wird die Ergebnisse unmittelbar zeigen, während der Benutzer noch dabei ist, einen Punkt mit der Maus zu ziehen (sodass der Eindruck entsteht, man ziehe die ganze konstruierte Figur umher) - zumindest so schnell, wie es die Leistungsfähigkeit des Computers zulässt. Im Modus PACE und SLOW wartet eine INTERACTION, bis der Benutzer die Maustaste losgelassen hat, bevor die Konstruktion gezeigt wird.

MENU [Textfarbe, Hintergrundfarbe]

Beginnt einen MENU-Block, der mehrere Menu-Optionen enthält. Dieser Befehl ist nur im Hauptmodul erlaubt.
Die wahlweisen Parameter Textfarbe, Hintergrundfarbe geben die Farben an, die für die hervorgehobene Menu-Option verwendet werden. (Die Farbe der nicht hervorgehobenen Optionen kann nicht verändert werden... bis auf weiteres...)
Die Struktur eines MENU-Blocks ist wie folgt:

MENU [Textfarbe, Hintergrundfarbe]
  MENUITEM "Text1"
    ...
    (Befehle)
    ...
    [EXITMENU]
  MENUITEM "Text2"
    ...
    (Befehle)
    ...
    [EXITMENU]
  MENUITEM "Text3"
    ...
  (usw.)
    ...
ENDMENU / REPEATMENU

Das bewirkt, dass eine Menu-Liste mit den Einträgen "Text1", "Text2", "Text3" usw. gezeigt wird. Wenn der Benutzer z.B. "Text1" auswählt, werden die Befehle zwischen MENUITEM "Text1" und MENUITEM "Text2" ausgeführt. (Wenn Befehle zwischen MENU und dem ersten MENUITEM vorhanden sind, werden sie ignoriert.)
ENDMENU bedeutet, dass nach dem Ausführen der Befehle der gewählten Option das Programm nach dem MENU-Block weiterfährt. REPEATMENU bedeutet, dass nach dem Ausführen der Befehle der gewählten Option dasselbe Menu wieder gezeigt wird - ausser wenn ein Befehl EXITMENU angetroffen wird. EXITMENU springt zur Zeile nach REPEATMENU.
Wenn der Benutzer in einem Menu die [Esc]-Taste drückt, oder mit der Maus ausserhalb der Menu-Liste klickt, dann wird keine Option ausgewählt, und das Programm fährt nach dem Menu-Block weiter (selbst wenn der Block mit REPEATMENU endet).
Menu-Blöcke können ineinander verschachtelt werden, d.h. ein MENUITEM kann seinerseits einen MENU-Block enthalten.

Beachte, dass das Menu nicht gescrollt wird. Das bedeutet, dass Du nicht mehr Einträge angeben kannst, als in der Fensterhöhe Platz haben, sonst werden die untersten nicht mehr auf dem Bildschirm angezeigt und können Fehler verursachen.

STEP Punkt, dx, dy

Der Befehl STEP ist nur in ANIMATIONen erlaubt. Er gibt die Distanz an, um die sich ein Punkt verschiebt von einer Wiederholung der ANIMATION zur nächsten.

STEP Kreis, dx, dy, dr

Dasselbe wie oben, aber für einen Kreis. Dx und dy sind die Bewegung des Kreismittelpunkts. Der Kreis kann zusätzlich seinen Radius ändern; dieser Wert wird in dr angegeben.

STEP Punkt/Kreis ALONG Gerade/Kreis, d [, dr]

Dasselbe wie oben, lässt aber den Punkt bzw. Kreis sich entlang einer Gerade bzw. eines Kreises bewegen. d ist die Distanz der Bewegung von einer Wiederholung zur nächsten. dr (für einen Kreis) gibt an, um wieviel sich der Radius des Kreises ändert.

TRACE Punkt1 [, Punkt2, ...]

Der Befehl TRACE ist nur in ANIMATIONen erlaubt. Er gibt an, welche Punkte eine Spur hinter sich lassen, die ihre Bewegung während der ganzen ANIMATION nachzeichnet. Es können bis zu 14 Punkte mit einem einzigen TRACE-Befehl angegeben werden.

CLICKABLE Punkt1 [, Punkt2, ...]

Der Befehl CLICKABLE ist nur in INTERACTIONen erlaubt. Er gibt an, welche Punkte der Benutzer anklicken kann, um sie umherzuziehen.
Beachte, dass diese Punkte nicht speziell markiert werden auf dem Bildschirm. Du solltest also einen Text ausgeben, der den Benutzer darüber informiert, welche Punkte er ziehen kann.
Es können bis zu 14 Punkte mit einem einzigen CLICKABLE-Befehl angegeben werden.

CLICKABLE Punkt ALONG Gerade / Kreis

Dasselbe wie oben, aber die Bewegung des Punktes wird darauf begrenzt, sich entlang der Geraden bzw. des Kreises zu bewegen.
Dieser Befehl nimmt an (ohne nachzuprüfen), dass der Punkt sich anfänglich auf der Geraden bzw. auf dem Kreis befindet. Wenn das nicht der Fall ist, dann wird der Punkt auf die Gerade bzw. den Kreis "springen", sobald er gezogen wird.

WAIT [msecs]

Im Modus PACE oder SLOW wartet dieser Befehl msecs Millisekunden, oder bis der Benutzer eine Taste oder eine Maustaste drückt.
Wenn msecs weggelassen wird, wartet das Programm, bis der Benutzer auf den "Weiter"-Knopf klickt oder die [Enter]-Taste drückt.

WAITALWAYS [msecs]

Dieser Befehl wartet msecs Millisekunden (unabhängig vom aktuellen Modus), oder bis der Benutzer eine Taste oder eine Maustaste drückt.
Wenn msecs weggelassen wird, wartet das Programm, bis der Benutzer auf den "Weiter"-Knopf klickt oder die [Enter]-Taste drückt.

END

Beendet das Programm unmittelbar. Dieser Befehl gehört normalerweise ins Hauptmodul. GeoScript erlaubt aber auch, ein Programm von innerhalb einer Subroutine zu beenden.


Bildschirmbefehle:

SCREEN Breite, Höhe [, Farbtiefe, Farbe]

Definiert die Grösse und Farbtiefe des Programmfensters.
Der Parameter Farbtiefe hat z.Z. noch keinen Effekt; die Farbtiefe ist immer 16 Bits.
Der wahlweise Parameter Farbe gibt die Hintergrundfarbe an. (Die vorgegebene Farbe ist weiss.)
Wenn vor dem ersten Grafikbefehl kein SCREEN-Befehl gefunden wird, wird das Fenster in der vorgegebenen Grösse von 640x480 Pixeln initialisiert.
Dieser Befehl ist nur im Hauptmodul erlaubt.

WINDOW Breite, Höhe

Definiert die Grösse des Grafik-Bereichs innerhalb des Fensters. Grafische Bildschirmausgaben (Konstruktionen) werden auf die angegebene Breite und Höhe begrenzt.
Dieser Befehl ist nur im Hauptmodul erlaubt.

TITLE "Text"

Definiert den Titel des Programmfensters. Der vorgegebene Titel ist der Dateiname der Script-Datei.

TEXTWINDOW x, y, Breite, Höhe

Definiert den Ort und die Grösse eines Rechtecks für die folgenden TEXT-Befehle. Text wird auf dieses Rechteck begrenzt.
Statt TEXTWINDOW ist auch TWINDOW erlaubt.

TEXT "Text" [, Textfarbe, Hintergrundfarbe, Grösse]

Schreibt mit den angegebenen Farben Text in das Rechteck, das zuvor mit TEXTWINDOW definiert wurde.
Grösse = Schriftgrösse in Pixeln.

Anmerkung: In Wirklichkeit sind nur wenige verschiedene Schriftgrössen verfügbar, weil GeoScript nicht die Standard-Textfunktionen von Windows benützt. Die Schriftgrösse wird auf die nächstliegende dieser verfügbaren Grössen gerundet: 12, 16, 24, 32, 40 oder 64.

CLS [Farbe]

Bildschirm löschen: löscht das ganze Grafikfenster. - Der wahlweise Parameter Farbe gibt eine Farbe an, mit der das Fenster gefüllt wird.


Andere Befehle:

SPEED msecs

Definiert die jeweilige Wartezeit (in Millisekunden), nachdem ein neues Objekt angezeigt wird im Modus PACE bzw. SLOW. Der vorgegebene Wert ist 2000 (zwei Sekunden).

FRAMESPEED msecs

Definiert die Feinheit der Bewegung, als Wartezeit (in Millisekunden) zwischen aufeinanderfolgenden Aktualisierungen der Grafik während einer Bewegung. (Ist relevant nur für die bewegten Werkzeuge im Modus SLOW, und für die Geschwindigkeit der Wiederholungen einer ANIMATION im Modus FAST.) Der vorgegebene Wert ist 50 Millisekunden (20 Bilder pro Sekunde). Für langsame Computer kann dieser Wert erhöht werden, falls die Leistung ungenügend ist; oder er kann für schnelle Computer vermindert werden, um geschmeidigere Bewegungen zu erhalten.

DEFAULTS Hintergrundfarbe [, Zeichnungsfarbe, Textfarbe, Hilfsfarbe, Linienbreite, Muster, Punktbreite, Stil, Winkelposition, Bogenweite]

Falls Dich die "normalen" vorgegebenen Farben usw. von GeoScript langweilen, kannst Du sie mit diesem Befehl ändern. Er bestimmt die vorgegebenen Werte für Grafik-Eigenschaften, die überall dort angewendet werden, wo Du die entsprechenden wahlweisen Parameter in einem Befehl weglässt.
Beachte, dass dieser Befehl nicht sofort das Aussehen des Bildschirms ändert. Die definierten Werte werden nur auf die nachfolgenden Zeichnungsbefehle angewendet.
Die Parameter sollten sich von selbst erklären, ausser vielleicht die folgenden:
Hilfsfarbe ist die Farbe, mit der die Hilfslinien gezeichnet werden, die in den Konstruktionen von Winkelhalbierenden, Tangenten, usw. erscheinen, im Modus PACE und SLOW.
Winkelposition ist die vorgegebene Position für Winkel, die mit MARK(NUMBER)ANGLE markiert werden.
Bogenweite ist die Winkelweite (in Grad) für Bögen, die mit dem ARC-Befehl erzeugt werden (wenn der Parameter Weite ausgelassen wird), und für die Hilfsbögen, die in den vorgegebenen Konstruktionen von MIDLINE, BISECTOR, usw. erscheinen im Modus PACE und SLOW.

TOOLDEFAULTS Bleistiftgrösse [, Dreiecksgrösse, Linealbreite, Bleistiftfarbe, Zirkelfarbe, Dreiecksfarbe, Transporteurfarbe, Linealfarbe]

Dieser Befehl ändert die vorgegebenen Werte für die gezeichneten Werkzeuge im Modus SLOW.
Bleistiftgrösse ist die Länge sowohl des Bleistifts wie auch des Zirkels, in Pixeln.
Dreiecksgrösse ist die Grösse sowohl des Zeichendreiecks wie auch des Transporteurs, in Pixeln.
Wenn für die Farbparameter -1 oder DEFAULT angegeben wird, dann ist die Bedeutung davon, dass das entsprechende Werkzeug jeweils die Farbe des Objekts annimmt, das es zeichnet. Ein Wert von -1 in diesen Parametern bedeutet also in diesem Fall NICHT "Keine Änderung": der entsprechende Wert wird effektiv geändert, wenn dort vorher eine bestimmte Farbe definiert war. Wenn Du diese Farbwerte nicht verändern willst, musst Du sie ganz weglassen.


Grössenbegrenzungen von GeoScript-Programmen:

Es gibt gewisse Grenzen für die Grösse von GeoScript-Programmen; aber ich nehme nicht an, Du wirst so ein riesiges Script schreiben, dass diese Grenzen Dich stören werden. Hier sind sie:
Du kannst höchstens 65535 Subroutinen in einem Script haben, und höchstens 65535 Linien in einer Subroutine.
Du kannst auch höchstens je 65535 Variabeln von jedem Typ haben (Punkte, Geraden und Kreise), und höchstens 65535 verschiedene Texte.
Wenn Du GeoScript auf einem Computer mit sehr beschränktem Arbeitsspeicher ausführst, könntest Du evtl. auch Speicherplatzprobleme bekommen, wenn Du sehr tief verschachtelte Aufrufe von Subroutinen hast, denn jeder Aufruf einer Subroutine von innerhalb einer anderen erfordert zwei zusätzliche Grafik-Buffer von der Grösse des ganzen Fensters. Das bedeutet, dass wenn Du z.B. ein Fenster von 1024x768 Pixeln hast, dass jedes Niveau von Verschachtelung drei Megabytes zusätzlichen Speicher benötigt.


GeoScript-Website