Graphics Reference
In-Depth Information
Public Structure Elemente
' Struktur der Facetten
Public Bez As String
' z.B. BSTF-12345
Public GrundFarbe As Color
' Grundton der Farbe
Public P0 As Short
'
Public P1 As Short
' alle 2 | 3 | 4
Public P2 As Short
' Knoten-LFNR
Public P3 As Short
'
Public nx As Single
'
Public ny As Single
' Ebenen
Public nz As Single
' Gleichung
Public eD As Single
'
Public mitlZ As Single
' mittlere Z-Tiefe der Facette
Public MiniZ As Single
' kleinste Z-Tiefe der Facette
Public sicht As Boolean
' =T wenn sichtbar, sonst =F
Public fGlg As Boolean
' =T wenn Eb-Gleichung
berechnet
End Structure
Bei den Facettendaten sind Koordinaten ihrer Eckpunkte, die man sortieren könnte,
normalerweise nicht gespeichert, sondern nur deren Zeiger P 0 P 3 auf die zugehö-
rigen Knoten. Es sind zwei Z V -Werte vorgesehen:
mitlZ D die gemittelte Z-Tiefe aller Knoten ;
MiniZ D die kleinste Z-Tiefe eines Knotens der Facette :
Im ersten Schritt sind die Facettendaten zu ergänzen mit diesen Z V -Koordinaten.
Die Sortierung erfolgt absteigend nach .mitlZ , damit die am weitesten entfernte Fa-
cette an den Anfang, die zum Beobachter nächstgelegene ans Ende der Sortierliste
kommt. Nun folgt der eigentliche Tiefensortieralgorithmus. Dieser prüft in einer
Schleife für die jeweils „hinterste“ Facette, ob es eine oder mehrere andere Facetten
gibt, die zu falschen Verdeckungen mit dieser führen und ordnet ggf. die fraglichen
Facetten um.
Tiefenwerte mit Prioritätsliste werden im Objektraum in Globalkoordinaten auf-
gebaut. Bei n Facetten in der Szene sind insgesamt n 2 Schritte nötig, d. h., jede
Facette muss gegen jede andere geprüft werden. Das Gerüst eines Tiefensortier-
oder Prioritätslistenalgorithmus ist nachfolgend als fragmentarischer VB-Code mit
eingelagerter Beschreibung wiedergegeben:
Public Facette(4711) As Elemente ' alle Facetten
Public AnzFacet As Short
' Anzahl Facetten
'
j = 1
' eingestellt auf erste Facette
' Facette(0) ist Zwischenspeicher
Do
Fehler = False
Facette(j).tausch = False
Im Folgenden geht es ausschließlich um die am weitesten hinten liegende Facette
F(j)!
Search WWH ::




Custom Search