Flow Visualization
Ziel dieser Übung war die
Entwicklung einer Applikation zur Visualisierung von
Strömungsdatensätzen, wie sie zum Beispiel durch Messungen
oder Simulationen gewonnen werden. Die verwendeten Datensätze
enthalten mehrere Kanäle, in denen Informationen wie
Strömungsrichtung, Druck und Temperatur gespeichert sind, wobei
sich in den ersten drei Kanälen die x, y und z Komponenten
der Vektoren befinden, die die Strömungsrichtung
repräsentieren. Jeder Kanal kann zur Generierung der
Hintergrundtextur verwendet werden, was in einer Graustufendarstellung
des Datensatzes resultiert. Dieses Graustufenbild kann mit einer
Transferfunktion beliebig eingefärbt werden.
Die Strömung eines Datensatzes kann auf zwei Arten visualisiert werden: durch einen Arrowplot und/oder durch Streamlines.
Beim Arrowplot werden in regelmäßigen Abständen Pfeile gezeichnet, die in die Richtung der Strömung zeigen.
Strömungslinien folgen von einem Punkt aus der Richtung der
Strömungsvektoren. Zum Einsatz kommt hierbei der sogenannte
"Evenly Spaced Streamlines" Algorithmus, der dafür sorgt, dass die
Linien gleichmäßig über das Bild verteilt sind und sich
gegenseitig nicht schneiden. Grob beschrieben zeichnet der Algorithmus
von einem Seedpunkt ausgehend eine Streamline und übeprüft
anschließend für Punkte links und rechts der Linie (normal
auf den jeweiligen Linienpunkt) ob sie sich in genügend
großem Abstand zu den Punkten der bisher gezeichnet Linien
befinden. Falls ja wird von diesem neuen Seedpunkt aus wieder
eine Linie gezeichnet (mittels Eulerintegration), solange bis sie zu nahe an bereits
existierende Linien gerät. Jede neu gezeichnete Linie wird dann
wieder auf mögliche Seedpunkte untersucht, solange bis alle
Seedpunkte aller Streamlines gefunden und alle Streamlines gezeichnet
wurden.
Realisiert wurde dieses Projekt in Visual Studio 2005 mit C++, Qt, OpenGL und GLSL.
Wer das Prorgamm gerne selber mal ausprobieren würde, kann es sich hier runterladen: download