WaBis

walter.bislins.ch

JSG3D: JsgDisplayList

Die JsGraph3D.DisplayList vom Typ JsgDisplayList speichert alle JsgGraphEle Objekte, sowie deren Punkte und JsgEleData Daten.

JsgDisplayList Klasse

JsgDisplayList = {
PointList: JsgVect3List; Private; → GraphElePoint()
Liste aller Punkte der Grafik-Elemente
GraphEleList: Array of JsgGraphEle; ReadOnly; Init = [ ]
Liste aller Grafik-Elemente
EleDataList: Array of JsgEleData; ReadOnly; Init = [ ]
Liste der JsgEleData-Objekte der Grafik-Elemente
PointListVT: JsgVect3List; Private; → GraphElePointVT()
Liste aller Punkte im Koordinatensystem der Kamera
}

Die Grafik-Elemente der JsGraph3D.DisplayList speichern ihre Punkte in der PointList. Dadurch können Linien und Flächen gemeinsame Punkte teilen.

Unmittelbar vor dem Zeichnen der DisplayList werden alle Punkte in das Koordinatensystem der Kamera transformiert. Auf die transformierten Punkte kann z.B. in Callback-Funktionen wie AreaAttrFunc mittels der Funktion GraphElePointVT() zugegriffen werden.

JsgDisplayList Properties

PointList Liste aller Punkte der Grafik-Elemente
GraphEleList Liste der Grafik-Elemente
EleDataList Liste der JsgEleData der Grafik-Elemente
PointListVT Liste aller Punkte im Koordinatensystem der Camera

JsgDisplayList Funktionen

NewDisplayList() Erzeugt eine neue DisplayList
AddPoint() Fügt ein einzelnes Punkt-Element in die DisplayList ein
AddPointsFromFunc() Fügt Punkte aus einer Funktion in die DisplayList ein
AddPointsFrom3DFunc() Fügt Punkte aus einer 3D-Funktion in die DisplayList ein
AddPointsFromVectList() Fügt Punkte einer JsgVect3List in die DisplayList ein
AddPointsFromVectGrid() Fügt Punkte eines JsgVect3Grid in die DisplayList ein
AddPointsFromVectInterGrid() Fügt Punkte eines JsgVect3Grid vom Typ InterGrid in die DisplayList ein → VectInterGridFrom3DFunc()
AddLine() Fügt ein einzelnes Linien-Element in die DisplayList ein
AddLinesFromFunc() Fügt Linien einer Funktion in die DisplayList ein
AddLinesFromVectList() Fügt Linien aus einer JsgVect3List in die DisplayList ein
AddTriangle() Fügt ein Dreieck-Flächen-Element in die DisplayList ein
AddRect() Fügt ein Viereck-Flächen-Element in die DisplayList ein
AddAreasFrom3DFunc() Fügt Flächen einer 3D-Funktion in die DisplayList ein
AddAreasFromVectGrid() Fügt Flächen eines JsgVect3Grid in die DisplayList ein
AddAreasFromVectInterGrid() Fügt Flächen eines JsgVect3Grid vom Type InterGrid in die DisplayList ein → VectInterGridFrom3DFunc()

JsgDisplayList.PointList

JsgDisplayList.PointList: JsgVect3List; Private; → GraphElePoint() 

Liste der Punkte aller Grafik-Elemente in GraphEleList. Über die Funktion GraphElePoint() kann auf die Punkte eines Grafik-Elementes zugegriffen werden.

JsgDisplayList.GraphEleList

JsgDisplayList.GraphEleList: Array[ ] of JsgGraphEle; ReadOnly; Init = [ ];JsgDisplayList Funktionen

Liste aller Grafik-Elemente (Punkte, Linien, Flächen).

Achtung: Diese Liste wird beim Zeichnen mit DrawDisplayList() nach Abstand von der Kamera sortiert. Die Elemente der Liste wechseln also ihre Positionen!

JsgDisplayList.EleDataList

JsgDisplayList.EleDataList: Array[ ] of JsgEleData; ReadOnly; Init = [ ];JsgDisplayList Funktionen

