next up previous contents
Next: Die Klassifikationsfunktionen Up: Zusätzliche Funktionalität Previous: Die Klasse gtTriangleNetElement

Globale Funktionen und Datentypen

 

Neben den Erweiterungen der 4 zuvor betrachteten Klassen wurde das GEOTOOLKIT noch um die Klasse topTypes, in der das Repräsentationsmodell für die im GEOTOOLKIT modellierten topologischen Beziehungen festgelegt wurde, ergänzt. Zu diesem Zweck dient der Aufzählungstyp topFlag, welcher schon mehrfach im Zusammenhang der Klassifikationsfunktionen angesprochen wurde. Eine geeignete Ausgabe der topologischen Beziehungen ist ebenso implementiert, wie eine Funktion zur Bestimmung der Dimension einer eventuellen Berührstelle und die Umsetzung des in Kapitel 5 eingeführten Konzeptes des Abstands zweier topologischer Beziehungen:

   enum topFlag{NO_REL=0,
                DISJOINT=1,
                TOUCH_0D=2, TOUCH_1D=3, TOUCH_2D=4,
                CROSS=5,
                OVERLAP=6,
                COVERED_0D=7, COVERED_1D=8, COVERED_2D=9,
                COVERS_0D=10, COVERS_1D=11, COVERS_2D=12,
                IN=13,
                NI=14};

   inline int dim (const topFlag flag);

   inline int dist(topFlag flag1, topFlag flag2, int ff=0);

   inline ostream& operator<<(ostream &o, topFlag &flag);


Die Funktion dist nimmt zwei topologische Beziehungen anhand ihrer topFlags entgegen und bestimmt dann gemäß Tabelle 5.2 ihren topologischen Abstand. Das Flag ff gibt dabei an, ob es sich um den Fall zweier Flächen handelt, da dann die geklammerten Werte aus der Tabelle gelten. Als Default wird aber davon ausgegangen, daß mindestens ein Volumen involviert ist (ff=0).

Alle sonstigen Hilfsfunktionen werden hier nicht aufgezählt, obwohl eine Funktion noch angegeben werden soll, weil sie für den in Abb. 5.5 dargestellten Sonderfall zweier Flächen sehr wichtig ist. Wie in diesem Zusammenhang schon erwähnt wurde, gibt es noch einen allgemeineren Fall dieses Beispieles, in dem die beteiligten Winkel zur Ermittlung der topologischen Beziehung einfließen müssen. Dieser Vorgang wird u.a. durch die folgende Funktion realisiertgif:

   int anglePosition(const gtPoint& p0, const gtPoint& p1,
                     const gtPoint& p2, const gtPoint& p3,
                     const gtPoint& p4);



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