Graphics Reference
In-Depth Information
Stellt man dieses Objekt mit diesen Koordinaten als Parallelprojektion dar, erhält
man die Optik einer Zentralprojektion. (Die Zahlenrechnung stammt von Ab-
schn.
8.3.1
.) Es ist kein Problem, wenn im Beispiel die Z
V
-Koordinaten negativ
sind, da man jetzt die Projektionsfläche entlang der Z
V
-Achse beliebig verschie-
ben kann.
Bei den Facettendaten sind Koordinaten ihrer Eckpunkte, die man sortieren könn-
te, normalerweise nicht gespeichert, sondern nur deren Zeiger P
0
-P
3
auf die zu-
gehörigen Knoten. Mit einem Vorlaufprogramm werden für jede Facette die Z
V
-
Koordinaten ihrer Knoten zusammengesucht und daraus der Mittelwert
mitlZ
ge-
bildet. Dieser Wert gehört in die Datenstruktur der Elemente. Anschließend werden
die Facetten sortiert nach fallenden Z
V
-Werten.
Public Structure Elemente ' Struktur der Elemente
Public ElKno As Short ' Anzahl Element-Knoten
Public GrundFarbe As Color ' Grundton der Farbe
Public P0, P1, P2, P3 As Short ' alle 2 | 3 | 4 Knoten-lfnr
Public nx, ny, nz, eD As Single ' Ebenen-Gleichung
Public mitlZ As Single
' mittlere Z-Tiefe Facette
Public Xmax, Xmin As Single
' max / min X-Ausdehnung
Public Ymax, Ymin As Single
' max / min Y-Ausdehnung
End Structure
Im gleichen Arbeitsgang lassen sich auch die maximalen/minimalen Ausdehnungen
der einzelnen Facetten auf der Projektionsfläche in X
V
- und Y
V
-Richtung feststel-
len. Diese sind hilfreich bei der Ermittlung der Hilfsrichtungen
{r
1
}
und
{r
2
}
,siehe
Skizze oben und Abschn.
9.5.3
. Und schließlich lässt sich ebenfalls im gleichen
Arbeitsgang die gesamte Breite und Höhe der Szene ermitteln:
Dim j, k As Short
Dim Ecke(3) As Short
' lfnr-Zeiger auf die Knoten
Dim Temp As Single
' Zwischenspeicher
Dim Hmax, Hmin As Single
' max / min Xv-Koordinate
Dim Vmax, Vmin As Single
' max / min Yv-Koordinate
Dim Horzmax, Horzmin As Single
' max / min Szenen-Breite
Dim Vertmax, Vertmin As Single
' max / min Szenen-Höhe
Const Wert As Single = 9999.99
'
Horzmax = -Wert : Horzmin = Wert
Vertmax = -Wert : Vertmin = Wert
'
' Schleife über alle Facetten
Forj=1ToAnzFacet