Liste der JsgEleData-Objekte der Grafik-Elemente.

Das Aussehen der Grafik-Elemente wird durch JsgEleData Objekte definiert. Jedes Grafik-Element hat entweder eine Referenz auf ein JsgEleData Objekt, welches in der EleDataList gespeichert ist, oder auf das DefaultEleData Objekt.

JsgDisplayList.PointListVT

JsgDisplayList.PointListVT: JsgVect3List; Private; → GraphElePointVT() 

Liste aller Punkte im Koordinatensystem der Kamera.

Die Punkte im Kamera-Koordinatensystem werden in PointListVT gespeichert. Über die Funktion GraphElePointVT() kann auf die Punkte eines Grafik-Elementes zugegriffen werden.

Unmittelbar vor dem Zeichnen der DisplayList werden alle Punkte in PointList in das Koordinatensystem der Kamera transformiert (VT = Viewing-Transformation), siehe JsgCamera.TransList(). Auf die transformierten Punkte kann z.B. in Callback-Funktionen über die Funktion GraphElePointVT() zugegriffen werden.

JsGraph3D.NewDisplayList()

JsGraph3D.NewDisplayList( )

Erzeugt eine neue DisplayList und speichert diese im JsGraph3D.DisplayList Property. Alle Grafik-Elemente und JsgEleData Objekte der vorherigen DisplayList werden durch die neue DisplayList ersetzt.

Dieser Konstruktor wird austomatisch beim Erzeugen des JsGraph3D Objektes gerufen.

JsGraph3D.DrawDisplayList()

JsGraph3D.DrawDisplayList( BeforeDrawFunc, AfterDrawFunc )

BeforeDrawFunc: function( JsGraph3D ); Optional; Default = JsGraph3D.BeforeDrawFunc
Funktion, die vor dem Zeichnen der Displaylist gerufen werden soll
AfterDrawFunc: function( JsGraph3D ); Optional; Default = JsGraph3D.AfterDrawFunc
Funktion, die nach dem Zeichnen der Displaylist gerufen werden soll

Zeichnet die Grafik der DisplayList.

In den beiden Callback-Funktionen kann zusätzliche Grafik gezeichnet werden, welche nicht in einer Displaylist gespeichert ist. In der BeforeDrawFunc könnte zum Beispiel ein Hintergrund Farbverlauf gezeichnet werden. In der AfterDrawFunc könnten Achsen und Beschriftungen gezeichnet werden.

JsGraph3D.AddPoint()

JsGraph3D.AddPoint( Point, EleData, Copy )

Point: JsgVect3
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
Bestimmt Form und Farbe des Punktes.
Copy: Boolean; Optional; Default = true
gibt an, ob eine Kopie von EleData oder EleData selbst beim Element und in der EleDataList gespeichert werden soll.
Return: JsgGraphEle
erzeugtes Punkt-Grafik-Element

Erzeugt ein Punkt-Grafik-Element mit den Koordinaten Point. Der Punkt Point wird an die PointList der JsGraph3D.DisplayList angehängt. Das erzeugte Punkt-Grafik-Element wird an die GraphEleList angehängt. Das Punkt-Element hat einen Verweis auf den Punkt der PointList. Dieser Punkt kann mit der Funktion GraphElePoint() abgefragt werden.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss Copy = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann Copy = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Das Punkt-Element erhält eine Referenz auf das JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhält das Punkt-Element eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt Symbol und Farbe des Punktes.

JsGraph3D.AddPointsFromFunc()

JsGraph3D.AddPointsFromFunc( Params )

Params: FuncParams
Return: JsgGraphEle
letztes erzeugtes Punkt-Grafik-Element
FuncParams = {
Func: Function( x, Params ) returns JsgVect3
Min, Max: Number; Optional; Default = -1, 1
Steps: Integer(>0); Optional; Default = 20
Delta: Number; Optional
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
CopyEleData: Boolean; Optional; Default = true
 :
}

