next up previous contents
Next: Die Klasse gtTriangleNet Up: Zusätzliche Funktionalität Previous: Wichtige interne Funktionen

Die Klasse gtTetraNetElement

 

In der GEOTOOLKIT-Klasse gtTetraNetElement werden die Netzelemente der Tetraedernetze - also die enthaltenen Tetraeder mit ihren jeweiligen Nachbarschaftszeigern - modelliert. Da die Methoden der einzuführenden topologischen Komponente für Flächen und Volumina einen top-down-Ansatz verfolgen, bietet sich ein Entwurf auf dieser Ebene der Modellierung für viele Teile der Algorithmen an. Es sollen nun die wichtigsten Hilfsfunktionen angegeben werden, die hierzu innerhalb von gtTetraNetElement bereitgestellt wurden.

Die Bestimmung von topologischen Beziehungen von Volumina/Flächen (simpliziale Komplexe) erfolgt über den Zwischenschritt der enthaltenen Simplexe, welche zuerst auf ihre relative räumliche Lage hin untersucht werden. Dies geschieht mittels getPrimTopRel, welches die topologische Beziehung der beiden beteiligten Objekte als topFlag zurückliefert. In der Klasse gtTetraNetElement existieren hierzu die folgenden beiden Varianten, um sowohl zwei Tetraeder, als auch ein Tetraeder zu einem Dreieck in Bezug setzen zu können:

   topFlag gtTetraNetElement::getPrimTopRel(const
                              gtTetraNetElement* pTetNE) const;

   topFlag gtTetraNetElement::getPrimTopRel(const
                              gtTriangleNetElement* pTriNE) const;


Um überprüfen zu können, ob die topologische Beziehung der beiden Simplexe auch auf dem Rand der zugrundeliegenden Netze gilt, können die appliesOnSurface-Funktionen verwendet werden:

   int gtTetraNetElement::appliesOnSurface(const gtTetraNetElement* pTetNE,
                                           const topFlag flag) const;

   int gtTetraNetElement::appliesOnSurface(const gtTriangleNetElement* pTriNE,
                                           const topFlag flag) const;


Wenn im Volumen/Volumen-Fall ein covers_2D bzw. covered_2D oder in der Volumen/Fläche-Konfiguration ein covers_1D bzw. covered_1D bezüglich des Volumenrandes festgestellt wurde, so kann es genau dann zu einem overlap bzw. cross kommen, wenn der Nachbar des bedeckten Simplexes ein touch_2D resp. ein touch_1D zu dem aktuellen Simplex des anderen Netzes aufweist (vgl. Abb. 6.1). Diese topologischen Fälle können schließlich mit den folgenden Funktionen erkannt werden:

  figure3250

   int gtTetraNetElement::nextTwoTouch(const gtTetraNetElement* pTetNE,
                                       const topFlag flag) const;

   int gtTetraNetElement::nextOneTouch(const
                                       gtTriangleNetElement* pTriNE) const;



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