CanvasGI - Beschreibung der verfügbaren Funktionen
Funktion, Argumente Beschreibung Besonderheiten, Zusatzinformationen
Allgemeine Funktionen
Object getcontext () Abfragen des "Drawing context" Mit dem "Drawing context" kann direkt auf die Canvas-Funktionen (unter Umgehung des CanvasGI) zugegriffen werden, siehe CanvasGI-Skelettprogramm.

Return-Wert: "Drawing context", der beim Erzeugen eines CanvasGI-Objekts erzeugt wurde.

Beispiel: var context = gi.getcontext () ;
void clearcanvas (String bgcol , String frcol) Löschen aller in der Zeichenfläche vorhandenen Elemente, optional Füllen der Zeichenfläche mit einer Farbe und Zeichnen eines Rahmens Siehe auch "Farben in CanvasGI"
  • bgcol (String, optional) gibt Farbe für das Füllen der Zeichenfläche vor (Standard: Keine Füllung)
  • frcol (String, optional) gibt Farbe für das Zeichnen eines Rahmens vor (Standard: Kein Rahmen)
Beispiel: gi.clearcanvas ("#A0C" , "black") ;
int getcanvaswidth () Abfragen der Breite der Zeichenfläche Siehe auch getcanvasheight

Return-Wert: Breite der Zeichenfläche in Gerätekoordinaten (dies ist der Wert, der im <canvas>-Tag festgelegt wurde)

Beispiel: w = gi.getcanvaswidth () ;
int getcanvasheight () Abfragen der Höhe der Zeichenfläche Siehe auch getcanvaswidth

Return-Wert: Höhe der Zeichenfläche in Gerätekoordinaten (dies ist der Wert, der im <canvas>-Tag festgelegt wurde)

Beispiel: w = gi.getcanvasheight () ;
void beginpath () Starten eines "Ausgabepfades", in dem mehrere Zeichenbefehle zusammengefasst werden können, die erst durch abschließende Aufruf von stroke() bzw. fill() die Zeichenaktion für den gesamten Pfad auslösen.

Funktionen, die in einem Pfad zusammengefasst werden können:

vline, umoveto, ulineto, uline, utmoveto, utlineto, utarc, umarker, ...
Beispiel: gi.beginpath () ;
void closepath () Schließen des aktuellen "Subpath" und Verbinden des aktuellen Punktes mit dem Startpunkt durch eine gerade Linie.

Funktionen, die in einem Pfad zusammengefasst werden können:

vline, umoveto, ulineto, uline, utmoveto, utlineto, utarc, umarker, ...
Beispiel: gi.closepath () ;
void fill () Füllen aller in einem "Ausgabepfad" erzeugten Bereiche mit der (zum Beispiel über fillstyle) eingestellten Farbe. Siehe auch beginpath.
Beispiel: gi.fill () ;
void stroke () Zeichnen der Linien aller in einem "Ausgabepfad" zusammengefassten Zeichenbefehle.

Siehe auch beginpath.

Beispiel: gi.stroke () ;
Viewports und "User coordinates"
void setcurrentviewport (float pulx , float puly , float width , float height , integer cstype , boolean clip)
  • pulx, pyli (Gerätekoordinaten) sind die Koordinaten der linken oberen Ecke des Viewports, gemessen von der linken oberen Ecke des Zeichenbereichs,
  • width, height (Gerätekoordinaten) sind Breite und Höhe des Viewports,
  • cstype (optional) legt die Lage des Viewport-Koordinatensystems fest, es stehen 5 verschieden Systeme zur Verfügung (siehe "Viewports und Clipping"), Standard ist ein System in der linken oberen Ecke des Viewports,
  • clip (optional) legt mit dem Wert true fest, dass die Viewportgrenzen alle Ausgaben begrenzen (Clipping), mit dem Wert false darf auch über die Viewportgrenzen hinaus gezeichnet werden (Standard ist true).
Beispiel: gi.setcurrentviewport (100 , 50 , 200 , 80 , gi.XYCENTER) ;
Definition eines rechteckigen Bereichs und eines zugehörigen "Viewport-Koordinatensystems" für nachfolgende Zeichenausgaben Siehe Seite "Viewports und Clipping"
void setusercoordsa (float p1xu , float p1yu , float p2xu , float p2yu , float pm)
  • p1xu, p1yu, p2xu, p2yu ("Benutzer-Koordinaten") sind die Koordinaten für die linke untere Ecke bzw. die rechte obere Ecke des Viewports, die damit die Lage (und die Koordinatenrichtungen) eines Systems von "User coordinates" definieren,
  • pm (optional) sorgt für einen Rand zwischen den Grenzen der "User coordinates" und den Viewport-Grenzen (wird als prozentualer Anteil der Viewport-Abmessungen interpretiert).
Beispiel: gi.setusercoordsa (200 , 50 , -100 , -80 , 10) ;
Definition eines Koordinatensystems mit beliebigen Grenzen und Richtungen für Koordinaten im "Current viewport", auf diese Definition beziehen sich alle nachfolgenden mit u beginnenden Zeichenfunktionen. Skaliert wird "anisotrop", so dass beide Richtungen (gegebenenfalls unter Berücksichtigung des Randes) optimal genutzt werden. Siehe Seite "Problembezogene Koordinatensysteme (User coordinates)", auf der die Varianten mit Grafiken und Beispielen erläutert werden, vgl. auch die Beschreibung von setusercoordsi.
void setusercoordsi (float p1xu , float p1yu , float p2xu , float p2yu , float pm)
  • p1xu, p1yu, p2xu, p2yu ("Benutzer-Koordinaten") sind die Koordinaten für die linke untere Ecke bzw. die rechte obere Ecke des Viewports, die damit die Lage (und die Koordinatenrichtungen) eines Systems von "User coordinates" definieren,
  • pm (optional) sorgt für einen Rand zwischen den Grenzen der "User coordinates" und den Viewport-Grenzen (wird als prozentualer Anteil der Viewport-Abmessungen interpretiert).
Beispiel: gi.setusercoordsi (200 , 50 , -100 , -80 , 10) ;
Definition eines Koordinatensystems mit beliebigen Grenzen und Richtungen für Koordinaten im "Current viewport", auf diese Definition beziehen sich alle nachfolgenden mit u beginnenden Zeichenfunktionen. Skaliert wird "isotrop", so dass beide Richtungen (gegebenenfalls unter Berücksichtigung des Randes) auf gleiche Weise skaliert werden (keine Verzerrung für Koordinaten mit gleicher Dimension). Siehe Seite "Problembezogene Koordinatensysteme (User coordinates)", auf der die Varianten mit Grafiken und Beispielen erläutert werden, vgl. auch die Beschreibung von setusercoordsa.
Einstellungen
void strokestyle (String col) Festlegen der Farbe, die für nachfolgende Zeichenaktionen ("strokes") verwendet werden soll Siehe zum Beispiel Funktion vdrawrect
  • col (String) gibt Farbe für das Zeichnen vor
Beispiel: gi.strokestyle ("ABC") ;
void fillstyle (String col) Festlegen der Farbe, die für nachfolgende Bereichsfüllungen verwendet werden soll Siehe zum Beispiel Funktion fillrect
  • col (String) gibt Farbe für das Füllen von Bereichen vor
Beispiel: gi.fillstyle ("blue") ;
void textalign (String aligntext) Festlegen, wie eine nachfolgende Ausgabe von udrawtext den Text bezüglich des Bezugspunktes horizontal positioniert. Siehe auch textbaseline und udrawtext.
  • aligntext - String, der relative horizontale Positionierung festlegt, erlaubte Werte: "left", "center", "right".
Beispiel: gi.textalign ("right") ;
void textbaseline (String baselinetext) Festlegen, wie eine nachfolgende Ausgabe von udrawtext den Text bezüglich des Bezugspunktes vertikal positioniert. Siehe auch textalign und udrawtext.
  • aligntext - String, der relative vertikale Positionierung festlegt, erlaubte Werte: "top", "middle", "bottom".
Beispiel: gi.textbaseline ("middle") ;
void setaxfont (String cfnt) Festlegen des Fonts, mit denen die "Ticks" auf den Koordinatenachsen beschriftet werden. Siehe auch udrawxaxis und udrawyaxis.
  • cfnt - Fontstring.
