Mit dem Erzeugen eines Objektes der Klasse JsGraphX3D mit der Funktion NewGraphX3D() wird ein Canvas erzeugt, auf dem 3D-Grafik mit Hilfe der JsGraphX3D Funktionen gezeichnet werden kann.
Ein Objekt der Klasse JsGraphX3D wird mit der Funktion NewGraphX3D() erzeugt.
}
Für die Beschreibung der Properties der Basis-Klasse JsGraph siehe JsGraph Properties.
Camera | Bestimmt die Viewing-Transformation, sowie Zoom |
Plane | Bezugsebene für die JsgPlane Funktionen |
Poly3D | JsgPolygon, welches von den Funktionen NewPoly3D(), AddPointToPoly3D(), DrawPoly3D() usw. verwendet wird. |
Trans3D | 3D-Transformation |
Für Properties der Basis-Klasse JsGraph siehe JsGraph Properties. Auf diese Properties kann über das JsGraphX3D Objekt direkt zugeriffen werden.
NewGraphX3D() | Erzeugt ein JsGraphX3D Objekt |
Reset3D() | Setzt das JsGraphX3D Objekt zurück |
SaveAll() | Speichert den Zustand des JsGraphX3D in einem Objekt |
SetAll() | Lädt den Zustand des JsGraphX3D aus einem Objekt |
SetWindowToCameraScreen() | Setzt das Window auf die bei der Camera definierte ScreenSize |
ResetTrans3D() | Setzt die aktuelle 3D-Transformation zurück |
SaveTrans3D() | Speichert die aktuelle 3D-Transformation im Transformations-Stack |
RestoreTrans3D() | Entnimmt die zuletzt gespeicherte 3D-Transformation aus dem Transformations-Stack und macht sie zur aktuellen Transformtion |
SetTrans3D() | Setzt eine neue 3D-Transformation |
TransMove3D() | Addiert eine Verschiebung zur aktuellen 3D-Transformation |
TransScale3D() | Addiert eine Skalierung zur aktuellen 3D-Transformation |
TransRotateX3D(), TransRotateY3D(), TransRotateZ3D() | Addiert eine Rotation zu aktuellen 3D-Transformation |
TransRotateVect3D() | Addiert eine Rotation um einen Vektor zur aktuellen 3D-Transformation |
AddTrans3D() | Addiert eine Transformation zur aktuellen 3D-Transformation |
TransPoint3D() | applies Trans3D to a point |
VTransPoint3D() | applies Trans3D and Camera-Trans to a point |
TransClipPoint3D() | applies Trans3D, clipps, and applies Camera-Trans on unclipped points |
IsPointInsideClipRange3D() | check ob punkt innerhalb aller Clipp-Bereiche liegt |
NewGraphX3D( Parameters )
Erzeugt ein JsGraphX3D Objekt mit zugehörigen HTML-Elementen (Canvas) und initialisiert die Transformationen. Der Aufruf dieser Funktion muss an der Stelle im HTML Dokument stehen, wo der Canvas gezeichnet werden soll.
Mit Parameters können Grundeinstellungen vorgenommen werden:
Im Argument der Funktion NewGraphX3D() können folgende Einstellungen vorgenommen werden. Alle nicht definierten Parameter erhalten Standardwerte.
}
JsGraphX3D.Camera: JsgCamera; ReadOnly; → JsgCamera Funktionen
Bestimmt die Abbildungs-Transformation von 3D zu 2D aus Position und Blickrichtung, sowie Zoom und Blende.
JsGraphX3D.Plane: JsgPlane; ReadOnly; → JsgPlane Funktionen
Die JsgPlane Funktionen beziehen sich auf die in Plane definierte 3D-Ebene. Sie kann mit SetPlane() definiert werden.
JsGraphX3D.Poly3D: JsgPolygon; ReadOnly; Init = new JsgPolygon
Dieses Polygon kann für das punktweise Erzeugen eines Polygons verwendet werden. Die folgenden Funktionen greifen auf dieses Polygon zu:
Das Polygon kann vor dem Zeichnen mit JsgPolygon.Invert() und JsgPolygon.Roll() wiefolgt manipuliert werden:
g.NewPoly3D(); for (x = 0; x < xmax; x += xdelta) { var y = f( x ); g.AddPointToPoly3D( x, y ); } g.Poly3D.Roll( n ); g.Poly3D.Invert(); g.DrawPoly3D();
JsGraphX3D.Trans3D: JsgMat3 or null; ReadOnly; Init = null
Wenn Trans3D nicht null ist sondern eine JsgMat3-Matrix, werden 3D-Grafik-Elemente vor dem Zeichnen über diese Matrix transformiert. Die folgenden Funktionen definieren die Transformation:
JsGraphX3D.Reset3D( reset2D, clear )
Setzt alle Properties und deren Objekte des JsGraphX3D Objektes auf den Init-Zustand zurück.
Wenn reset2D = true ist, wird die Funktion Reset() des 2D-Teils dieser Klasse aufgerufen, wobei diese jedoch kein Clear() ausführt. Setze dazu clear auf true.
Wenn clear = true ist, wird die Funktion Clear() aufgerufen, welche die Grafik auf dem Display löscht.
JsGraphX3D.SaveAll( Params )
Speichert alle internen Objekte und Zustände in Params ab. Wenn Params nicht angegeben wird oder null ist, wird ein neues Objekt zum Speichern angelegt und zurückgegeben. Mit der Funktion SetAll() können alle internen Objekte und Zustände wieder auf die im Objekt gespeicherten Werte gesetzt werden.
Zu den gespeicherten Objekten gehören:
JsGraphX3D.SetAll( Params )
Setzt die internen Objekte Clip-Planes, Camera und Plane auf die in Params gespeicherten Werte. Properties, die in Params nicht definiert sind, behalten ihren aktuellen Wert.
Das Objekt Params kann mit der Funktion SaveAll() erstellt werden.
JsGraphX3D.SetWindowToCameraScreen( )
Nach dem Setzen des Viewports z.B. mit SetViewport() sollte das Window mit dieser Funktion auf die JsgCamera.ScreenSize gesetzt werden, damit die Grafik in diesen Bereich abgebildet wird.
g.SetCamera( ... ); g.SetViewport( vpXmin, vpYmin, vpWidth, vpHeight ); g.SetWindowToCameraScreen(); // Grafik mit den 3D-Funktionen zeichnen
ResetTrans3D( clearStack )
Setzt die aktuelle 3D-Transformation zurück.
Alle Grafik wird vor dem Zeichnen einer allenfalls definierten 3D-Transformation unterzogen. Diese Transformation kann mit den nachfolgenden Funktionen definiert werden.
3D-Transformationen können auf dem Transformations-Stack zwischengespeichert werden, siehe SaveTrans3D(). Wenn clearStack = true ist, wird dieser Stack gelöscht.
SaveTrans3D( reset )
Speichert eine Kopie der aktuellen 3D-Transformation im Transformations-Stack und gibt eine Referenz auf diese Kopie zurück.
Wenn reset = true ist, wird die aktuelle Transformation mit ResetTrans3D() zurückgesetzt auf die Einheits-Transformation.
RestoreTrans3D( )
Entnimmt die zuletzt gespeicherte 3D-Transformation aus dem Transformations-Stack und macht sie zur aktuellen Transformtion.
Wenn der Transformation-Stack leer ist, macht diese Funktion nichts.
SetTrans3D( mat, useMat )
Setzt eine neue 3D-Transformation. Wenn mat undefiniert oder null ist, wird die 3D-Transformation auf die Einheits-Transformation zurückgesetzt.
Wenn mat definiert ist, wird diese Matrix zur neuen Transformation. Die bisherige Transformation wird dadurch ersetzt.
Wenn useMat = false ist, wird eine Kopie von mat erstellt, sonst wird mat als neue Transformation gespeichert.
TransMove3D( vect )
TransMove3D( x, y, z )
Addiert eine Verschiebung zur aktuellen 3D-Transformation.
TransScale3D( scale )
TransScale3D( sx, sy, sz )
Addiert eine Skalierung zur aktuellen 3D-Transformation
TransRotateX3D( angle )
TransRotateY3D( angle )
TransRotateZ3D( angle )
Addiert eine Rotation um eine Koordinaten-Achse zur aktuellen 3D-Transformation. Der Rotationswinkel wird je nach AngleMeasure in Grad oder Radian interpretiert.
TransRotateVect3D( vect, angle )
Addiert eine Rotation um einen Vektor zur aktuellen 3D-Transformation. Der Rotationswinkel wird je nach AngleMeasure in Grad oder Radian interpretiert.
AddTrans3D( mat )
Addiert die Transformation mat zur aktuellen 3D-Transformation. Von mat wird allenfalls eine Kopie erstellt.
JsGraphX3D.TransPoint3D( x, y, z )
JsGraphX3D.TransPoint3D( p )
Transformiert den Punkt p bzw. (x,y,z) mit der aktuellen Trans3D.
Das Resultat wird in einem Internen Point WorkPoint3D gespeichert. Von diesem muss eine Kopie mit JsgVect3.Copy() erstellt werden, wenn er nicht nur temporär benötigt wird.
Vergleiche auch VTransPoint3D() und TransClipPoint3D().
JsGraphX3D.VTransPoint3D( x, y, z )
JsGraphX3D.VTransPoint3D( p )
Transformiert den Punkt p bzw. (x,y,z) mit der aktuellen Trans3D und danach mit der Camera-Transformation. Die X- und Y-Komponenten des resultierenden Punktes sind dann Punkte auf dem Display in Window-Koordinaten. Die Z-Komponente gibt den Abstand des Punktes vom Display in Blickrichtung an und wird meist nicht benötigt, kann also ignoriert werden.
Das Resultat wird in einem Internen Point this.Camera.WorkPoint gespeichert. Von diesem muss eine Kopie mit JsgVect3.Copy() erstellt werden, wenn er nicht nur temporär benötigt wird.
Vergleiche auch TransPoint3D() und TransClipPoint3D().
JsGraphX3D.TransClipPoint3D( x, y, z )
JsGraphX3D.TransClipPoint3D( p )
Transformiert den Punkt p bzw. (x,y,z) mit der aktuellen Trans3D. Liegt der transformaierte Punkt ausserhalb einer Clipping-Plane, wird null zurückgegeben. Ansosten wird wird auf den Punkt auch noch die Kamera-Transformation angewandt.
Das Resultat wird in einem Internen Point this.Camera.WorkPoint gespeichert. Von diesem muss eine Kopie mit JsgVect3.Copy() erstellt werden, wenn er nicht nur temporär benötigt wird.
Vergleiche auch TransPoint3D() und VTransPoint3D().
JsGraphX3D.IsPointInsideClipRange3D( x, y, z )
JsGraphX3D.IsPointInsideClipRange3D( p )
Wenn der Punkt p bzw. (x,y,z) innerhalb aller Clipping-Planes liegt, wird true zurückgegeben, sonst false.
Siehe auch TransClipPoint3D().