Universität des Saarlandes
Fachbereich 14 - Informatik

Dr. S. Schirra, Dr. E. Schömer

SOFTWAREPRAKTIKUM WS 99/00

8. Übungsblatt
(Abgabe: 13. - 17. Dezember 1999)


1.
Aufgabe:      VEKTOR- UND RASTERDATEN (Punkte: 8)

Integrieren Sie die Visualisierung der Fluss- und Städtedaten und die 3D-Visualisierung der Geländedaten zu einem gemeinsamen Programm, so dass man alle drei Datensätze wahlweise getrennt oder gemeinsam darstellen kann.

2.
Aufgabe:      T(RIANGULATED) I(RREGULAR) N(ETWORKS) (Punkte: 8)

Gegeben sei ein TIN in folgendem Format:



a1x a1y a1z b1x b1y b1z c1x c1y c1z
a2x a2y a2z b2x b2y b2z c2x c2y c2z
...
aNx aNy aNz bNx bNy bNz cNx cNy cNz



In jeder Zeile sind jeweils die x-, y- und z-Koordinaten der Eckpunkte eines Dreiecks aufgelistet.
 
Abbildung 1: Projektion eines TINs in die xy-Ebene
\begin{figure}
\begin{center}
\epsfxsize=8cm
\epsffile{tin.eps}
\end{center}\end{figure}

Wir wollen die obige Repräsentation des TINs durch Überführung in ein Indexed Face Set optimieren. Viele Eckpunkte des TINs gehören zu mehreren Dreiecken und werden deshalb mehrfach aufgelistet. Bei einem Indexed Face Set listet man zunächst alle Eckpunkte des TINs (ohne Wiederholung) auf und beschreibt die Dreiecke dann einfach durch ihre Indizes:



v1x v1y v1z // Koordinaten der 1. Ecke 
v2x v2y v2z // Koordinaten der 2. Ecke
...
vKx vKy vKz // Koordinaten der K. Ecke
i1 j1 k1    // Indizes des 1. Dreiecks
i2 j2 k2    // Indizes des 2. Dreiecks
...
iN jN kN    // Indizes des N. Dreiecks



Um eine solche Darstellung effizient zu berechnen, muss man in der Lage sein, die Menge aller Eckpunkte so zu verwalten, dass man von einer zu bearbeitenden Ecke entscheiden kann, ob sie bereits vorher betrachtet wurde. Entwerfen Sie zu diesem Zweck eine eigene Klasse, die es ermöglicht, in einfacher Weise die eigentliche Datenstruktur zur Speicherung der Eckpunktdaten auszutauschen. Testen Sie die Containerklassen list, vector und map hinsichtlich ihrer Eignung zur Speicherung der Eckpunkte. Vergleichen Sie die resultierenden Laufzeiten anhand der Beispieldateien tin?.tri im Verzeichnis /home/stud/praxprog/GeoData.

3.
Aufgabe:      VISUALISIERUNG EINES TINS (Punkte: 4)

Verbessern Sie die TIN-Visualisierung aus der Vorlesung, indem Sie ein Indexed Face Set benutzen und für jeden Eckpunkt einen eigenen Normalenvektor angeben. Bestimmen Sie diesen Normalenvektor durch Mittelung der Normalen der benachbarten Dreiecke. Benutzen Sie als Schattierungsmodell GL_SMOOTH.