Beispiel: gi.setaxfont ("normal 12px Times Roman") ;
void setaxnamefont (String cfnt) Festlegen des Fonts, mit denen die Koordinatenachsen an den Pfeilspitzen beschriftet werden. Siehe auch udrawxaxis und udrawyaxis.
  • cfnt - Fontstring.
Beispiel: gi.setaxnamefont ("italic bold 20px Times Roman") ;
Zeichnen mit Viewport-Koordinaten (Funktionen für "Drawing path")
void vline (float x1 , float y1 , float x2 , float y2)

Zeichnen einer geraden Linie, Funktion sollte innerhalb eines Pfades verwendet werden, Zeichanktion wird erst bei Aufruf von stroke() ausgeführt.

Die Funktion erwartet "Viewport-Koordinaten" (Pixel) mit Bezug auf das über setcurrentviewport eingestellte Koordinatensystem.

Siehe auch setcurrentviewport und strokestyle
  • x1, y1 - Koordinaten des Startpunktes,
  • x2, y2 - Koordinaten des Endpunktes.
Beispiel: gi.vline (20 , 30, 50 , 80) ;
Zeichnen mit Viewport-Koordinaten (mit sofortiger Ausgabe)
void vdrawrect (float pulx , float puly , float width , float height , String col) Siehe auch fillstyle. Wenn eine Farbe (als 5. Parameter) vorgegeben wird, dann bleibt diese Einstellung auch für eventuell nachfolgende Zeichenaktionen ("strokes") eingestellt.
  • pulx, puly - Koordinaten des linken oberen Eckpunktes des Rechtecks,
  • width, height - Breite und Höhe des zu zeichnenden Rechtecks,
  • col (String, optional) - Farbe für die Linien (Standard: Farbe, die über strokestyle eingestellt wurde).
Beispiel: gi.vdrawrect (20 , 30, 50 , 80 , "blue") ;

Zeichnen eines Rechtecks.

Die Funktion erwartet "Viewport-Koordinaten" (Pixel) mit Bezug auf das über setcurrentviewport eingestellte Koordinatensystem.

void vdrawfrect (float pulx , float puly , float width , float height , String col) Siehe auch fillstyle. Wenn eine Farbe (als 5. Parameter) vorgegeben wird, dann bleibt diese Einstellung auch für eventuell nachfolgende Zeichenaktionen mit Farbfüllung eingestellt.
  • pulx, puly - Koordinaten des linken oberen Eckpunktes des Rechtecks,
  • width, height - Breite und Höhe des zu füllenden Rechtecks,
  • col (String, optional) - Farbe für die Füllung (Standard: Farbe, die über fillstyle eingestellt wurde).
Beispiel: gi.vdrawfrect (20 , 30, 50 , 80 , "blue") ;

Füllen eines rechteckigen Bereichs mit Farbe.

Die Funktion erwartet "Viewport-Koordinaten" (Pixel) mit Bezug auf das über setcurrentviewport eingestellte Koordinatensystem.

void vdrawtext (String text , float xv , float yv , String colstring , String fontstring)

Die Postion der Textausgabe kann durch Einstellungen über textalign und textbaseline modifiziert werden.

Beispiele für Fontstrings: "bold 18px Times Roman", "italic 12pt monospaced".

  • text - Text, der ausgegeben werden soll.
  • xv, yv - Koordinaten des Text-Bezugspunktes ("Viewport coordinates", es gilt das für den Viewport definierte Viewport-Koordinatensystem).
  • colstring (optional) - Farbe für den Text (Standard ist die gerade gültige "Fillcolor").
  • fontstring (optional) - Beschreibung des zu verwendenden Textfonts (Standard ist der gerade gültige Textfont).
Beispiel: gi.vdrawtext ("Parallelprojektion" , 20 , 30 , "green") ;

Ausgabe eines Textes an einer durch "Viewport coordinates" bestimmten Position.

Die Funktion erwartet "Viewport coordinates" mit Bezug auf das über setcurrentviewport eingestellte Koordinatensystem.

Zeichnen mit "User coordinates" (Funktionen für "Drawing path")
void umoveto (float xu , float yu)

Bewegen des imaginären Zeichenstifts zur vorgegebenen Position (Definition einer Startposition für nachfolgende Aktionen).

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt, siehe auch Seite "Problembezogene Koordinatensysteme (User coordinates)".
  • x1, y1 - Koordinaten des Zielpunktes (Startpunkt für eine nachfolgende Aktion).
Beispiel: gi.umoveto (20.8 , 30.02) ;
void ulineto (float xu , float yu)

Zeichnen einer geraden Line von der aktuellen (zum Beispiel von umoveto oder einem vorangegangenen ulineto definierten Position) zur vorgegebenen Position.

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt, siehe auch Seite "Problembezogene Koordinatensysteme (User coordinates)".
  • x1, y1 - Koordinaten des Zielpunktes für die gerade Linie.
Beispiel: gi.ulineto (31.7 , 60.1) ;
void uline (float x1u , float y1u , float x2u , float y2u)

Zeichnen einer geraden Line von der Position (x1u,y1u) bis zur Position (x2u,y2u).

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt, siehe auch Seite "Problembezogene Koordinatensysteme (User coordinates)". uline ist eine Kombination von umoveto und ulineto.
  • x1u, y1u - Koordinaten des Startpunktes für die gerade Linie.
  • x2u, y2u - Koordinaten des Endpunktes der geraden Linie.
Beispiel: gi.uline (3.7 , 6.1 , 25 , 30.9) ;
void upolygon (Array xu , Array yu)

Zeichnen eines Polygons.

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt.
  • xu, yu - Arrays mit den x- bzw. y-Koordinaten.
Beispiel:
var xcoor = new Array (2 , 3 , 4) ;
var ycoor = new Array (1 , 8 , 5) ;
Beispiel: gi.upolygon (xcoor , ycoor) ;
void umarker (float xu , float yu , float markertype , float scalfac) Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt, siehe auch Seite "Marker zeichnen an User-coordinates-Posotionen".
  • xu, yu - Koordinaten des Marker-Bezugspunktes ("User coordinates").
  • markertype - Typ des Markers aus Marker-Katalog (nebenstehend),
  • scalfac (optional) - Faktor, mit dem die Markergröße beeinflusst werden kann (Standardwert: 1).
Beispiel: gi.umarker (3 , 8 , gi.MKVBAR , 2) ;

Zeichnen eines Markers , dessen Größe in Gerätekoordinaten vorgegeben ist, an einer durch "User coordinates" bestimmten Position.

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

void uraster (float dx , int nleft , int nright , float dy , int ndown , int nup)
  • dx - Länge eines Abschnitts in horizontaler Richung ("User coordinates"),
  • nleft, nright - Anzahl der Rasterpunkte im negativen bzw. positiven horizontalen Bereich,
  • dy - Länge eines Abschnitts in vertikaler Richung ("User coordinates"),
  • ndown, nup - Anzahl der Rasterpunkte im negativen bzw. positiven vertikalen Bereich.
Beispiel: gi.uraster (2 , 1 , 3 , 50 , 2 , 4) ;

... erzeugt das in der Abbildung rot gezeichnete Raster (die Koordinatenachsen dienen zur Orientierung und wurden mit udrawxaxis und udrawyaxis gezeichnet).

Zeichnen eines Rasters mit Abschnitten der Breite dx und der Höhe dy, nleft Punkte im negativen horizontalen Bereich, nright im positiven horizontalen Bereich, in vertikaler Richtung ndown Punkte im negativen und nup Punkte im positiven Bereich.

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt, siehe auch Seite "Beispiel: Viewports, User coordinates, Marker".
void ucenterlineh (float yu , float x1u , float x2u , int dashlen , int dotlen , int blanklen)
  • yu - y-Koordinate der Linie ("User coordinates"),
  • x1u, x2u - Anfangs- bzw. Endpunkt der Linie ("User coordinates"),
  • dashlen - Länge des längeren Linienstücks (Pixel),
  • dotlen - Länge des kürzeren Linienstücks (Pixel),
  • blanklen - Länge der Zwischenräume (Pixel).
Beispiel:
gi.ucenterlineh (0 , 26.4 , -26.4 , 12 , 2 , 3) ;
// ... zeichnet die "horizontale Mittellinie", die nebenstehend als Ausschnitt aus der Seite "Momentanpol der Schubkurbel" zu sehen ist.