Erzeugt Punkt-Grafik-Elemente aus den Punkten, welche von der Funktion Func erzeugt werden. Die Punkt-Koordinaten werden an die PointList der JsGraph3D.DisplayList angehängt. Die erzeugten Punkt-Grafikelemente werden an die GraphEleList angehängt. Die Punkt-Elemente haben einen Verweis auf die Punkte der PointList. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss CopyEleData = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann CopyEleData = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Alle erzeugten Punkt-Elemente erhalten eine Referenz auf das erzeugte JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhalten die Punkt-Elemente eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt Form und Farbe der Punkte.

AddPointsFromFunc generiert X-Werte von Min bis Max. Mit jedem dieser Werte wird Func aufgerufen. Für Properties, die in Params nicht definiert sind, werden die Defaultwerte verwendet.

Die Anzahl der Punkte kann entweder durch Angabe von Steps (Anzahl Schritte zwischen Min und Max) oder durch Angabe von Delta (Schrittweite) bestimmt werden. Wird beides angegeben, hat Steps Vorrang.

Min darf grösser als Max sein. Die X-Werte werden immer von Min nach Max generiert, in diesem Falle vom grösseren zum kleineren Wert. Das Vorzeichen von Delta wird ignoriert.

In Params können beliebige weitere Parameter definiert werden. Das Argument Params wird der Funktion Func übergeben. Diese kann auf die weiteren Parameter zugreifen. So kann zum Beispiel eine JsgPlane an die Funktion übergeben werden, sodass die Funktion Punkte auf einer Ebene generieren kann.

JsGraph3D.AddPointsFrom3DFunc()

JsGraph3D.AddPointsFrom3DFunc( Params )

Params: FuncParams
Return: JsgGraphEle
letztes erzeugtes Punkt-Grafik-Element
FuncParams = {
Func: Function( a, b, Params ) returns JsgVect3
GridType: String; Optional; Default = 'RectGrid'
Min, Max: Number; Optional; Default = -1, 1
Min2, Max2: Number; Optional; Default = Min, Max
Steps: Integer(>0); Optional; Default = 20
Steps2: Integer(>0); Optional; Default = Steps
Delta: Number; Optional
Delta2: Number; Optional; Default = Delta
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
CopyEleData: Boolean; Optional; Default = true
 :
}

Erzeugt Punkt-Grafik-Elemente aus den Punkten, welche von der Funktion Func erzeugt werden. Die Punkt-Koordinaten werden an die PointList der JsGraph3D.DisplayList angehängt. Die erzeugten Punkt-Grafik-Elemente werden an die GraphEleList angehängt. Die Punkt-Elemente haben einen Verweis auf die Punkte der PointList. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Die Punkte werden in einem von zwei möglichen Gittern erzeugt:

GridType = 'RectGrid' (Default)
Es wird ein Gitter aus lauter Rechtecken erzeugt, deren Punkte in einem JsgVect3Grid gespeichert werden.
GridType = 'InterGrid'
Es wird ein Gitter aus lauter Dreiecken erzeugt, deren Punkte in einem JsgVect3InterGrid gespeichert werden. Dazu wird zunächst dasselbe Rechteckgitter wie oben erzeugt, dann aber in jedem Rechteck ein zusätzlicher Mittelpunkt berechnet. Durch das Verbinden eines Mittelpunktes mit seinen vier Nachbarpunkten entstehen 4 Dreiecke.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss CopyEleData = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann CopyEleData = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Alle erzeugten Punkt-Elemente erhalten eine Referenz auf das erzeugte JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhalten die Punkt-Elemente eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt Form und Farbe der Punkte. Für Properties, die in Params nicht definiert sind, werden die Defaultwerte verwendet.

AddPointsFrom3DFunc generiert a/b-Werte von Min bis Max bzw. Min2 bis Max2. Mit jedem dieser Werte-Paare wird Func aufgerufen. Der A-Wert läuft von Min bis Max in der inneren Schleife. Der B-Wert läuft von Min2 bis Max2 in der äusseren Schleife.

Die Anzahl der Punkte kann entweder durch Angabe von Steps und Steps2 (Anzahl Schritte zwischen Min(2) und Max(2)) oder durch Angabe von Delta und Delta2 (Schrittweite) bestimmt werden. Wird beides angegeben, hat Steps Vorrang.

