next up previous contents
Next: Fläche/Fläche Up: Die Klassifikationsfunktionen Previous: Volumen/Volumen

Volumen/Fläche

 

In diesem Abschnitt wird die Implementierung der Funktion zur Bestimmung der topologischen Beziehung zwischen einem Volumen und einer Fläche beleuchet. Diese erfolgte in der Klasse gtTetraNet, obwohl deren Umsetzung sicher auch innerhalb von gtTriangleNet stehen könnte. Dort wurde sich allerdings darauf beschränkt, die gtTetraNet-Version mit vertauschten Parametern aufzurufen und entsprechende Anpassungengif vorzunehmen.

Betrachten wir nun jedoch den eigentlichen Vorgang der Bestimmung von topologischen Beziehungen zwischen jeweils einem Volumen und einer Fläche. Dieser fußt wiederum auf dem Ansatz, die enthaltenen Simplexe (Dreiecke und Tetraeder) der beiden Netze zu extrahieren, zueinander in Beziehung zu setzen und diese Ergebnisse schließlich als Grundlage zur Bestimmung der topologischen Lage der beiden Objekte zu verwenden.

Wir benötigen also erneut eine Funktion zur Ermittlung der relativen räumlichen Lage eines Tetraeders zu einem Dreieck. Diese Funktionalität wird mit einer weiteren getPrimTopRel-Methode in der Klasse gtTetraNetElement angeboten. Algorithmus 3 zeigt das prinzipielle Vorgehen, welches sich nicht sehr von der Variante für zwei Tetraeder unterscheidet. Aufgrund der festgelegten Reihenfolge (Tetraeder zu Dreieck) sind einige topologische Beziehungen nicht möglich, so daß sich die Rückgabewerte auf disjoint, touch, covers, in und cross beschränken.

  algorithm2213

Wie unter Zuhilfenahme dieser Funktion die Bestimmung der topologischen Beziehung zwischen einem Volumen und einer Fläche vor sich geht, soll nun betrachtet werden - in Algorithmus 4 ist dieser Ablauf zu sehen. Nach der Initialisierung der Flags und Bestimmung der zu untersuchenden Dreiecke zum ausgewählten Tetraeder (durch eine nicht-strikte R-Baum-Anfrage), erfolgt die Ermittlung der topologischen Beziehung des ersten Tetraeder/Dreiecks-Paares (Zeile 6). Sind die so gefundenen Beziehungen tex2html_wrap_inline6174 von disjoint verschieden, können sie eine Veränderung der momentanen Gesamtbeziehung bewirkengif - die Flags müssen demnach angepaßt werden (Zeile 8).

  algorithm2236

Danach wird wieder berechnet, ob die topologische Beziehung der Simplexe auch auf den Rändern der beiden Objekte gilt (appliesOnSurface, Zeile 9) und demnach Sonderfälle differenziert werden müssen. So macht es z.B. einen Unterschied, ob ein covers_1D bezüglich des Randes des beteiligten Volumens festgestellt werden konnte, oder aber nur ein Dreieck im ``Innern`` berührt wird. Immer wenn der Rand an der Beziehung beteiligt ist, hat diese größere Auswirkungen auf das spätere Endresultat, was sich in Zeile 13 des topRel-Algorithmus widerspiegelt.

Im Zusammenhang einer solchen topologischen Beziehung tex2html_wrap_inline6206 werden schließlich auch noch mögliche Sonderfälle behandelt. Dies ist etwa im obigen Beispiel eines covers_1D nötig, dessen Segmentberührung auf dem Rand des Volumens liegt. Hier ist dann eine cross-Lage abzuleiten, wenn der Nachbar des beteiligten Dreiecks, welcher an diesem Segment anliegt, eine touch_1D-Beziehung zum aktuellen Volumen einnimmt. In Abb. 6.3 ist links eine solche Konfiguration dargestellt, während im rechten Fall ein ni zu folgern ist, wenn die beiden topologischen Beziehungen der benachbarten Dreiecke im Innern des Volumens auftreten.

  figure3296

table2264

Welche topologischen 3D-Beziehungen für den Fall von einem Tetraeder und zwei benachbarten Dreiecken vorkommen können, ist in Tabelle 6.2 aufgelistet. Da hier nicht die umgekehrte Richtung betrachtet wird, sind die Beziehungen covered und in nicht enthalten. Auf eine entsprechende Tabelle kann aber auch verzichtet werden, da sich die Implementierung für diesen Fall auf den Algorithmus 4 stützt.

Dieser verarbeitet nach der Untersuchung der Sonderfälle und einer eventuellen Betrachtung der Nachbarsimplexe die dadurch gewonnenen Erkenntnisse und aktualisiert in Zeile 13 den momentanen Status der topologischen Gesamtbeziehung. Bei einer cross-Lage ist dies jedoch unnötig, da in diesem Fall unmittelbar mit einem cross als Rückgabewert abgebrochen werden kann. Ansonsten werden die nächsten Simplexpaaren bestimmt und der bisher geschilderte Vorgang wiederholt, bis alle Tetraeder betrachtet wurden (Zeile 18) und die topologische Beziehung zwischen dem Volumen und der Fläche zurückgegeben werden kann.


next up previous contents
Next: Fläche/Fläche Up: Die Klassifikationsfunktionen Previous: Volumen/Volumen

Stefan Hecht
Thu Aug 26 14:06:24 MET DST 1999