WaBis

walter.bislins.ch

JSG3D: JsgGraphEle

Die meisten Properties eines Grafik-Elementes (JsgGraphEle) lassen sich nur über die JsgGraphEle Funktionen abfragen. JsgGraphEle Objekte können nicht explizit erzeugt werden, sondern nur mit Funktionen wie AddPoint(), AddLine(), AddTriangle(), AddRect() usw.

JsgGraphEle Typen

Es gibt drei Typen von Grafik-Elementen: Punkte, Linien und Flächen. Für alle Typen gibt es nur ein JsgGraphEle Objekt. Zur Unterscheidung der Typen wird die Anzahl der Punkte NPoints herangezogen.

  • Punkte haben 1 Referenz auf einen Punkt (NPoints = 1)
  • Linien haben 2 Referenzen auf Punkte (NPoints = 2)
  • Flächen haben 3 und mehr Referenzen auf Punkte (NPoints > 2)

JsgGraphEle Klasse

JsgGraphEle = {
NPoints: Integer(>0); Private; → GraphEleNPoints()
PointList: JsgVect3List; Private; → GraphElePoint()
PointListVT: JsgVect3List; Private; → GraphElePointVT()
Center: JsgVect3; Private; → GraphEleCenter()
CenterVT: JsgVect3; Private; → GraphEleCenterVT()
Normal: JsgVect3; Private; → GraphEleNormal()
Data: JsgEleData; ReadOnly; Init = DefaultEleData
PointIxList: Array of Integer; Private; → JsgGraphEle Funktionen
}

Grafik-Elemente werden nicht explizit erzeugt sondern intern mit den JsgDisplayList Funktionen.

Die Grafik-Elemente der DisplayList speichern ihre Punkte in der PointList. Dadurch können Linien und Flächen gemeinsame Punkte teilen. Über die JsgGraphEle Funktionen kann auf die Punkte der Grafik-Elemente zugegriffen werden.

Unmittelbar vor dem Zeichnen der DisplayList werden alle Punkte der PointList in das Koordinatensystem der Kamera transformiert und in der PointListVT gespeichert. Zudem wird für alle Grafik-Elemente das Zentrum berechnet und in Center gespeichert. Für Flächen-Elemente wird zudem der Normalen-Vektor berechnet und in Normal gespeichert.

Vor dem Zeichnen eines Grafik-Elementes wird eine allenfalls installierte Callback-Funktion AreaAttrFunc, LineAttrFunc oder PointAttrFunc gerufen, der das Grafik-Element und Standard-Attribute für das Element übergeben werden. Die Callback-Funktion kann auf alle hier aufgeführten Properties des Grafik-Elementes zugreifen und daraus Attribute wie Farbe, Strichdicke und Symbolgrösse berechnen.

JsgGraphEle Properties

NPoints Anzahl Punkte, aus denen das Grafik-Element besteht
PointList Liste mit den Punkten des Grafik-Elementes
PointListVT Liste mit den Punkten des Grafik-Elementes (Camera-Koordinaten)
Center Zentrum des Grafik-Elementes
CenterVT Zentrum des Grafik-Elementes (Camera-Koordinaten)
Normal Normalen-Vektor des Flächen-Elementes
Data Attribute eines Grafik-Elementes
PointIxList Indizes zu den Punkt-Koordinaten des Grafik-Elementes.

JsgGraphEle Funktionen

GraphEleNPoints() Abfragen der Anzahl Punkte
GraphElePoint() Punkte eines Grafik-Elementes abfragen
GraphElePointVT() Punkte in Kamera-Koordinaten abfragen
GraphEleCenter() Zentrum eines Grafik-Elementes abfragen
GraphEleCenterVT() Zentrum in Kamera-Koordinaten abfragen
GraphEleNormal() Normalen-Vektor eines Flächen-Elementes abfragen

Für Funktionen, welche JsgGraphEle Objekte erzeugen, sie JsgDisplayList Funktionen.

JsgGraphEle.NPoints

JsgGraphEle.nPoints: Integer(>0); Private; → GraphEleNPoints() 

Anzahl Punkte, welche das Grafikelement definieren:

  • 1 Punkt: Punkt-Element
  • 2 Punkte: Linien-Element
  • 3 und mehr Punkte: Flächen-Element

Die Anzahl Punkte kann mit der Funktion GraphEleNPoints() abgefragt werden.

JsgGraphEle.PointList

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

Liste mit den Punkten (Koordinaten) des Grafik-Elementes. Das Grafik-Element hat NPoints Einträge in dieser Liste.

Auf die Punkte des Grafik-Elementes kann mit der Funktion GraphElePoint() zugegriffen werden.

JsgGraphEle.PointListVT

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

Liste mit den ins Koordinatensystem der Camera transformierten Punkte des Grafik-Elementes. Das Grafik-Element hat NPoints Einträge in dieser Liste.

Auf diese Punkte des Grafik-Elementes kann mit der Funktion GraphElePointVT() zugegriffen werden.

Achtung: Diese Punkte sind nur in den Callback-Funktionen AreaAttrFunc, LineAttrFunc und PointAttrFunc definiert!

JsgGraphEle.Center

JsgGraphEle.Center: JsgVect3; Private; → GraphEleCenter() 

Mittelpunkt des Grafik-Elementes. Bei Punkten ist dieser identisch mit dem einzigen Punkt in PointList. Bei Linien ist dies der Mittelpunkt zwischen Start- und Endpunkt.

