Eine wichtige Hilfsfunktion für topologische Prädikate der
Volumen/Volumen-Situation stellt getTouchType dar. Sie
wird speziell von den gtTetraNet-Methoden
touch
und overlap
aufgerufen und dient der Ermittlung von Berührstellen und
echten Schnitten. Das Vorkommen eines echten Schnittes ist
für eine overlap-Lage notwendig, während Berührungen
von den touch-Tests gesucht werden. Der Rückgabewert von
getTouchType enthält dazu die Informationen, ob
Berührstellen zu verzeichnen waren und welche Dimensionen diese
aufweisen. Dazu werden alle auftretenden Berührobjekte bezüglich
ihrer Dimension erfaßt, doppelte Vorkommen und
Teilelemente
vernachlässigt und schließlich ein
Wert zurückgeliefert, der die jeweiligen Dimensionen
kodiert
:
int gtTetraNet::getTouchType(const gtTetraNet& t) const;
Desweiteren wurden im Zuge dieser Arbeit fehlende
contains-Funktionen implementiert, da deren Funktionalität
oft benötigt wurde. Weil diese Methoden für alle von gtObj
abgeleiteten Klassen definiert sind, erfolgte eine virtuelle
Deklaration:
virtual int gtTetraNet::contains(const gtTriangle* t, int strict=0) const; virtual int gtTetraNet::contains(const gtTetrahedron* t, int str=0) const; virtual int gtTetraNet::contains(const gtTriangleNet* t, int str=0) const; virtual int gtTetraNet::contains(const gtTetraNet* t, int strict=0) const;
Außerdem war es angebracht, für die meisten topologischen
Prädikate des Volumen/Fläche-Falles eine Hilfsfunktion
bereitzustellen, welche der strikten Version der
intersection-Methode entspricht, um einen echten
Schnitt von einer Berührung unterscheiden zu können:
int gtTetraNet::strictIntersects(const gtTriangleNet& t) const;