Min darf grösser als Max sein. Die a/b-Werte werden immer von Min(2) nach Max(2) generiert, in diesem Falle vom grösseren zum kleineren Wert. Das Vorzeichen von Delta(2) wird ignoriert.

In Params können beliebige weitere Parameter definiert werden. Das Argument Params wird der Funktion Func übergeben. Diese kann auf die weiteren Parameter zugreifen.

JsGraph3D.AddPointsFromVectList()

JsGraph3D.AddPointsFromVectList( Points, EleData, Copy )

Points: JsgVect3ListVectListFromFunc()
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
Bestimmt Form und Farbe der Punkte.
Copy: Boolean; Optional; Default = true
gibt an, ob eine Kopie von EleData oder EleData selbst beim Element und in der EleDataList gespeichert werden soll.
Return: JsgGraphEle
letztes erzeugtes Punkt-Grafik-Element

Erzeugt Punkt-Grafik-Elemente aus den Punkten in Points. Die Points werden an die PointList der JsGraph3D.DisplayList angehängt. Die erzeugten Punkt-Grafik-Elemente werden an die GraphEleList angehängt. Die Punkt-Elemente haben einen Verweis auf die Punkte der PointList. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss Copy = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann Copy = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Alle erzeugten Punkt-Elemente erhalten eine Referenz auf das erzeugte JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhalten die Punkt-Elemente eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt Form und Farbe der Punkte.

JsGraph3D.AddPointsFromVectGrid()

JsGraph3D.AddPointsFromVectGrid( Points, EleData, Copy )

Points: JsgVect3GridVectGridFrom3DFunc()
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
Bestimmt Form und Farbe der Punkte.
Copy: Boolean; Optional; Default = true
gibt an, ob eine Kopie von EleData oder EleData selbst beim Element und in der EleDataList gespeichert werden soll.

Erzeugt Punkt-Grafik-Elemente aus den Punkten in Points. Die Points werden an die PointList der JsGraph3D.DisplayList angehängt. Die erzeugten Punkt-Grafik-Elemente werden an die GraphEleList angehängt. Die Punkt-Elemente haben einen Verweis auf die Punkte der PointList. Einträge von null in Points werden nicht in die Display-List eingefügt, sondern ignoriert. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss Copy = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann Copy = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Alle erzeugten Punkt-Elemente erhalten eine Referenz auf das erzeugte JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhalten die Punkt-Elemente eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt Form und Farbe der Punkte.

JsGraph3D.AddPointsFromVectInterGrid()

JsGraph3D.AddPointsFromVectInterGrid( Points, EleData, Copy )

Points: JsgVect3InterGridVectInterGridFrom3DFunc()
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
Bestimmt Form und Farbe der Punkte.
Copy: Boolean
true

Gleiche Funktion wie AddPointsFromVectGrid(), jedoch mit dem Grid-Typ JsgVect3InterGrid anstatt JsgVect3Grid.

JsGraph3D.AddLine()

JsGraph3D.AddLine( Start, End, EleData, Copy )

Start, End: JsgVect3
Start- und Endpunkt der Linie
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
Bestimmt Form und Farbe der Linie.
Copy: Boolean; Optional; Default = true
gibt an, ob eine Kopie von EleData oder EleData selbst beim Element und in der EleDataList gespeichert werden soll.
Return: JsgGraphEle
erzeugtes Linien-Grafik-Element

Erzeugt ein einzelnes Linien-Grafik-Element. Die Punkt-Koordinaten werden an die PointList der JsGraph3D.DisplayList angehängt. Das erzeugte Linien-Grafik-Element wird an die GraphEleList angehängt. Das Linien-Element hat einen Verweis auf die Start- und End-Punkte in der PointList. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss Copy = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann Copy = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Alle erzeugten Linien-Elemente erhalten eine Referenz auf das erzeugte JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhalten die Linien-Elemente eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt die Farbe und Strichdicke der Linien-Elemente.

