}
Ein Objekt dieser Klasse wird für Poly und WorkPoly verwendet, siehe NewPoly(), AddPointToPoly(), DrawPoly() usw. Mit der Funktion CopyPoly() kann eine Kopie von Poly erzeugt werden.
JsgPolygon() | Erzeugt ein JsgPolygon |
JsgPolygon.Ok() | gibt true zurück, wenn ein Objekt ein JsgPolygon ist |
JsgPolygon.Is3D() | gibt true zurück, wenn das Polygon 3-dimensional ist |
JsgPolygon.Init() | Löscht die internen Arrays X, Y und Z und setzt Size = 0 |
JsgPolygon.Reset() | Setzt Size = 0 ohne Löschen der internen Arrays X, Y und Z |
JsgPolygon.IsEmpty() | Gibt bei einem Polygon der Länge 0 true zurück |
JsgPolygon.GetFirstPoint3D() | Gibt die 3D Koordinaten des ersten Punktes zurück |
JsgPolygon.GetLastPoint3D() | Gibt die 3D Koordinaten des letzten Punktes zurück |
JsgPolygon.AddPoint() | Fügt die Koordinaten eines Punktes den Arrays X, Y und Z hinzu |
JsgPolygon.AddPoint3D() | Fügt einen 3D Punkt den Arrays X, Y und Z hinzu |
JsgPolygon.AddPoly() | Fügt die Koordinaten eines JsgPolygons den Arrays X, Y und Z hinzu |
JsgPolygon.RemoveLastPoint() | entfernt den letzten Punkt des Polygons |
JsgPolygon.Close() | schliesst das Polygon |
JsgPolygon.IsSamePoint() | vergleicht zwei Punkte zweier Polygone |
JsgPolygon.Copy() | Kopiert ein Polygon in ein bestehendes Polygon oder erzeugt eine neue Kopie |
JsgPolygon.Invert() | Kehrt die Reihenfolge der Punkte im Polygon um |
JsgPolygon.InvertArrays() | Kehrt die Reigenfolge der Punkte dreier Arrays mit den X/Y/Z-Koordinaten um |
JsgPolygon.Roll() | Verschiebt die Reihenfolge der Punkte im Polygon |
JsgPolygon.RollArrays() | Verschiebt die Reihenfolge der Punkte zweier Arrays mit den X/Y/Z-Koordinaten |
Funktionen, welche ein JsgPolygon akzeptieren oder zurückgeben:
MakeRectPolygon() | Erzeugt ein Rechteck-Polygon im WorkPoly |
MakeEllipseArcPolygon() | Erzeugt ein Ellipsenbogen-Polygon im WorkPoly |
MakeBezierPolygon() | Erzeugt ein Bezier-Polygon |
Polygon() | Zeichnet ein JsgPolygon |
PolygonArrow() | Zeichnet ein JsgPolygon mit Pfeilsymbolen |
Marker() | Zeichnet die Punkte eines JsgPolygon |
JsgPolygon.X, Y, Z: Array of Number; ReadOnly; Init = [ ]; Koordinaten des Polygons
Die Arrays X, Y und Z können grösser sein, als die Anzahl nach JsgPolygon.Reset() mit JsgPolygon.AddPoint() oder JsgPolygon.AddPoly() hinzugefügten Koordinaten. Size gibt an, wieviele Punkte nach JsgPolygon.Reset() hinzugefügt wurden. Alle JsGraph Funktionen, die ein JsgPolygon akzeptieren, berücksichtigen nur die ersten Size Elemente der Arrays. Damit kann der selbe Speicher für verschieden grosse Polygone wiederverwendet werden.
Ein JsgPolygon kann 2D oder 3D Punkte enthalten, siehe JsgPolygon() und JsgPolygon.Init(). Ein 2D Polygon ist dadurch gekennzeichnet, dass sein Z-Array = null ist. In diesem Fall werden alle Z-Koordinaten ignoriert.
JsgPolygon.Size: Integer; ReadOnly; Init = 0; Anzahl gültige Koordinaten in X, Y und Z
Mit JsgPolygon.Init() und JsgPolygon.Reset() wird Size = 0 gesetzt. Mit jedem Aufruf von JsgPolygon.AddPoint() wird Size um 1 erhöht. Falls Size dabei grösser wird als die Arrays X, Y und Z, werden diese entsprechend vergrössert.
Bei JsgPolygon.Reset() wird zwar Size auf 0 gesetzt, die Arrays behalten aber ihre momentane Grösse bei. Damit kann der Speicher wiederverwendet werden. Relevant ist in jedem Fall der aktuelle Füllstand Size, nicht die Grösse der Arrays (Property length)!
new JsgPolygon( type3D )
Erzeugt ein neues JsgPolygon. Wenn type3D = true gesetzt wird, wird ein 3D Polygon erzeugt, sonst ein 2D Polygon, bei dem die Z-Komponente ignoriert wird.
global JsgPolygon.Ok( Object )
Gibt true zurück, wenn Object definiert ist und vom Typ JsgPolygon ist.
Dies ist eine globale Funktion, die wiefolgt verwendet werden kann:
if (JsgPolygon.Ok( any )) { // handle JsgPolygon any }
JsgPolygon.Is3D( )
Gibt true zurück, das Polygon 3-dimensional ist, siehe JsgPolygon() und JsgPolygon.Init().
JsgPolygon.Init( type3D )
Löscht die internen Arrays X, Y und Z und erzeugt neue leere Arrays dafür. Size wird auf 0 gesetzt. Vergleiche mit JsgPolygon.Reset().
Wenn type3D = true gesetzt wird, wird ein 3D Polygon initialisiert, sonst ein 2D Polygon, bei dem die Z-Komponente ignoriert wird.
Die Funktion gibt das aktuelle Polygon als Returnwert zurück. Damit können Funktionsaufrufe verkettet werden:
myPoly.Init().AddPoint(x1,y1).AddPoint(x2,y2);
JsgPolygon.Reset( )
Setzt Size auf 0. Die internen Arrays X und Y werden nicht verändert. Vergleiche mit JsgPolygon.Init().
Die Funktion gibt das aktuelle Polygon als Returnwert zurück. Damit können Funktionsaufrufe verkettet werden:
myPoly.Reset().AddPoint(x1,y1).AddPoint(x2,y2);
Diese Funktion wird bei NewPoly() für Poly aufgerufen.
JsgPolygon.IsEmpty( )
Gibt true zurück, wenn das Polygon keine Punkte enthält, also wenn JsgPolygon.Size = 0 ist.
JsgPolygon.GetFirstPoint3D( p )
Wenn das Polygon nicht leer ist, werden die X/Y/Z-Koordinaten des ersten Punktes des Polygons in p gespeichert. Wenn das Polygon leer ist wird nichts gemacht aber die Funktion gibt dann false zurück, sonst true.
Hinweis: Das Polygon muss 3-dimensional sein, siehe JsgPolygon().
JsgPolygon.GetLastPoint3D( p )
Wenn das Polygon nicht leer ist, werden die X/Y/Z-Koordinaten des letzten Punktes des Polygons in p gespeichert. Wenn das Polygon leer ist wird nichts gemacht aber die Funktion gibt dann false zurück, sonst true.
Hinweis: Das Polygon muss 3-dimensional sein, siehe JsgPolygon().
JsgPolygon.AddPoint( x, y, z )
Fügt die Koordinaten des Punktes an der Position Size in die Arrays X, Y und Z ein und erhöht Size um 1. Wenn die Arrays kleiner als Size sind, werden sie automatisch vergrössert, bevor die Koordinaten gespeichert werden.
Bei eine 2D-Polygon wird die Z-Koordinate ignoriert.
Die Funktion gibt das aktuelle Polygon als Returnwert zurück. Damit können Funktionsaufrufe verkettet werden:
myPoly.Reset().AddPoint(x1,y1).AddPoint(x2,y2);
Diese Funktion wird bei AddPointToPoly() für Poly aufgerufen.
JsgPolygon.AddPoint3D( p )
Fügt die Koordinaten des Punktes p an der Position Size in die Arrays X, Y und Z ein und erhöht Size um 1. Wenn die Arrays kleiner als Size sind, werden sie automatisch vergrössert, bevor die Koordinaten gespeichert werden.
Hinweis: Das Polygon muss 3-dimensional sein, siehe JsgPolygon().
Die Funktion gibt das aktuelle Polygon als Returnwert zurück. Damit können Funktionsaufrufe verkettet werden:
myPoly.Reset().AddPoint(x1,y1).AddPoint(x2,y2);
Diese Funktion wird bei AddPointToPoly() für Poly aufgerufen.
JsgPolygon.AddPoly( poly, offset )
Fügt die Koordinaten des Polygons poly an der Position Size in die Arrays X, Y und Z ein und erhöht Size entsprechend. Wenn die Arrays kleiner als Size sind, werden sie automatisch vergrössert, bevor die Koordinaten gespeichert werden.
Mit offset kann angegeben werden, welches der erste Punkt in poly sein soll, der in das aktuelle Polygon übernommen werden soll. Wenn offset > poly.Size ist, wird nichts ausgeführt.
Bei einem 2D-Polygon werden die Z-Korrdinate ignoriert. Hinweis: poly muss dieselbe Dimension wie das aktuelle Polygon this haben.
Die Funktion gibt das aktuelle Polygon als Returnwert zurück. Damit können Funktionsaufrufe verkettet werden:
myPoly.Reset().AddPoly(poly).AddPoint(x2,y2);
JsgPolygon.RemoveLastPoint( )
Entfernt den letzten Punkt des Polygons, indem Size um 1 erniedrigt wird. Wenn Size = 0 ist, wird nichts gemacht.
Die Funktion gibt das aktuelle Polygon als Returnwert zurück. Damit können Funktionsaufrufe verkettet werden:
myPoly.Reset().RemoveLastPoint().AddPoint(x,y);
JsgPolygon.Close( )
Wenn der letzte Punkt des Polygons ungleich dem ersten Punkt ist, wird eine Kopie des ersten Punktes ans Ende des Polygons hinzugefügt, damit das Polygon geometrisch geschlossen ist. Wenn der letzte und erste Punkt des Polygons dieselben Koordinaten haben, wenn also das Polygon bereits geschlossen war, wird nichts gemacht und false zurück gegeben. Wenn das noch nicht geschlossen war und nun von der Funktion geschlossen wurde, wird true zurückgegeben.
Verwende die Funktion JsgPolygon.RemoveLastPoint() um den hinzugefügten Punkt allenfalls wieder zu entfernen, um das ursprüngliche Polygon wieder herzustellen.
JsgPolygon.IsSamePoint( i, poly, j )
Gibt true zurück, wenn der Punkt i in diesem Polygon dieselben Koordinaten wie der Punkt j im Polygon poly hat.
Diese Funktion kann sowohl auf 2-dimensionale als auch auf 3-dimensionale Polygone angewandt werden. Als poly kann auch dieses Polygon übergeben werden, um zwei Punkte dieses Polygons zu vergleichen.
JsgPolygon.Copy( Dest, UseNewArrays )
Wenn Dest angegeben wird, werden die Koordinaten des aktuellen Polygons in die Arrays von Dest kopiert. Wenn Dest nicht definiert wird, wird ein neues JsgPolygon erzeugt, in welches die Koordinaten kopiert werden. Dest oder das neue Polygon werden zurückgegeben.
Wenn Dest angegeben wird, so kann mit UseNewArrays gesteuert werden, ob vor dem Kopieren in Dest neue Arrays angelegt werden sollen oder ob die bestehenden verwendet werden sollen. Ist UseNewArrays = true haben die Arrays des zurückgegebenen Polygons immer genau Size Elemente (X.length = Y.length = Z.length = Size).
Hinweis: die Polygon-Kopie bekommt dieselbe Dimension wie das ursprüngliche Polygon.
JsgPolygon.Invert( )
Kehrt die Reihenfolge der Punkte des Polygons um. Der erste Punkt wird zum letzten Punkt und der letzte Punkt wird zum ersten Punkt usw.
global JsgPolygon.InvertArrays( XArray, YArray, Zarray, Size )
Kehrt die Reihenfolge der Punkte in den Arrays um. Der erste Punkt wird zum letzten Punkt und der letzte Punkt wird zum ersten Punkt usw.
Wenn Zarray = null ist, wird dieser ignoriert. Dies ist praktisch, wenn die Funktion für 2D-Polygone aufgerufen wird.
Hinweis: Dies ist keine Memberfunktion eines JsgPolygon Objektes. Sie kann daher wie eine normale Funktion aufgerufen werden:
var xarr = [], yarr = []; Compute( xarr, yarr ); JsgPolygon.InvertArrays( xarr, yarr );
JsgPolygon.Roll( N )
Verschiebt die Punkte des Polygons um N Stellen. Ist N grösser Null werden die Punkte in Richtung niedrigem Index verschoben. Mit negativem N wird in Richtung höherem Index verschoben. Punkte, welche unten oder oben aus dem Polygon geschoben werden, werden am anderen Ende eingefügt.
Note: Wenn N > Size / 2 ist, kommt es auf dasselbe heraus, wie wenn um N = N - Size, also in die andere Richtung, verschoben wird. Beispiel: Wenn das Polygon 4 Punkte enthält und um N = 3 nach unten verschoben werden soll, ist das Resultat dasselbe, wie wenn um N = 3 - 4 = -1, also um eine Stelle nach oben verschoben wird.
Wenn der Betrag von N Grösser als Size ist, wird um den Rest der Division von N / Size verschoben. Beispiel: N = 5, Size = 4 → False.
global JsgPolygon.Roll( XArray, YArray, Zarray, N, Size )
Verschiebt die Punkte des Polygons um N Stellen, siehe JsgPolygon.Roll().
Wenn Zarray = null ist, wird dieser ignoriert. Dies ist praktisch, wenn die Funktion für 2D-Polygone aufgerufen wird.
Hinweis: Dies ist keine Memberfunktion eines JsgPolygon Objektes. Sie kann daher wie eine normale Funktion aufgerufen werden:
var xarr = [], yarr = []; Compute( xarr, yarr ); JsgPolygon.RollArrays( xarr, yarr, n );
}
Ein Objekt dieser Klasse wird für die Funktion ClipPolygon() verwendet.
PolyList | Arrays der einzelnen Polygone |
Size | Anzahl Polygone |
CurrPoly | aktuelles Polygon in PolyList oder null |
Achtung: Verwende immer Size wenn die Anzahl Polygone abgefragt werden soll, nicht PolyList.length, da letztere grösser sein kann als Size!
JsgPolygonList() | Erzeugt eine JsgPolygonList |
JsgPolygonList.Ok() | gibt true zurück, wenn ein Objekt eine JsgPolygonList ist |
JsgPolygonList.Is3D() | gibt true zurück, wenn die Polygone in der List 3-dimensional sind. |
JsgPolygonList.IsEmpty() | Gibt bei einer leeren Polygon-Liste oder wenn das erste Polygon der Liste leer ist true zurück |
JsgPolygonList.Reset() | Setzt Size = 0 ohne Löschen des internen Arrays PolyList |
JsgPolygonList.NewPoly() | Erzeugt ein neues JsgPolygon und fügt es an PolyList an. Das neue Polygon wird das aktuelle Polygon für die Funktion JsgPolygonList.AddPoint() |
JsgPolygonList.GetFirstPoly() | Gibt das erste Polygon der PolyList zurück |
JsgPolygonList.GetLastPoly() | Gibt das letzte Polygon der PolyList zurück. |
JsgPolygonList.GetFirstPoint3D() | Gibt den ersten Punkt des letzten Polygons zurück |
JsgPolygonList.GetLastPoint3D() | Gibt den letzten Punkt des letzten Polygons zurück |
JsgPolygonList.AddPoint() | Fügt die Koordinaten eines Punktes dem letzten Polygon der PolyList an. |
JsgPolygonList.AddPoint3D() | Fügt die Koordinaten eines 3D-Punktes dem letzten Polygon der PolyList an. |
JsgPolygonList.AddPoly() | Fügt ein Polygon oder eine Polygon-Liste in diese Polygon-List ein. |
JsgPolygonList.RemoveLastPoint() | entfernt den letzten Punkt des letzten Polygons |
JsgPolygonList.Close() | wenn die Punkte nicht identisch sind, wird der erste Punkt des ersten Polygons ans Ende des letzten Polygons angefügt |
Funktionen, welche ein JsgPolygonList akzeptieren oder zurückgeben:
PolygonList() | Zeichnet alle Polygone einer JsgPolygonList |
ClipPolygon() | Clippt ein Polygon und gibt die resultierenden Polygone in einer JsgPolygonList zurück. |
JsgPolygonList.PolyList: Array of JsgPolygon; Init = [ ]
Der Array PolyList kann grösser sein als die Anzahl der Polygone im JsgPolygonList Objekt. Aus performance Gründen wird bei JsgPolygonList.Reset() der Array PolyList nicht gelöscht, sondern nur Size auf 0 gesetzt. Dadurch können die Polygone in PolyList wiederverwendet werden.
JsgPolygonList.Size: Integer; ReadOnly; Init = 0; Anzahl gültige Polygone in PolyList
Mit JsgPolygonList.Reset() wird Size = 0 gesetzt. Mit jedem Aufruf von JsgPolygonList.NewPoly() wird Size um 1 erhöht. Falls Size dabei grösser wird als der Array PolyList, werd dieser entsprechend vergrössert.
Bei JsgPolygonList.Reset() wird zwar Size auf 0 gesetzt, der Array behält aber seine momentane Grösse bei. Damit kann der Speicher wiederverwendet werden. Relevant ist in jedem Fall der aktuelle Füllstand Size, nicht die Grösse des Arrays (Property length)!
JsgPolygonList.CurrPoly: JsgPolygon; ReadOnly; Init = null; Link auf aktuelles Polygon in PolyList
CurrPoly zeigt immer auf das letzte JsgPolygon in PolyList. Wenn PolyList leer ist, z.B. nach Aufruf von JsgPolygonList.Reset(), ist CurrPoly = null.
new JsgPolygonList( type3D )
Erzeugt ein neues JsgPolygonList Objekt. Wenn type3D = true gesetzt wird, werden alle mit JsgPolygonList.NewPoly() erzeugten Polygone als 3-dimensionale Polygone erzeugt, sonst als 2D-Polygone.
global JsgPolygonList.Ok( Object )
Gibt true zurück, wenn Object definiert ist und vom Typ JsgPolygonList ist.
Dies ist eine globale Funktion, die wiefolgt verwendet werden kann:
if (JsgPolygonList.Ok( any )) { // handle JsgPolygonPolygon any }
JsgPolygonList.Is3D( )
Gibt true zurück, wenn die Polygone in der PolyList 3-dimensional sind.
JsgPolygonList.IsEmpty( )
Gibt true zurück, wenn PolyList leer ist oder wenn das erste Polygon der Liste leer ist, siehe JsgPolygon.IsEmpty().
JsgPolygonList.Reset( )
Setzt Size auf 0. Der interne Array PolyList wird nicht verändert.
Die Funktion gibt das Objekt this als Returnwert zurück. Damit können Funktionsaufrufe verkettet werden:
myPolyList.Reset().NewPoly().AddPoint(x1,y1).AddPoint(x2,y2);
JsgPolygonList.NewPoly( )
Erzeugt ein neues JsgPolygon und fügt es am Ende der PolyList ein. Der Array PolyList wird wenn nötig entsprechend vergrössert. Die Dimension des erzeugten JsgPolygon ist dieselbe wie die dieses JsgPolygonList Objektes.
Das letzte JsgPolygon in der Liste PolyList ist immer das aktuelle Polygon, welchem Punkte mit AddPoint() angefügt werden. Bevor also AddPoint aufgerufen werden darf, muss mit NewPoly() mindestens ein Polygon erzeugt worden sein.
Der Array PolyList wird bei JsgPolygonList.Reset() nicht gelöscht, sondern es wird ledglich Size auf 0 gesetzt. Wenn der Array PolyList grösser als Size ist, wird in dieser Funktion ledglich Size erhöht und das Polygon an dieser Stelle in PolyList wiederverwendet. Für das Polygon an der Stelle Size wird die Funktion JsgPolygon.Reset() gerufen.
Die Funktion gibt das aktuelle JsgPolygonList this als Returnwert zurück. Damit können Funktionsaufrufe verkettet werden:
myPolyList.Reset().NewPoly().AddPoint(x1,y1).AddPoint(x2,y2);
JsgPolygonList.GetFirstPoly( )
Gibt das erste Polygon von PolyList zurück. Das PolyList darf nicht leer sein: JsgPolygonList.Size > 0.
JsgPolygonList.GetLastPoly( )
Gibt das letzte Polygon von PolyList zurück. Das PolyList darf nicht leer sein: JsgPolygonList.Size > 0
JsgPolygonList.GetFirstPoint3D( p )
Gibt den ersten Punkt des letzten Polygons von PolyList zurück.
Wenn das Polygon nicht leer ist, werden die X/Y/Z-Koordinaten des ersten Punktes des letzten Polygons in p gespeichert. Wenn das Polygon leer ist wird nichts gemacht aber die Funktion gibt dann false zurück, sonst true.
Hinweis: Das Polygon muss 3-dimensional sein, siehe JsgPolygon().
JsgPolygonList.GetLastPoint3D( p )
Gibt den letzten Punkt des letzten Polygons von PolyList zurück.
Wenn das Polygon nicht leer ist, werden die X/Y/Z-Koordinaten des letzten Punktes des Polygons in p gespeichert. Wenn das Polygon leer ist wird nichts gemacht aber die Funktion gibt dann false zurück, sonst true.
Hinweis: Das Polygon muss 3-dimensional sein, siehe JsgPolygon().
JsgPolygonList.AddPoint( x, y, z )
Fügt die Koordinaten des Punktes am aktuellen Polygon der PolyList an der Position JsgPolygon.Size in die Arrays X, Y und Z ein und erhöht JsgPolygon.Size um 1. Wenn die Arrays kleiner als JsgPolygon.Size sind, werden sie automatisch vergrössert, bevor die Koordinaten gespeichert werden.
Die Funktion gibt das aktuelle JsgPolygonList als Returnwert zurück. Damit können Funktionsaufrufe verkettet werden:
myPolyList.Reset().NewPoly().AddPoint(x1,y1).AddPoint(x2,y2);
JsgPolygonList.AddPoint3D( p )
Fügt den Punkt p am Ende des aktuellen Polygons an, d.h. des letzten Polygons von PolyList.
Hinweis: Das Polygon muss 3-dimensional sein, siehe JsgPolygon().
JsgPolygonList.AddPoly( polys, appendMode )
Fügt die Punkte des Polygons oder der Polygone polys an diese Polygon Liste an, abhängig vom appendMode.
appendMode | Beschreibung |
---|---|
0: new | Fügt alle Polygone als neue Polygone am Ende dieser Polygon-Liste an |
1: extend | Wenn jeweils der erste Punkt eines Polygons von polys dieselben Koordinaten hat wie der letzte Punkt des letzten Polygons von PolyList, werden die Punkte von polys an das letzte Polygon von PolyList angehängt, wobei der erste Punkt von poly übersprungen wird. Wenn die Koordinaten nicht übereinstimmen oder kein Polygon in PolyList ist, wird für das jeweilige Polygon in polys ein neues Polygon in PolyList erzeugt. |
2: append | Fügt die Polygone von polys ans aktuelle Polygon von PolyList an. Wenn der letzte Punkt des Polygons von PolyList gleich dem ersten Punkt eines Polygons in polys ist, wird der erste Punkt übersprungen. |
>0: merge | Gemeinsame End- und Start-Punkte werden zu einem Punkt verschmolzen |
JsgPolygonList.RemoveLastPoint( )
Entfernt den letzten Punkt des letzten Polygons von PolyList, indem Size um 1 erniedrigt wird. Wenn das letzte Polygon leer ist, wird nichts gemacht.
JsgPolygonList.Close( )
Fügt den ersten Punkt des ersten Polygons in PolyList am Ende des letztem Polygons von PolyList an, wenn die Punkte nicht identisch sind. Gibt true zurück, wenn ein Punkt angefügt wurde. Verwende JsgPolygonList.RemoveLastPoint() um den angefügten Punkt wieder zu entfernen, falls erforderlich.