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
Anpassungen
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.
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
von disjoint
verschieden, können sie eine Veränderung der momentanen
Gesamtbeziehung bewirken
- die Flags müssen demnach angepaßt werden
(Zeile 8).
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
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.
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.