JsGraph3D.AddLinesFromFunc()

JsGraph3D.AddLinesFromFunc( Params )

Params: FuncParams
Return: JsgGraphEle
letztes erzeugtes Linien-Grafik-Element
FuncParams = {
Func: Function( x, Params ) returns JsgVect3
Min, Max: Number; Optional; Default = -1, 1
Steps: Integer(>0); Optional; Default = 20
Delta: Number; Optional
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
CopyEleData: Boolean; Optional; Default = true
 :
}

Erzeugt Linien-Grafik-Elemente zwischen den Punkten, welche von der Funktion Func erzeugt werden. Die Punkt-Koordinaten werden an die PointList der JsGraph3D.DisplayList angehängt. Die erzeugten Linien-Grafik-Elemente werden an die GraphEleList angehängt. Die Linien-Elemente haben einen Verweis auf ihre Start- und End-Punkte in der PointList. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss CopyEleData = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann CopyEleData = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Alle erzeugten Linien-Elemente erhalten eine Referenz auf das JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhalten die Linien-Elemente eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt die Farbe und Strichdicke der Linien-Elemente.

AddLinesFromFunc generiert X-Werte von Min bis Max. Mit jedem dieser Werte wird Func aufgerufen. Für Properties, die in Params nicht definiert sind, werden die Defaultwerte verwendet.

Die Anzahl der Punkte kann entweder durch Angabe von Steps (Anzahl Schritte zwischen Min und Max) oder durch Angabe von Delta (Schrittweite) bestimmt werden. Wird beides angegeben, hat Steps Vorrang.

Min darf grösser als Max sein. Die X-Werte werden immer von Min nach Max generiert, in diesem Falle vom grösseren zum kleineren Wert. Das Vorzeichen von Delta wird ignoriert.

In Params können beliebige weitere Parameter definiert werden. Das Argument Params wird der Funktion Func übergeben. Diese kann auf die weiteren Parameter zugreifen. So kann zum Beispiel eine JsgPlane an die Funktion übergeben werden, sodass die Funktion Punkte auf einer Ebene generieren kann.

JsGraph3D.AddLinesFromVectList()

JsGraph3D.AddLinesFromVectList( Points, EleData, Copy )

Points: JsgVect3ListVectListFromFunc()
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
Bestimmt Form und Farbe der Liniensegmente.
Copy: Boolean; Optional; Default = true
gibt an, ob eine Kopie von EleData oder EleData selbst beim Element und in der EleDataList gespeichert werden soll.
Return: JsgGraphEle
letztes erzeugtes Linien-Grafik-Element

Erzeugt Linien-Grafik-Elemente aus den Punkten in Points. Die Points werden an die PointList der JsGraph3D.DisplayList angehängt. Die erzeugten Linien-Grafik-Elemente werden an die GraphEleList angehängt. Die Linien-Elemente haben einen Verweis auf ihre Start- und End-Punkte in der PointList. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss Copy = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann Copy = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Alle erzeugten Linien-Elemente erhalten eine Referenz auf das erzeugte JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhalten die Linien-Elemente eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt Form und Farbe der Linien-Elemente.

JsGraph3D.AddTriangle()

JsGraph3D.AddTriangle( P1, P2, P3, EleData, Copy )

P1, P2, P3: JsgVect3
Eckpunkte eines Dreiecks.
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
Bestimmt Form und Farbe der Fläche.
Copy: Boolean; Optional; Default = true
gibt an, ob eine Kopie von EleData oder EleData selbst beim Element und in der EleDataList gespeichert werden soll.
Return: JsgGraphEle
erzeugtes Flächen-Grafik-Element

Erzeugt ein Flächen-Grafik-Element aus den drei Punkten P1 bis P3. Die Punkte werden an die PointList der JsGraph3D.DisplayList angehängt. Das erzeugte Flächen-Grafik-Element wird an die GraphEleList angehängt. Das Flächen-Element hat Verweise auf seine Eck-Punkte in der PointList. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss Copy = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann Copy = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Das erzeugte Flächen-Elemente erhält eine Referenz auf das JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhält das Flächen-Element eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt die Farbe und weitere Attribute des Flächen-Elementes.

