Graphics Reference
In-Depth Information
If (Keyj + Keyk) > 0 Then
MsgBox("Objekt enthält eine Durchdringung",,)
Facette(k).sicht = False
' Facette unsichtbar machen
End If
GoTo Ende_k
End If
Wenn bis hierher alle Tests durchlaufen sind und keine Bedingung erfüllt wer-
den konnte, muss Facette(k) vor Facette(j) eingeordnet werden. Hierzu werden
alle Facetten von . j / bis . k 1/ in der Liste jeweils um einen Platz nach hinten
verschoben und die ehemalige Facette(k) auf den Platz von F(j) abgelegt. Die-
se Vorgehensweise bringt die Sortierung der Z V -Werte nicht so durcheinander
wie beim Austausch von (k) durch (j), was in der Regel weitere Vertauschun-
gen zwischen (k) und (j) nach sich zieht.
Schieben:
Facette(0) = Facette(k)
Form=k-1TojStep -1
Facette(m + 1) = Facette(m)
Next
Facette(j) = Facette(0)
Fehler = True
' Fehler-Schalter wegen Verschiebung
GoTo Ende_j
Ende_k:
Next k
'
Ende_j:
If Fehler Then
Der Index j wird nicht erhöht, weil Facetten verschoben wurden und nun mit
der neuen Facette(j) die restlichen Facetten(k) in gleicher Weise zu prüfen
sind.
Else
Wenn alle Facetten(k) gegen F(j) fehlerfrei geprüft wurden, ist die Positi-
on von F(j) in der Liste in Ordnung. Die Prozedur wird fortgesetzt mit der
nächsten Facette(j) und dem noch folgenden Rest(k).
j=j+1
End If
Loop Until j = AnzFacet - 1
Ein Algorithmus zur Tiefensortierung kann nahezu beliebig kompliziert werden,
abhängig davon, welche Sonderfälle zu berücksichtigen sind. Auch dann ist es nicht
immer möglich, eine für jeden beliebigen Fall fehlerfreie Prioritätsliste zu erstellen,
beispielsweise bei großen Verzerrungen in Zentralprojektionen.
Search WWH ::




Custom Search