Bei Flächen ist der Mittelpunkt der vektorielle Mittelwert aller Punkte der Fläche. Wenn eine Fläche mehr als 3 Punkte hat und diese nicht in einer Ebene liegen, so liegt auch der Flächenmittelpunkt nicht auf einer Ebene mit den Punkten.

Auf den Mittelpunkt des Grafik-Elementes kann mit der Funktion GraphEleCenter() zugegriffen werden.

Achtung: Dieser Punkt ist nur in den Callback-Funktionen AreaAttrFunc, LineAttrFunc und PointAttrFunc definiert!

JsgGraphEle.CenterVT

JsgGraphEle.CenterVT: JsgVect3; Private; → GraphEleCenterVT() 

Mittelpunkt Center des Grafik-Elementes im Koordinatensystem der Camera.

Auf diesen Mittelpunkt kann mit der Funktion GraphEleCenterVT() zugegriffen werden.

Achtung: Dieser Punkt ist nur in den Callback-Funktionen AreaAttrFunc, LineAttrFunc und PointAttrFunc definiert!

JsgGraphEle.Normal

JsgGraphEle.Normal: JsgVect3; Private; → GraphEleNormal() 

Einheitsvektor (Länge = 1), der senkrecht auf einem Flachen-Element steht. Dieser Vektor ist bei Punkten und Linien nicht definiert.

Bei Flächen mit mehr als 3 Punkten, welche nicht in einer Fläche liegen, wird ein vektorieller Mittelwert gebildet.

Auf den Normalen-Vektor des Flächen-Elementes kann mit der Funktion GraphEleNOrmal() zugegriffen werden.

Achtung: Dieser Vektor ist nur in den Callback-Funktionen AreaAttrFunc, LineAttrFunc und PointAttrFunc definiert!

JsgGraphEle.Data

JsgGraphEle.Data: JsgEleData; ReadOnly 

Jedem Grafik-Element ist ein JsgEleData Objekt zugewiesen, in welchen seine grafischen Attribute gespeichert sind.

JsgGraphEle.PointIxList

JsgGraphEle.PointIxList: Array of Integer; Private 

Die Punkt-Koordinaten der Grafik-Elemente werden nicht beim Grafik-Element selbst gespeichert, sondern in der PointList der DisplayList. Für jeden Punkt des Grafik-Elementes gibt es einen Eintrag in der PointIxList. Über den Index in dieser Liste werden die entsprechenden Koordinaten in der PointList gefunden.

Auf die PointIxList kann nicht zugegriffen werden. Der Zugriff auf die Punkte erfolgt über die Funktion GraphElePoint().

JsGraph3D.GraphEleNPoints()

JsGraph3D.GraphEleNPoints( Element )

Element: JsgGraphEle
Return: Integer(>0)

Abfragen der Anzahl Punkte des Grafik-Elementes Element. Die Anzahl Punkte bestimmt den Typ des Elementes:

  • n = 1 → Typ Punkt
  • n = 2 → Typ Linie
  • n > 2 → Typ Fläche

Die einzelnen Punkte können mit den Funktionen GraphElePoint() und GraphElePointVT() abgefragt werden.

JsGraph3D.GraphElePoint()

JsGraph3D.GraphElePoint( Element, i )

Element: JsgGraphEle
i: Integer(>=0,<NPoints)
Return: JsgVect3; Read Only

Gibt den i-ten Punkt des Grafik-Elementes Element zurück. Auf den Punkt darf nur lesend zugegriffen werden.

JsGraph3D.GraphElePointVT()

JsGraph3D.GraphElePointVT( Element, i )

Element: JsgGraphEle
i: Integer(>=0,<NPoints)
Return: JsgVect3; Read Only

Gibt den i-ten Punkt des Grafik-Elementes Element in Kamera-Koordinaten zurück. Auf den Punkt darf nur lesend zugegriffen werden.

Achtung: Diese Punkte sind nur in den Callback-Funktionen AreaAttrFunc, LineAttrFunc und PointAttrFunc definiert!

JsGraph3D.GraphEleCenter()

JsGraph3D.GraphEleCenter( Element )

Element: JsgGraphEle
Return: JsgVect3; Read Only

Gibt das Zentrum des Grafik-Elementes Element zurück. Auf den Punkt darf nur lesend zugegriffen werden.

Achtung: Dieser Punkt ist nur in den Callback-Funktionen AreaAttrFunc, LineAttrFunc und PointAttrFunc definiert!

JsGraph3D.GraphEleCenterVT()

JsGraph3D.GraphEleCenterVT( Element )

Element: JsgGraphEle
Return: JsgVect3; Read Only

Gibt das Zentrum des Grafik-Elementes Element in Kamera-Koordinaten zurück. Auf den Punkt darf nur lesend zugegriffen werden.

Achtung: Dieser Punkt ist nur in den Callback-Funktionen AreaAttrFunc, LineAttrFunc und PointAttrFunc definiert!

JsGraph3D.GraphEleNormal()

JsGraph3D.GraphEleNormal( Area )

Area: JsgGraphEle
Return: JsgVect3; Read Only

Gibt den Normalen-Vektor des Flächen-Grafik-Elementes Area zurück. Der Vektor hat die Länge 1. Auf den Vektor darf nur lesend zugegriffen werden.

Achtung: Dieser Vektor ist nur in den Callback-Funktionen AreaAttrFunc, LineAttrFunc und PointAttrFunc definiert!

Weitere Infos zur Seite
Erzeugt Mittwoch, 23. Juli 2014
von wabis
Zum Seitenanfang
Geändert Dienstag, 19. September 2017
von wabis