JsGraph3D.AddRect()

JsGraph3D.AddRect( P1, P2, P3, P4, EleData, Copy )

P1, P2, P3, P4: JsgVect3
Eckpunkte eines (unregelmässigen) Vierecks.
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
Bestimmt Form und Farbe der Fläche.
Copy: Boolean; Optional; Default = true
gibt an, ob eine Kopie von EleData oder EleData selbst beim Element und in der EleDataList gespeichert werden soll.
Return: JsgGraphEle
erzeugtes Flächen-Grafik-Element

Erzeugt ein Flächen-Grafik-Element aus den vier Punkten P1 bis P4. Die Punkte müssen nicht in einer Ebene liegen, aber dann gibt es beim Zeichnen Artefakte, weil kein eindeutiger Normalen-Vektor berechnet werden kann.

Die Punkte werden an die PointList der JsGraph3D.DisplayList angehängt. Das erzeugte Flächen-Grafik-Element wird an die GraphEleList angehängt. Das Flächen-Element hat Verweise auf seine Eck-Punkte in der PointList. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss Copy = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann Copy = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Das erzeugte Flächen-Elemente erhält eine Referenz auf das JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhält das Flächen-Element eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt die Farbe und weitere Attribute des Flächen-Elementes.

JsGraph3D.AddAreasFrom3DFunc()

JsGraph3D.AddAreasFrom3DFunc( Params )

Params: FuncParams
FuncParams = {
Func: Function( a, b, Params ) returns JsgVect3 or null
GridType: String; Optional; Default = 'RectGrid'
Min, Max: Number; Optional; Default = -1, 1
Min2, Max2: Number; Optional; Default = Min, Max
Steps: Integer(>0); Optional; Default = 20
Steps2: Integer(>0); Optional; Default = Steps
Delta: Number; Optional
Delta2: Number; Optional; Default = Delta
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
CopyEleData: Boolean; Optional; Default = true
 :
}

Erzeugt Flächen-Grafik-Elemente aus den Punkten, welche von der Funktion Func erzeugt werden. Die Punkt-Koordinaten werden an die PointList der JsGraph3D.DisplayList angehängt. Die erzeugten Flächen-Grafik-Elemente werden an die GraphEleList angehängt. Die Flächen-Elemente haben Verweise auf ihre Eckpunkte in der PointList. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Die Flächen werden in einem von zwei möglichen Gittern erzeugt:

GridType = 'RectGrid' (Default)
Es wird ein Gitter aus lauter Rechtecken erzeugt, deren Punkte in einem JsgVect3Grid gespeichert werden. Eine Fläche wird aus vier benachbarten Punkten gebildet. Wenn die Funktion Func jedoch für einen Punkt null zurückgibt, besteht die Fläche nur aus 3 Punkten. Wenn mehr als 2 benachbarte Punkte null sind, wird daraus kein Flächen-Element erzeugt.
GridType = 'InterGrid'
Es wird ein Gitter aus lauter Dreiecken erzeugt, deren Punkte in einem JsgVect3InterGrid gespeichert werden. Dazu wird zunächst dasselbe Rechteckgitter wie oben erzeugt, dann aber in jedem Rechteck ein zusätzlicher Mittelpunkt berechnet. Durch das Verbinden eines Mittelpunktes mit seinen vier Nachbarpunkten entstehen 4 Dreiecke. Bei dieser Varianten darf Func nie null zurückgeben.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss CopyEleData = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann CopyEleData = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Alle erzeugten Flächen-Elemente erhalten eine Referenz auf das erzeugte JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhalten die Flächen-Elemente eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt die Farbe und weitere Attribute der Flächen-Elemente. Für Properties, die in Params nicht definiert sind, werden die Defaultwerte verwendet.

AddAreasFrom3DFunc generiert a/b-Werte von Min bis Max bzw. Min2 bis Max2. Mit jedem dieser Werte-Paare wird Func aufgerufen. Der A-Wert läuft von Min bis Max in der inneren Schleife. Der B-Wert läuft von Min2 bis Max2 in der äusseren Schleife.