Zeichnen einer "horizontalen Mittellinie" mit der eingestellten "Stroke"-Farbe.

Die Funktion erwartet "User coordinates" für yu, x1u, x2u und Gerätekoordinaten (Pixel) für die 3 Längenangaben dashlen, dotlen, blanklen.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt. Siehe auch strokestyle.

void ucenterlinev (float xu , float y1u , float y2u , int dashlen , int dotlen , int blanklen)
  • xu - x-Koordinate der Linie ("User coordinates"),
  • y1u, y2u - Anfangs- bzw. Endpunkt der Linie ("User coordinates"),
  • dashlen - Länge des längeren Linienstücks (Pixel),
  • dotlen - Länge des kürzeren Linienstücks (Pixel),
  • blanklen - Länge der Zwischenräume (Pixel).
Beispiel:
gi.ucenterlinev (0 , 93.6 , -24 , 12 , 2 , 3) ;
// ... zeichnet die "vertikale Mittellinie", die nebenstehend als Ausschnitt aus der Seite "Momentanpol der Schubkurbel" zu sehen ist.

Zeichnen einer "vertikalen Mittellinie" mit der eingestellten "Stroke"-Farbe.

Die Funktion erwartet "User coordinates" für xu, y1u, y2u und Gerätekoordinaten (Pixel) für die 3 Längenangaben dashlen, dotlen, blanklen.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt. Siehe auch strokestyle.