Die Anzahl der Punkte kann entweder durch Angabe von Steps und Steps2 (Anzahl Schritte zwischen Min(2) und Max(2)) oder durch Angabe von Delta und Delta2 (Schrittweite) bestimmt werden. Wird beides angegeben, hat Steps Vorrang.

Min darf grösser als Max sein. Die a/b-Werte werden immer von Min(2) nach Max(2) generiert, in diesem Falle vom grösseren zum kleineren Wert. Das Vorzeichen von Delta(2) wird ignoriert.

In Params können beliebige weitere Parameter definiert werden. Das Argument Params wird der Funktion Func übergeben. Diese kann auf die weiteren Parameter zugreifen.

JsGraph3D.AddAreasFromVectGrid()

JsGraph3D.AddAreasFromVectGrid( Points, EleData, Copy )

Points: JsgVect3GridVectGridFrom3DFunc()
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
Bestimmt Form und Farbe der Flächen.
Copy: Boolean; Optional; Default = true
gibt an, ob eine Kopie von EleData oder EleData selbst beim Element und in der EleDataList gespeichert werden soll.
Return: JsgGraphEle
letztes erzeugtes Flächen-Grafik-Element

Erzeugt Flächen-Grafik-Elemente aus den Punkten in Points. Die Points werden an die PointList der JsGraph3D.DisplayList angehängt. Die erzeugten Flächen-Grafik-Elemente werden an die GraphEleList angehängt. Die Flächen-Elemente haben Verweise auf ihre Eck-Punkte in der PointList. Diese Punkte können mit der Funktion GraphElePoint() abgefragt werden.

Eine Fläche wird aus vier benachbarten Punkten des Punkte-Gitters Points gebildet. Wenn jedoch für einen Punkt null im Gitter steht, besteht die Fläche nur noch aus 3 Punkten. Wenn mehr als 2 benachbarte Punkte null sind, wird daraus keine Flächen-Element erzeugt. Die null Punkte werden nicht in die DisplayList eingefügt.

Bei EleData kann ein Objekt übergeben werden, welches einige JsgEleData Properties definiert. Die nicht definierten Properties erhalten Default-Werte (siehe JsgEleData Konstruktor). Das erzeugte JsgEleData Objekt wird am Ende der Liste EleDataList eingefügt. Wenn EleData kein vollständiges JsgEleData Objekt ist, muss Copy = true gesetzt sein (default).

Wenn EleData ein JsgEleData Objekt übergeben wird, so kann Copy = false gesetzt werden, damit das Objekt nicht kopiert wird, sondern direkt in die EleDataList eingefügt wird. So können sich mehrere Grafik-Objekte dasselbe JsgEleData teilen.

Alle erzeugten Flächen-Elemente erhalten eine Referenz auf das erzeugte JsgEleData Objekt. Wenn EleData nicht definiert oder null ist, erhalten die Flächen-Elemente eine Referenz auf DefaultEleData. Das JsgEleData Objekt bestimmt die Farbe und weitere Attribute der Flächen-Elemente.

JsGraph3D.AddAreasFromVectInterGrid()

JsGraph3D.AddAreasFromVectInterGrid( Points, EleData, Copy )

Points: JsgVect3InterGridVectInterGridFrom3DFunc()
EleData: Object or JsgEleData; Optional; Default = DefaultEleData
Bestimmt Form und Farbe der Flächen.
Copy: Boolean; Optional; Default = true
gibt an, ob eine Kopie von EleData oder EleData selbst beim Element und in der EleDataList gespeichert werden soll.

Gleiche Funktion wie AddAreasFromVectGrid(), jedoch mit dem Grid-Typ JsgVect3InterGrid.

Hinweis: Diese Funktion gibt im Gegensatz zu AddAreasFromVectGrid() das letzte Flächen-Element nicht zurück.

Weitere Infos zur Seite
Erzeugt Dienstag, 22. Juli 2014
von wabis
Zum Seitenanfang
Geändert Freitag, 5. Februar 2016
von wabis