Zeichnen mit "User coordinates" (mit sofortiger Ausgabe)
void udrawline (float x1u , float y1u , float x2u , float y2u , String strokecol) Siehe auch strokestyle. Wenn eine Farbe (5. Parameter) vorgegeben wird, dann bleibt diese Einstellung auch für eventuell nachfolgende Zeichenaktionen ("strokes") eingestellt.
  • x1u, y1u - Koordinaten des Startpunktes für die gerade Linie,
  • x2u, y2u - Koordinaten des Endpunktes der geraden Linie,
  • strokecol (optional) - Farbe der Linie (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel: gi.udrawline (3.7 , 6.1 , 25 , 30.9 , "red") ;

Zeichnen einer geraden Line von der Position (x1u,y1u) bis zur Position (x2u,y2u).

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

void udrawmarker (float xu , float yu , float markertype , float scalfac , String fillcol , String strokecol)
  • xu, yu - Koordinaten des Marker-Bezugspunktes ("User coordinates").
  • markertype - Typ des Markers aus Marker-Katalog (nebenstehend),
  • scalfac (optional) - Faktor, mit dem die Markergröße beeinflusst werden kann (Standardwert: 1).
  • fillcol (optional) - Farbe für die Füllung des Markers (Standardwert: Gerade gültige Füllfarbe).
  • strokecol (optional) - Farbe für die Kontur des Markers (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel: gi.udrawmarker (3.2 , 8.5 , gi.MKRARR , 0.8 , "red") ;

Zeichnen eines Markers , dessen Größe in Gerätekoordinaten vorgegeben ist, an einer durch "User coordinates" bestimmten Position.

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

Siehe auch fillstyle und strokestyle. Wenn Farben (5. Parameter bzw. 6. Parameter) vorgegeben werden, dann bleiben diese Einstellungen auch für eventuell nachfolgende Zeichenaktionen ("fills" und "strokes") eingestellt.
void udrawtext (String text , float xu , float yu , String fontstring)

Die Postion der Textausgabe kann durch Einstellungen über textalign und textbaseline modifiziert werden, die Farbe über fillstyle.

Beispiele für Fontstrings: "bold 18px Times Roman", "italic 12pt monospaced".

  • text - Text, der ausgegeben werden soll.
  • xu, yu - Koordinaten des Text-Bezugspunktes ("User coordinates").
  • fontstring Optional) - Beschreibung des zu verwendenden Textfonts (Standard ist der gerade gültige Textfont).
Beispiel: gi.udrawtext ("Beispiel" , 20 , 30 , "12pt sans-serif") ;

Ausgabe eines Textes an einer durch "User coordinates" bestimmten Position. Die Farbe entspricht der (z. B. mit fillstyle eingestellten) "Füllfarbe".

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

void udrawfrect (float x1u , float y1u , float x2u , float y2u , String fillcol) Siehe auch fillstyle. Wenn eine Farbe (5. Parameter) vorgegeben wird, dann bleibt diese Einstellung auch für eventuell nachfolgende Zeichenaktionen ("fills") eingestellt.
  • x1u, y1u - Koordinaten eines Eckpunktes des Rechtecks,
  • x2u, y2u - Koordinaten des diagonal gegenüber liegenden Eckpunktes,
  • fillcol (optional) - Farbe der Rechteckfläche (Standardwert: Gerade gültige "fill"-Farbe).
Beispiel: gi.udrawfrect (3.7 , 6.1 , 25 , 30.9 , "red") ;

Zeichnen einer (randlosen) Rechteckfüllung mit den sich diagonal gegenüber liegenden Eckpunkten (x1u,y1u) und (x2u,y2u).

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

void udrawfcirc (float xu , float yu , float r , String fillcol , String strokecol)
  • xu, yu - Koordinaten des Kreis-Mittelpunktes ("User coordinates").
  • r - Radius des Kreises,
  • fillcol (optional) - Farbe für die Füllung des Kreises (Standardwert: Gerade gültige Füllfarbe).
  • strokecol (optional) - Farbe für die Kontur des Kreises (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel: gi.udrawfcirc (3.2 , 8.5 , 2 , "red") ;

Zeichnen eines mit Farbe gefüllten Kreises.

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

Siehe auch fillstyle und strokestyle. Wenn Farben (4. Parameter bzw. 5. Parameter) vorgegeben werden, dann bleiben diese Einstellungen auch für eventuell nachfolgende Zeichenaktionen ("fills" und "strokes") eingestellt.
void udrawfpie (float xu , float yu , float r , float phi1 , float phi2 , String fillcol , String strokecol)
  • xu, yu - Koordinaten des Mittelpunktes des Kreissegments ("User coordinates").
  • r - Radius des Kreissegments,
  • phi1 - Startwinkel,
  • phi2 - Endwinkel,
  • fillcol - Farbe für die Füllung des Kreissegments
  • strokecol (optional) - Farbe für die Kontur des Kreissegments (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel: gi.tarc (3.2 , 8.5 , 2 , 0 , Math.PI/3 , "darkblue") ;

Zeichnen eines gefüllten Kreissegments ("Tortenstück") mit dem Mittelpunkt (xu,yu) und dem Radius r. Der Bogen startet beim Winkel phi1 (gemessen IM UHRZEIGERSINN von einer nach rechts gerichteten Geraden - "3−Uhr−Position" -) bis zum (ebenso gemessenen) Winkel phi2.

Die Funktion erwartet "User coordinates".

Siehe auch fillstyle und strokestyle. Die übergebenen Farben (6. Parameter bzw. 7. Parameter) bleiben auch für eventuell nachfolgende Zeichenaktionen ("fills" und "strokes") eingestellt.

Siehe zum Beispiel "Anwendung ebener Transformationen".

void udrawxaxis (float dx , int nleft , int nright , float pleft , float pright , String xname , String strokecol , String txtcol)
  • dx - Länge eines Abschnitts auf der Achse ("User coordinates"),
  • nleft, nright - Anzahl der Abschnitte auf der Achse im negativen bzw. positiven Bereich,
  • pleft - Länge ("User coordinates"), um die die Achse im negativen Bereich (über die nleft Abschnitte hinaus) verlängert werden soll,
  • pright - Länge ("User coordinates"), um die die Achse im positiven Bereich (über die nright Abschnitte hinaus) verlängert werden soll, bevor sich die Pfeilspitze anschließt,
  • xname - Name, mit der die Achse an der Pfeilspitze beschriftet werden soll,
  • strokecol (optional) - Farbe für die Koordinatenachse (Standard ist die gerade gültige "Strokecolor"),
  • txtcol (optional) - Farbe für die Beschriftung (Standard ist die gerade gültige "Fillcolor").
Beispiel: gi.udrawxaxis (25 , 1 , 2 , 5 , 10 , "x" , "black" , "black") ;

... erzeugt eine Achse mit einem Abschnitt (Länge: 25) nach links und zwei Abschnitten nach rechts, verlängert nach links um 5 und nach rechts um 10 Einheiten (alles "User coordinates") und setzt rechts eine Pfeilspitze dran:

Zeichnen einer horizontalen Achse mit Abschnitten der Länge dx, nleft im negativen Bereich und nright im positiven Bereich, die nach links um pleft und nach rechts um pright verlängert wird. Rechts schließt sich eine Pfeilspitze an, die mit xname beschriftet wird.

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

Die "Ticks" auf der Achse und die Pfeilspitze sind Marker in Standardgröße, die bei Änderung der Viewportgröße ihre eigene Größe beibehalten. Die "Ticks" werden beschriftet mit einem Font, der über setaxfont eingestellt werden kann (Standardeinstellung ist "normal 12px Times Roman"), die Pfeilsitze wird beschriftet mit einem Font, der über setaxnamefont eingestellt werden kann (Standardeinstellung ist "italic bold 20px Times Roman"). Siehe auch Seite "Beispiel: Viewports, User coordinates, Marker". Wenn Farben vorgegeben werden, dann bleiben diese Einstellungen auch für eventuell nachfolgende Zeichenaktionen ("strokes" bzw. "fills") eingestellt.
void udrawyaxis (float dy , int ndown , int nup , float pdown , float pup , String yname , String strokecol , String txtcol)
  • dy - Länge eines Abschnitts auf der Achse ("User coordinates"),
  • ndown, nup - Anzahl der Abschnitte auf der Achse im negativen bzw. positiven Bereich,
  • pdown - Länge ("User coordinates"), um die die Achse im negativen Bereich (über die ndown Abschnitte hinaus) verlängert werden soll,
  • pup - Länge ("User coordinates"), um die die Achse im positiven Bereich (über die nup Abschnitte hinaus) verlängert werden soll, bevor sich die Pfeilspitze anschließt,
  • yname - Name, mit der die Achse an der Pfeilspitze beschriftet werden soll,
  • strokecol (optional) - Farbe für die Koordinatenachse (Standard ist die gerade gültige "Strokecolor"),
  • txtcol (optional) - Farbe für die Beschriftung (Standard ist die gerade gültige "Fillcolor").
Beispiel: gi.udrawyaxis (2.5 , 3 , 2 , 3 , 2 , "y" , "black" , "black") ;

... erzeugt eine Achse mit drei Abschnitten (Länge jeweils 2,5) nach unten und zwei Abschnitten nach oben, verlängert nach unten um 3 und nach oben um 2 Einheiten (alles "User coordinates") und setzt oben eine Pfeilspitze dran (nebenstehendes Bild).

Zeichnen einer vertikalen Achse mit Abschnitten der Länge dy, ndown im negativen Bereich und nup im positiven Bereich, die nach unten um pdown und nach oben um pup verlängert wird. Oben schließt sich eine Pfeilspitze an, die mit yname beschriftet wird.

Die Funktion erwartet "User coordinates" mit Bezug auf das über setusercoordsa oder setusercoordsi eingestellte Koordinatensystem.

Die "Ticks" auf der Achse und die Pfeilspitze sind Marker in Standardgröße, die bei Änderung der Viewportgröße ihre eigene Größe beibehalten. Die "Ticks" werden beschriftet mit einem Font, der über setaxfont eingestellt werden kann (Standardeinstellung ist "normal 12px Times Roman"), die Pfeilsitze wird beschriftet mit einem Font, der über setaxnamefont eingestellt werden kann (Standardeinstellung ist "italic bold 20px Times Roman"). Siehe auch Seite "Beispiel: Viewports, User coordinates, Marker". Wenn Farben vorgegeben werden, dann bleiben diese Einstellungen auch für eventuell nachfolgende Zeichenaktionen ("strokes" bzw. "fills") eingestellt.
void udrawcoordsys2D (String xname , String yname , String strokecol , String txtcol)
  • xname - Name, mit der die horizontale Achse an der Pfeilspitze beschriftet werden soll,
  • yname - Name, mit der die vertikale Achse an der Pfeilspitze beschriftet werden soll,
  • strokecol (optional) - Farbe für das Zeichnen des Koordinatensystems (Standard ist die gerade gültige "Strokecolor"),
  • txtcol (optional) - Farbe für die Beschriftung (Standard ist die gerade gültige "Fillcolor").
Beispiel: gi.udrawcoordsys2D ("x" , "y" , "black" , "black") ;

... erzeugt ein Koordinatensystem, wie es in der Abbildung gezeigt wird, allerdings abhängig von Canvas-Abmessungen und Grenzen der "User coordinates".

Zeichnen eines kartesischen Koordinatensystems, deren Pfeilspitzen mit xname und yname beschriftet werden.

Der Canvas wird weitgehend komplett ausgefüllt, der Nullpunkt liegt dort, wo er über setusercoordsa oder setusercoordsi platziert wurde. Der mit diesen Funktionen eventuell eingestellte "Rand" bleibt unberücksichtigt.

Die "Ticks" (auf jeder Achse ein "Tick") und die Pfeilspitze sind Marker in Standardgröße, die bei Änderung der Viewportgröße ihre eigene Größe beibehalten. Die "Ticks" werden beschriftet mit einem Font, der über setaxfont eingestellt werden kann (Standardeinstellung ist "normal 12px Times Roman"), die Pfeilsitze wird beschriftet mit einem Font, der über setaxnamefont eingestellt werden kann (Standardeinstellung ist "italic bold 20px Times Roman"). Wenn Farben vorgegeben werden, dann bleiben diese Einstellungen auch für eventuell nachfolgende Zeichenaktionen ("strokes" bzw. "fills") eingestellt.
void udrawdashedcircle (float xuc , float yuc , float r , int ndash)
  • xu, yu - Koordinaten des Mittelpunktes des Kreises ("User coordinates").
  • r - Radius des Kreises,
  • ndash - Anzahl der "Strichelchen".
Beispiel:
gi.udrawdashedcircle (0 , 0 , 24 , 50) ;
// ... zeichnet den "gestrichelten Kreis", der nebenstehend als Ausschnitt aus der Seite "Momentanpol der Schubkurbel" zu sehen ist.

Zeichnen eines "gestrichelten" Kreises, ndash ist die Anzahl der "Strichelchen" bzw. der "Zwischenräume" mit der eingestellten "Stroke"-Farbe.

Die Funktion erwartet "User coordinates".

Siehe auch strokestyle.

Koordinaten umrechnen, Maus-Aktionen
Object canvascoord (Object e) Umrechnung der von einem "Mouse-Event" gelieferten Seiten-Koordinaten auf Canvas-Koordinaten. Funktion wird in der Regel mit nachfolgendem Aufruf von cursor2u verwendet, siehe zum Beispiel "Mausbewegungen und User coordinates, Fangraster"
  • e - "Event object" einer Mausaktion, das die Seitenkoordinaten beim Eintritt des Ereignisses als e.pageX und e.pageY enthalten muss
Return-Wert: Objekt, das die beiden Koordinaten als Canvas-Koordinaten abliefert (Pixel-Koordinaten mit Ursprung in der linken oberen Ecke des Canvas).

Beispiel: var cxy = gi.canvascoord (e) ;
// ... liefert die Koordinaten als cxy.x und cxy.y ab.
Object cursor2u (int xc , int xc) Umrechnung von Canvas-Koordinaten (Pixel mit Ursprung in der linken oberen Ecke des Canvas) auf "User coordinates" entsprechend dem über setusercoordsa oder setusercoordsi eingestellten Koordinatensystem. Funktion wird in der Regel nach Aufruf von canvascoord verwendet, siehe zum Beispiel "Mausbewegungen und User coordinates, Fangraster"
  • xc , yc - Pixel-Koordinaten (Ursprung des Koordinatensystems in der linken oberen Ecke des Canvas), wie sie zum Beispiel von canvascoord abgeliefert werden.
Return-Wert: Objekt, das die beiden Koordinaten als "User coordinates" enthält.

Beispiel: var ucoor = gi.cursor2u (xc , yc) ;
// ... liefert die Koordinaten als ucoor.x und ucoor.y ab.
void setcatchraster (float xcrast , float ycrast) Einstellen des Rasters, auf das Mausklicks gefangen werden sollen (Rasterweite 0 bedeutet: "Kein Fangraster, Koordinaten werden wie geklickt verwendet"). Siehe zum Beispiel "Mausbewegungen und User coordinates, Fangraster"
  • xcrast, ycrast - Rasterweiten in horizontaler bzw. vertikaler Richtung ("User coordinates").
Beispiel: gi.setcatchraster (0.5 , 0.5) ;
Object catchpoint (float xu , float yu) Umrechnen eines Punktes, der in "User coordinates" gegeben ist, in einen Punkt (ebenfalls "User coordinates"), der auf dem eingestellten "Fangraster" liegt (nächstgelegener Rasterpunkt). Siehe auch setcatchraster und das Beispiel auf der Seite "Mausbewegungen und User coordinates, Fangraster"
  • xu, yu - Koordinaten des umzurechnenden Punktes ("User coordinates").
Return-Wert: Objekt, das die beiden Koordinaten als "User coordinates" eines Rasterpunktes enthält.

Beispiel: var xycatch = gi.catchpoint (xu , yu) ;
// ... liefert die Koordinaten als xycatch.x und xycatch.y ab.
Transformationen ("vorbereitende t...-Funktionen")
void tinit () Initialisieren der Transformationsmatrizen (2D und 3D) als Einheitsmatrizen, so dass zunächst die "t..-Funktionen" wie die "u...-Funktionen" arbeiten Siehe zum Beispiel "Anwendung ebener Transformationen"
Beispiel: gi.tinit () ;
void trot (float xu , float yu , float phi) Ebene Transformation: Rotation um den Punkt (xu,yu) um den Winkel phi. Die Transformation kommt zu eventuell vorher eingestellten Transformationen hinzu. Siehe zum Beispiel "Anwendung ebener Transformationen"
  • xu, yu - Koordinaten des Punktes, um den gedreht wird ("User coordinates"),
  • phi - Rotationswinkel (Bogenmaß), positiv entgegen dem Uhrzeigersinn.
Beispiel: gi.trot (100 , 200 , Math.PI/4) ;
Zeichnen mit "ut...-Funktionen" (Funktionen für "Drawing path")
void utmoveto (float x , float y)

Bewegen des imaginären Zeichenstifts zur vorgegebenen Position (Definition einer Startposition für nachfolgende Aktionen).

Die Funktion erwartet "User coordinates", die vor dem Ausführen der Aktion der aktuellen Transformation unterworfen werden.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt, Funktion arbeitet wie umoveto, unterwirft die übergebenen Koordinaten allerdings der aktuell gültigen Transformation.
  • x, y - Koordinaten des Zielpunktes (Startpunkt für eine nachfolgende Aktion).
Beispiel: gi.utmoveto (22.8 , 33.02) ;
void utlineto (float x , float y)

Zeichnen einer geraden Linie von der aktuellen zur vorgegebenen Position.

Die Funktion erwartet "User coordinates", die vor dem Ausführen der Aktion der aktuellen Transformation unterworfen werden.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt, Funktion arbeitet wie ulineto, unterwirft die übergebenen Koordinaten allerdings der akktuell gültigen Transformation.
  • x, y - Koordinaten des Zielpunktes für die gerade Linie.
Beispiel: gi.utlineto (25.8 , 31.7) ;
void utarc (float xt , float yt , float r , float phi1 , float phi2 , boolean anticlock)
  • xt, yt - Koordinaten des Mittelpunktes des Kreisbogens ("User coordinates").
  • r - Radius des Kreisbogens,
  • phi1 - Startwinkel,
  • phi2 - Endwinkel,
  • anticlock - "Zeichenrichtung" von phi1 nach phi2.
Beispiel: gi.utarc (3.2 , 8.5 , 2 , Math.PI/4 , Math.PI , true) ;

Zeichnen eines Kreisbogens mit dem Mittelpunkt (xt,yt) und dem Radius r. Der Bogen startet beim Winkel phi1 (gemessen IM UHRZEIGERSINN von einer nach rechts gerichteten Geraden - "3−Uhr−Position" -) bis zum (ebenso gemessenen) Winkel phi2. Wenn für anticlock der Wert true vorgegeben ist, wird entgegen dem Uhrzeigersinn gezeichnet, bei false im Uhrzeigersinn.

Die Funktion erwartet "User coordinates", die vor dem Ausführen der Aktion der aktuellen Transformation unterworfen werden.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt. Achtung: Wenn der Startpunkt für utarc nicht die gerade gültige Position im "Path" ist, wird eine Gerade bis zum Startpunkt gezogen (dies kann nur durch ein utmoveto verhindert werden).

Siehe zum Beispiel "Anwendung ebener Transformationen".

Zeichnen mit "ut...-Funktionen" (mit sofortiger Ausgabe)
void utdrawfcirc (float xt , float yt , float r , float fillcol , float strokecol)
  • xt, yt - Koordinaten des Kreis-Mittelpunktes ("User coordinates").
  • r - Radius des Kreises,
  • fillcol (optional) - Farbe für die Füllung des Kreises (Standardwert: Gerade gültige Füllfarbe).
  • strokecol (optional) - Farbe für die Kontur des Kreises (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel: gi.utdrawfcirc (3.2 , 8.5 , 2 , "red") ;

Zeichnen eines mit Farbe gefüllten Kreises.

Die Funktion erwartet "User coordinates", die vor dem Ausführen der Aktion der aktuellen Transformation unterworfen werden.

Siehe auch fillstyle und strokestyle. Wenn Farben (4. Parameter bzw. 5. Parameter) vorgegeben werden, dann bleiben diese Einstellungen auch für eventuell nachfolgende Zeichenaktionen ("fills" und "strokes") eingestellt.
void utdrawhdashedline (float y , float x1 , float x2 , int dashlen , int blanklen , String strokecol)
  • y - y-Koordinate des Anfangs- und des Endpunktes ("User coordinate"),
  • x1, x2 - x-Koordinaten des Anfangs- bzw. Endpunktes ("User coordinates"),
  • dashlen - Länge der "Strichelchen" in "Viewport coordinates" (Pixel),
  • blanklen - Länge des "Zwischenraums" in "Viewport coordinates" (Pixel),
  • strokecol (optional) - Farbe der Linie (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel:

      gi.trot (0 , 0 , Math.PI/4) ; // Rotation um Nullpunkt
      gi.utdrawhdashedline (0 , -2 , 2 , 10 , 5 , "red") ;
// ... zeichnet die in der Skizze zu sehende rote Line

Zeichnen einer horizontalen gestrichelten Linie.

Die Funktion erwartet "User coordinates", die vor dem Ausführen der Aktion der aktuellen Transformation unterworfen werden. Auf diese Weise kann die horizontale Linie eine beliebige Lage bekommen.

Siehe auch strokestyle. Wenn eine Farbe (6. Parameter) vorgegeben wird, dann bleibt diese Einstellung auch für eventuell nachfolgende Zeichenaktionen ("strokes") eingestellt.
Projektionen verwalten
int prgetprojectiontype () Abfragen des gerade gültigen Projektionstyps Siehe "Beispielprogramm Projektion 1"
Return-Wert: Projektionstyp, einer der beiden Werte PROJ_CENTRAL oder PROJ_PARALLEL.

Beispiel: var prtype = gi.prgetprojectiontype () ;
Object prgetviewdirection () Abfragen der für die Parallelprojektion eingestellten "Blickrichtung" Siehe "Beispielprogramm Projektion 1"
Return-Wert: Objekt, das die drei Koordinaten des Blickrichtungs-Vektors enthält.

Beispiel: var viewdir = gi.prgetviewdirection () ;
liefert die Koordinaten als viewdir.x, viewdir.y und viewdir.z ab.
Object prgeteyepoint () Abfragen des für die Zentralprojektion eingestellten "Eye points" Siehe "Beispielprogramm Projektion 1"
Return-Wert: Objekt, das die drei Koordinaten des "Eye point"-Vektors enthält.

Beispiel: var eyept = gi.prgeteyepoint () ;
liefert die Koordinaten als eyept.x, eyept.y und eyept.z ab.
Object prgetreferencepoint () Abfragen des für die Zentralprojektion und die Parallelprojektion eingestellten Referenzpunktes der Projektionsebene Siehe "Beispielprogramm Projektion 1"
Return-Wert: Objekt, das die drei Koordinaten des Referenzpunkt-Vektors enthält.

Beispiel: var refpt = gi.prgetreferencepoint () ;
liefert die Koordinaten als refpt.x, refpt.y und refpt.z ab.
void prsetparallel (float xwd , float ywd , float zwd , float xwr , float ywr , float zwr)
  • xwd, ywd, zwd (optional) - Koordinaten des Vektors der "Blickrichtung" ("World coordinates").
  • xwr, ywr, zwr (optional) - Koordinaten des Referenzpunktes der Projektionsebene ("World coordinates").
Beispiel: gi.prsetparallel (3 , -1 , 2 , 0 , 0 , 0) ;

Die Funktion kann auch mit nur drei Parametern oder ohne Parameter aufgerufen werden, dann bleiben entweder der Referenzpunkt oder Blickrichtungs-Vektor und Referenzpunkt ungeändert, der Projektionstyp "Parallelprojektion2 wird auf jeden Fall eingestellt.

Einstellen einer Parallelprojektion für die folgenden Zeichenaktionen mit "World coordinates".

Siehe "Beispielprogramm Projektion 1"
void prsetcentral (float xwe , float ywe , float zwe , float xwr , float ywr , float zwr)
  • xwe, ywe, zwe - Koordinaten des Vektors des "Eye points" ("World coordinates").
  • xwr, ywr, zwr - Koordinaten des Referenzpunktes der Projektionsebene ("World coordinates").
Beispiel: gi.prsetcentral (3000 , -1000 , 2000 , 0 , 0 , 0) ;

Die Funktion kann auch mit nur drei Parametern oder ohne Parameter aufgerufen werden, dann bleiben entweder der Referenzpunkt oder "Eye point" und Referenzpunkt ungeändert, der Projektionstyp "Zentralprojektion" wird auf jeden Fall eingestellt.

Einstellen einer Zentralprojektion für die folgenden Zeichenaktionen mit "World coordinates".

Siehe "Beispielprogramm Projektion 1"
float prgetangleofview () Abfragen des "Kamera-Winkels" Siehe Seite "Spezielle Probleme der Zentralprojektion, der Kamera-Winkel"
Return-Wert: "Kamera-Winkel" im Bogenmaß.

Beispiel: var ang = gi.prgetangleofview () ;
liefert unmittelbar nach Erzeugen des Objekts gi den voreingestellten Wert π/4.
void prsetangleofview (float angle) Festlegen des "Kamera-Winkels" Siehe Seite "Spezielle Probleme der Zentralprojektion, der Kamera-Winkel"
  • angle - Neuer Kamera-Winkel (Angabe im Bogenmaß).
Beispiel: gi.prsetangleofview (Math.PI/6) ;
Object getlightsource () Abfragen des Orts der für die Helligkeits-Steuerung eingestellten Lichtquelle Siehe Seite "3D-Flächenmodelle mit unterschiedlicher Lightness zeichnen"
Return-Wert: Objekt, das die drei Koordinaten des Lichtquelle enthält.

Beispiel: var ls = gi.getlightsource () ;
liefert die Koordinaten als ls.x, ls.y und ls.z ab.
void setlightsource (float xwl , float ywl , float zwl)
  • xwl, ywl, zwl - Koordinaten des Vektors zur Lichtquelle ("World coordinates").
Beispiel: gi.setlightsource (3000 , 1000 , 2000) ;

Festlegen des Punktes für die Lichtquelle ("World coordinates"), die für die Helligkeits-Steuerung verantwortlich ist.

Siehe Seite "3D-Flächenmodelle mit unterschiedlicher Lightness zeichnen"
Zeichnen mit "World coordinates" (mit sofortiger Ausgabe)
void wdrawline (float x1 , float y1 , float z1 , float x2 , float y2 , float z2 , String strokecol)
  • x1, y1, z1 - Koordinaten des Startpunktes ("World coordinates").
  • x2, y2, z2 - Koordinaten des Zielpunktes ("World coordinates").
  • strokecol (optional) - Farbe für die Linie (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel: gi.wdrawline (3.2 , 8.5 , 0 , 4 , 2 , 10 , "maroon") ;

Zeichnen einer geraden Linie mit "World coordinates", die mit der aktuellen Projektion auf "User coordinates" umgerechnet werden.

Siehe auch strokestyle. Wenn eine Farbe (7. Parameter) vorgegeben wird, dann bleibt diese Einstellung auch für eventuell nachfolgende Zeichenaktionen ("strokes") eingestellt.
void wdrawfpolygon (Array x , Array y , Array z , String fillcol , String strokecol)
  • x - x-Koordinaten aller Eckpunkte (Array mit "World coordinates").
  • y - y-Koordinaten aller Eckpunkte (Array mit "World coordinates").
  • z - z-Koordinaten aller Eckpunkte (Array mit "World coordinates").
  • fillcol (optional) - Farbe für die Füllung (Standardwert: Gerade gültige "Fill"-Farbe).
  • strokecol (optional) - Farbe für die Kontur (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel:
var xcoor = new Array (5000 , 0 , 0) ;
var ycoor = new Array (0 , 8000 , 0) ;
var zcoor = new Array (0 , 0 , 4000) ;
gi.wdrawfpolygon (xcoor , ycoor , zcoor , "yellow" , "maroon") ;

Zeichnen eines mit Farbe gefüllten Polygons, das mit "World coordinates" beschrieben wird, die mit der aktuellen Projektion auf "User coordinates" umgerechnet werden.

Siehe auch strokestyle und fillstyle. Wenn Farben (4. bzw. 5. Parameter) vorgegeben werden, dann bleiben diese Einstellungen auch für eventuell nachfolgende Zeichenaktionen ("strokes" bzw. "fills") eingestellt.
void wdrawfarea (Array points , int np , String fillcol , String strokecol)
  • points - (Zweidimensionales) Array mit np Koordinatentripeln ("World coordinates"),
  • np - Anzahl der Punkte in points für das Zeichnen eines geschlossenen Polygons,
  • fillcol (optional) - Farbe für die Füllung (Standardwert: Gerade gültige "Fill"-Farbe),
  • strokecol (optional) - Farbe für die Kontur (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel:
      var xyz = [
            [-2.064572881 , -1.5   , 1.275976213] ,
            [0.788593338  , 2.427050983 ,  1.275976213] ,
            [2.551952425  , 0    ,  1.275976213] ] ;
            gi.wdrawfarea (xyz , 3 , "red", "black") ;
// ... zeichnet ein Dreieck

Zeichnen eines mit Farbe gefüllten geschlossenen Polygons, das mit "World coordinates" beschrieben wird, die mit der aktuellen Projektion auf "User coordinates" umgerechnet werden.

Siehe auch strokestyle und fillstyle. Wenn Farben (3. bzw. 4. Parameter) vorgegeben werden, dann bleiben diese Einstellungen auch für eventuell nachfolgende Zeichenaktionen ("strokes" bzw. "fills") eingestellt.

Siehe zum Beispiel Seite "Modell mehrfach kopieren, Zoom and Move".

3D-Transformationen ("vorbereitende t...-Funktionen")
void tinit () Initialisieren der Transformationsmatrizen (2D und 3D) als Einheitsmatrizen, so dass zunächst die "t..-Funktionen" wie die "u...-Funktionen" bzw. wie die "w...-Funktionen" arbeiten Siehe zum Beispiel "Beispiel-Programm Projektion 2"
Beispiel: gi.tinit () ;
void t3translation (float xw , float yw , float zw) Translation um einen Vektor mit den Koordinaten xw, yw, zw ("World coordinates"). Die Transformation kommt zu eventuell vorher eingestellten Transformationen hinzu. Siehe zum Beispiel "Beispielprogramm Projektion 2"
  • xw, yw, zw - Koordinaten des Translationsvektors.
Beispiel: gi.t3translation (-1000 , 0 , 1000) ;
void t3rotation (float phi , integer axis) Rotation um eine der drei Achsen des 3D-Koordinatensystems um den Winkel phi. Die Transformation kommt zu eventuell vorher eingestellten Transformationen hinzu. Siehe zum Beispiel "Beispielprogramm Projektion 2"
  • phi - Rotationswinkel (Bogenmaß), positiv in Richtung der Finger der rechten Hand, wenn Daumen in Achsenrichtung zeigt,
  • axis - Drehachse, einer der Werte AXIS_X, AXIS_Y oder AXIS_Z
Beispiel: gi.t3rotation (Math.PI/18 , gi.AXIS_Y) ;
void t3transabs (float tx , float ty , float tz , float phi , int axis , float sx , float sy , float sz)
  • tx, ty, tz - Koordinaten des Translationsvektors,
  • phi - Rotationswinkel (Bogenmaß), positiv in Richtung der Finger der rechten Hand, wenn Daumen in Achsenrichtung zeigt,
  • axis - Drehachse, einer der Werte AXIS_X, AXIS_Y oder AXIS_Z,
  • sx, sy, sz - Skalierungsfaktoren.
Beispiel:
   gi.t3transabs (20 , 30 , -50 , Math.PI/4 , gi.AXIS_Z , 5 , 4 , 4) ;
3D-Transformation (absolut) in dieser Reihenfolge: Skalierung bezueglich des Nullpunktes mit sx, sy, sz, Drehung um den Nullpunkt um den Winkel phi um eine Koordinatenachse, anschliessend Translation um tx, ty, tz. Alle vorab vorgenommenen Transformationen bleiben unberuecksichtigt. Siehe zum Beispiel Seite "Modell kopieren, Zoom and Move"
Zeichnen mit "wt...-Funktionen" (Funktionen für "Drawing path")
void wtline (float x1 , float y1 , float z1 , float x2 , float y2 , float z2)
  • x1, y1, z1 - Koordinaten des Startpunktes ("World coordinates").
  • x2, y2, z2 - Koordinaten des Zielpunktes ("World coordinates").
Beispiel: gi.wtline (3.2 , 8.5 , 0 , 4 , 2 , 10 , "maroon") ;

Zeichnen einer geraden Linie mit "World coordinates", die vor dem Ausführen der Aktion der aktuellen Transformation unterworfen werden und danach mit der aktuellen Projektion auf "User coordinates" umgerechnet werden.

Keine unmittelbare Ausgabe, Befehl wird im "Path" gesammelt, siehe auch Seite "3D-Drahtmodelle zeichnen und animieren".
void wtmarker (float xw , float yw , float zw , int markertype , float scalfac)
  • xw, yw, zw - Koordinaten des Marker-Bezugspunktes ("World coordinates"), die vor dem Zeichnen der aktuellen Transformation unterworfen und auf "User coordinates" umgerechnet werden,
  • markertype - Typ des Markers aus Marker-Katalog (nebenstehend),
  • scalfac (optional) - Faktor, mit dem die Markergröße beeinflusst werden kann (Standardwert: 1).
Beispiel: gi.wtmarker (10 , 8 , 12 , gi.MKCIRCLE , 2) ;

Zeichnen eines Markers , dessen Größe in Gerätekoordinaten vorgegeben ist, an einer durch "World coordinates" bestimmten Position.

Keine unmittelbare Aktion, Befehl wird im "Path" gesammelt, siehe auch Seite "Marker zeichnen an User-coordinates-Positionen" und Seite "3D-Drahtmodelle zeichnen und animieren".
Zeichnen mit "wt...-Funktionen" (mit sofortiger Ausgabe)
void wtdrawline (float x1 , float y1 , float z1 , float x2 , float y2 , float z2 , String strokecol)
  • x1, y1, z1 - Koordinaten des Startpunktes ("World coordinates").
  • x2, y2, z2 - Koordinaten des Zielpunktes ("World coordinates").
  • strokecol (optional) - Farbe für die Linie (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel: gi.wtdrawline (3.2 , 8.5 , 0 , 4 , 2 , 10 , "maroon") ;

Zeichnen einer geraden Linie mit "World coordinates", die vor dem Ausführen der Aktion der aktuellen Transformation unterworfen werden und danach mit der aktuellen Projektion auf "User coordinates" umgerechnet werden.

Siehe auch strokestyle. Wenn eine Farbe (7. Parameter) vorgegeben wird, dann bleibt diese Einstellung auch für eventuell nachfolgende Zeichenaktionen ("strokes") eingestellt.
void wtdrawfpolygon (Array x , Array y , Array z , String fillcol , String strokecol)
  • x - x-Koordinaten aller Eckpunkte (Array mit "World coordinates").
  • y - y-Koordinaten aller Eckpunkte (Array mit "World coordinates").
  • z - z-Koordinaten aller Eckpunkte (Array mit "World coordinates").
  • fillcol (optional) - Farbe für die Füllung (Standardwert: Gerade gültige "Fill"-Farbe).
  • strokecol (optional) - Farbe für die Kontur (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel:
var xcoor = new Array (5000 , 0 , 0) ;
var ycoor = new Array (0 , 8000 , 0) ;
var zcoor = new Array (0 , 0 , 4000) ;
gi.wtdrawfpolygon (xcoor , ycoor , zcoor , "yellow" , "maroon") ;

Zeichnen eines mit Farbe gefüllten Polygons, das mit "World coordinates" beschrieben wird, die vor dem Ausführen der Aktion der aktuellen Transformation unterworfen werden und danach mit der aktuellen Projektion auf "User coordinates" umgerechnet werden.

Siehe auch strokestyle und fillstyle. Wenn Farben (4. bzw. 5. Parameter) vorgegeben werden, dann bleiben diese Einstellungen auch für eventuell nachfolgende Zeichenaktionen ("strokes" bzw. "fills") eingestellt.
void wtdrawfarea (Array points , int np , String fillcol , String strokecol)
  • points - (Zweidimensionales) Array mit np Koordinatentripeln ("World coordinates"),
  • np - Anzahl der Punkte in points für das Zeichnen eines geschlossenen Polygons,
  • fillcol (optional) - Farbe für die Füllung (Standardwert: Gerade gültige "Fill"-Farbe),
  • strokecol (optional) - Farbe für die Kontur (Standardwert: Gerade gültige "Stroke"-Farbe).
Beispiel:
      var xyz = [
            [-2.064572881 , -1.5   , 1.275976213] ,
            [0.788593338  , 2.427050983 ,  1.275976213] ,
            [2.551952425  , 0    ,  1.275976213] ] ;
            gi.wtdrawfarea (xyz , 3 , "red", "black") ;
// ... zeichnet ein Dreieck

Zeichnen eines mit Farbe gefüllten geschlossenen Polygons, das mit "World coordinates" beschrieben wird, die vor dem Ausführen der Aktion der aktuellen Transformation unterworfen werden und danach mit der aktuellen Projektion auf "User coordinates" umgerechnet werden.

Siehe auch strokestyle und fillstyle. Wenn Farben (3. bzw. 4. Parameter) vorgegeben werden, dann bleiben diese Einstellungen auch für eventuell nachfolgende Zeichenaktionen ("strokes" bzw. "fills") eingestellt.

Siehe zum Beispiel Seite "3D-Flächenmodelle zeichnen"

void wtdrawcolarea (Array points , int np , String fillcol)
  • points - (Zweidimensionales) Array mit np Koordinatentripeln ("World coordinates"),
  • np - Anzahl der Punkte in points für die Definition des geschlossenes Polygons, das coloriert werden soll,
  • fillcol (optional) - Farbe für die Füllung (Standardwert: Gerade gültige "Fill"-Farbe).
Beispiel:
      var xyz = [
            [-2.064572881 , -1.5   , 1.275976213] ,
            [0.788593338  , 2.427050983 ,  1.275976213] ,
            [2.551952425  , 0    ,  1.275976213] ] ;
            gi.wtdrawcolarea (xyz , 3 , "red") ;
// ... füllt eine dreieckige Fläche mit roter Farbe

Colorieren (Füllen mit Farbe) eines geschlossenen Polygons, das mit "World coordinates" beschrieben wird, die vor dem Ausführen der Aktion der aktuellen Transformation unterworfen werden und danach mit der aktuellen Projektion auf "User coordinates" umgerechnet werden. Das Polygon selbst (der Rand der Fläche) wird nicht gesondert gezeichnet.

Siehe auch fillstyle. Wenn eine Farbe (3. Parameter) vorgegeben wird, dann bleibt diese Einstellung auch für eventuell nachfolgende Zeichenaktionen ("fills") eingestellt.

Siehe zum Beispiel Seite "3D-Flächenmodelle zeichnen"

Hilfs-Funktionen für Projektion und 3D-Transformation
Object ptlimits (Array xyzw) Berechnen der Grenzen der zweidimensionalen "User coordinates", die bei der Umrechnung eines Arrays von "World coordinates" entstehen, wenn diese der aktuellen 3D-Transformation unterworfen und danach mit der aktuellen Projektion auf 2D-Koordinaten umgerechnet werden. Siehe zum Beispiel Seite "3D-Drahtmodell zeichnen und verwalten"
  • xyzw - Array, das die "World coordinates" als Koordinatentripel enthält.
Beispiel:
      var testxyz = [
            [-100  , 1120  ,  133] ,
            [ 200  ,  122  , -222] ,
            [ 321  ,  900  ,   33] ,
            [-420  ,  499  ,  424] ] ;
      var limits = gi.ptlimits (testxyzw) ;
// ... und auf limits.xumin, limits.yumin, limits.xumax, limits.yumax stehen die Extremwerte der "User coordinates" nach Transformation und Projektion aller "World coordinates".
float wtsymbdist (Array xyzw , int np) Berechnen des "symbolischen Abstands" des Mittelpunktes eines Polygons vom Betrachter.

Bei eingestellter Zentralprojektion wird das Quadrat des Abstandes des Mittelpunktes vom "Eye point" abgeliefert.

Bei eingestellter Parallelprojektion wird ein vorzeichenbehafteter Wert geliefert, der der mit einem konstanten Faktor multiplizierte Abstand des Mittelpunktes von der Projektionsebene ist.

Siehe zum Beispiel Seite "3D-Flächenmodelle zeichnen"
  • xyzw - Array, das die "World coordinates" des Polygons als Koordinatentripel enthält,
  • np - Anzahl der Koordinatentripel in xyzw.
Beispiel:
      var xyz = [
            [-2.064572881 , -1.5   , 1.275976213] ,
            [0.788593338  , 2.427050983 ,  1.275976213] ,
            [2.551952425  , 0    ,  1.275976213] ] ;
            var dist = gi.wtsymbdist (xyzw , 3) ;
// ... und auf dist steht der "symbolische Abstand" des Dreiecks vom Betrachter.
void sortbyindex (Array area , int ind)

Sortieren (absteigend) eines (zweidimensionalen) Arrays nach den Werten der als Parameter ind vorgegebenen Spalte

Man beachte, dass JavaScript bei Arrays als Parameter eines Funktionsaufrufs immer Übergabe "by reference" realisiert, so dass das Array area geändert zurückgeliefert wird.

Siehe zum Beispiel Seite "3D-Flächenmodelle zeichnen"
  • area - Array, das die zu sortierenden Zeilen enthält,
  • ind - Index der Spalte, nach der sortiert werden soll.
Beispiel:
      var area = [
            [-2.064572881 , 2 , 4 , 5 , "rot"] ,
            [3.788593338  , 4 , 6 , 8 , 0 , "magenta"] ,
            [2.551952425  , 1 , 0 , 2 , "blue"] ] ;
            gi.sortbyindex (area , 0) ;
// ... und auf area wird dieses Feld abgeliefert:
      var area = [
            [3.788593338  , 4 , 6 , 8 , 0 , "magenta"] ,
            [2.551952425  , 1 , 0 , 2 , "blue"] ,
            [-2.064572881 , 2 , 4 , 5 , "rot"] ] ;
void w2wtransform (Array xyzw , float tx , float ty , float tz , float phi , int axis , float s)
  • xyzw - Koordinatentripel, das transformiert werden soll ("World coordinates"),
  • tx, ty, tz - Werte der Translationstransformation für die drei Koordinatenrichtungen,
  • phi - Winkel (Angabe im Bogenmaß) für die Rotationstransformation, positiv in Richtung der Finger der rechten Hand, wenn Daumen in Achsenrichtung zeigt,
  • axis - Drehachse, einer der Werte AXIS_X, AXIS_Y oder AXIS_Z,
  • s - Faktor für die Skalierung.
Beispiel:
      var xyzw = [ 3.5 , 8.21 , -4.4 ] ;
      gi.w2wtransform (xyzw , 2 , 0 , 1 , Math.PI/18 , gi.AXIS_Z , 3) ;

      // ... und auf xyzw stehen die transformierten Koordinaten.

Ein Koordinaten-Tripel xyzw wird in folgender Reihenfolge: transformiert

Skalierung bezüglich des Nullpunktes mit dem Faktor s (alle Koordinaten werden mit s multipliziert).

Rotation um die Achse axis um den Winkel phi.

Translation um die Werte tx, ty und tz in Richung der drei Koordinatenachsen.

Siehe zum Beispiel Seite "Mehrere 3D-Flächenmodelle zeichnen und animieren"
void w2wtransarray (Array xyzw , int ibeg , int iend)

Transformieren der Koordinaten ("World coordinates"), die als Koordinaten-Tripel in einem (zweidimensionalen) Array xyzw gespeichert sind, mit der aktuellen Transformation, wobei nur die Eintragungen von Position ibeg bis iend betroffen sind, abgeliefert wird das geänderte Array wieder auf der Position xyzw.

Siehe zum Beispiel Seite "Modell kopieren, Zoom and Move".
  • xyz - Array, das transformiert werden soll,
  • ibeg (optional) - Position des ersten Koordinatentripels, das transformiert werden soll (Standardwert: 0),
  • ibeg (optional) - Position NACH dem letzten Koordinatentripel, das transformiert werden soll (Standardwert ist das letzte Koordinatentripel des Arrays).
Beispiel:
   gi.w2wtransarray (xyzw , 12) ;
   // ... transformiert ab Position 12 alle Koordinaten
void areacol (Array area , Array xyz)

Im (zweidimensionalen) Array area sind Teilflächen als Folge von Punktnummern gespeichert, die auf 3D-Koordinaten im Array xyz verweisen. Als letzte Information ist in area jeweils eine Farbe gespeichert, die in areacol so ersetzt werden, dass ein Farbverlauf (abhängig von der z-Koordinate von grün über rot bis blau) generiert wird.

Siehe zum Beispiel Seite "3D-Flächen".
  • area - Array, das auf jeder Position eine Fläche durch ein Array von Punkten und einer Farbangabe definiert,
  • xyz - Array, das auf jeder Position ein Array mit den drei Koordinaten eines Punktes enthält.
Beispiel: gi.areacol (area , xyz) ;

(für die Arrays area und xyzw findet man Beispiele bei "sortbyindex" bzw. "wtsymbdist").
void arealight (Array area , Array xyz , float hslcol , float lmin , float lmax , float hslsat)
  • area - Array, das auf jeder Position eine Fläche durch ein Array von Punktnummern und einer Farbangabe definiert,
  • xyz - Array, das auf jeder Position ein Array mit den drei Koordinaten eines Punktes enthält,
  • hslcol (optional) - Farbwert ("Hue" aus dem Bereich 0 ≤ hslcol ≤ 360, Standardwert: 240),
  • lmin (optional) - Minimalwert für die Helligkeit ("Lightness" aus dem Bereich 0 ≤ hslcol ≤ 100, Standardwert: 10),
  • lmax (optional) - Maximalwert für die Helligkeit ("Lightness" aus dem Bereich 0 ≤ hslcol ≤ 100, Standardwert: 90),
  • hslsat (optional) - Sättigung ("Saturation" aus dem Bereich 0 ≤ hslcol ≤ 100, Standardwert: 100),
Beispiel: gi.arealight (area , xyz , 120 , 20 , 80) ;

// ... setzt die Farbwerte für die einzelnen Flächen mit "Hue"-Wert 120 (grün) und Sättigung 100% mit Helligkeitswerten zwischen 20% und 80%

Mit dem (zweidimensionalen) Array area sind Teilflächen als Folge von Punktnummern gespeichert, die auf 3D-Koordinaten im Array xyz verweisen. Als letzte Information ist in area jeweils eine Farbe gespeichert, die in arealight so ersetzt werden, dass die Helligkeit (Lightness) im Bereich lmin...lmax liegt. Die Helligkeit ist umso größer, je kleiner der Winkel der Flächennormalen zur Richtung der Lichtquelle ist. Hue und Satuaration werden wie vorgegeben übernommen.

Siehe auch getlightsource und setlightsource und Seite "3D-Flächenmodelle mit unterschiedlicher Lightness zeichnen".