Beschreibung
In dieser Aufgabenstellung ist eine 2D Strömungsvisualisierung zu implementieren. Strömungsdaten werden in unterschiedlichsten Bereichen verwendet (Wissenschaft, Meteorologie, Industrie, ...), und können neben der Strömung noch andere Parameter (z.B. Temperatur, Druck, etc) beinhalten. Das Darstellen dieser Daten erlaubt es, Einsichten in die zugrundeliegenden Strömungsprozesse zu bekommen. Strömungsdaten sind üblicherweise als Vektorfeld definiert, wobei die Vektoren an jeder Stelle des Feldes die Richtung der Strömung anzeigen. Zusätzlich können noch andere Parameter wie Geschwindigkeit, Temperatur oder Druck gegeben sein.
Aufgabenstellung
In dieser Aufgabe soll als Renderingtechnik 2D Strömungslinien (2D Streamlines) implementiert werden, um die Strömungsdaten darzustellen. Strömungslinien sind definiert als Kurven in 2D, die an jeder Stelle immer der Strömung folgen, die durch das gegebene Vektorfeld definiert wird. Dadurch können sie verwendet werden, um die Richtung der Strömung visuell anzuzeigen.
Die Berechnung von Strömungslinien erfolgt üblicherweise Schritt für Schritt. Zuerst werden Startpunkten für die Strömungslinien definiert, und ausgehend davon werden die Strömungslinien schrittweise approximiert. Ein einfaches Verfahren zur Berechnung ist die Euler-Integration (Info). In jedem Schritt wird hier das neue Segment der Strömungslinie dadurch berechnet, dass die Strömung an der aktuellen Stelle ausgewertet wird, und das neue Segment tangential zu der Strömung an dieser Stelle definiert wird. Die Genauigkeit des Ergebnisses hängt dann vorallem von der gewählten Schrittweite ab.
Punktevergabe
Beschreibung | Punkte | Output |
---|---|---|
Streamlines
Mindestanforderung, genauere Beschreibung siehe oberhalb
Anforderungen: Visualisierung eines Strömungsdatensatzes mittels Streamlines, die mit Hilfe des Euler-Verfahrens berechnet wurden
|
26 | |
Runge-Kutta Verfahren
Die Berechnung von Strömungslinien mittels des Euler-Verfahrens hat auch Nachteile, vor allem die Abhängigkeit der Genauigkeit des Ergebnisses von der gewählten Schrittweite. Um diesen Nachteil auszugleichen, wurde die Approximation mittels Runge-Kutta-Verfahrens entwickelt (Info).
Die Idee dahinter ist, in jedem Teilschritt die Berechnung noch zusätzlich zu verfeinern. Es wird daher nur ein halber Euler-Schritt durchgeführt, und an der neuen Stelle die Strömung noch einmal zusätzlich ausgewertet. Das neue, verfeinerte, Ergebnis wird dann auf das aktuelle Segment angewendet. Dadurch ist es möglich, auch mit weniger Teilschritten zu einem genauen Ergebnis zu kommen.
Anforderungen: Korrekte Berechnungen der Streamlines mittels Runge-Kutta-Verfahren
|
4 | |
Gleichmäßige Verteilung
Um die Visualisierung noch zu verbessern, sollten die Strömungslinien möglichst gleichmäßig über die Bildfläche verteilt werden. Um das zu erreichen, kann der Algorithmus für Evenly Spaced Streamlines von Jobard und Lefer angewandt werden.
Die Idee dahinter ist, dass die Startpunkte der Streamlines immer in einem gewissen Abstand d zueinander gewählt werden. Die erste Streamline wird noch ohne weitere Bedingungen berechnet, und dann als aktuelle Streamline gespeichert. Ab der Berechnung der zweiten Streamline wird bei jedem Teilsegment überprüft, ob (i) sich das Segment im Abstand d zur aktuellen Streamline befindet, und ob (ii) eine maximale Zahl an Iterationen noch nicht erreicht wurde. Wenn beide Bedingungen zutreffen, wird das aktuelle Segment gezeichnet, ansonsten wird die Berechnung der aktuellen Streamline beendet. Immer die zuletzt gezeichnete Streamline wird dann als aktuelle Streamline gespeichert, und der Prozess beginnt mit dem nächsten Startpunkt von Neuem.
Anforderungen: Gleichmäßige Verteilung der Streamlines auf der Bildfläche, Abstand kann über den Parameter d reguliert werden
|
4 |
|
Farben
In den Daten sind außer der Strömung noch andere Parameter gespeichert, z.B. die Temperatur oder die Geschwindigkeit. Diese Werte können in der Visualisierung durch Farben dargestellt werden. Es können dabei entweder der Hintergrund, oder die Streamlines selbst farblich hervorgehoben werden.
Anforderungen: Visualisierung mindestens eines zusätzlichen Parameters durch Farben, Angabe einer Legende
|
4 | |
Pfeile
Streamliens geben einen Überblick über die Strömung, lassen aber noch keinen Schluss zu, in welche Richtung sich die Strömung bewegt. Es werden daher zusätzlich (oder auch manchmal statt) den Streamlines Pfeile verwendet, die die Richtung der Strömung angeben. Die Pfeile sollen an regelmäßen Orten auf der Bildfläche dargestellt werden und die Richtung der Vektoren an dieser Stelle angeben. Die Pfeile können alle diesselbe Längle haben. Die Pfeile können entweder zusammen mit den Streamlines, direkt auf diese darauf, oder als eigener Arrow-Plot (Pfeile in 2D) implementiert werden.
Anforderungen: Darstellung der Strömungsrichtung mit Pfeilen
|
4 | |
Interaktionsmöglichkeiten
Die Darstellung wird durch mehrere Parameter beeinflusst (z.B. Anzahl der Streamlines, Anzahl der Euler-Schritte, etc) und es ist sehr hilfreich wenn man diese Parameter direkt im Userinterface verändern kann.
Anforderungen: Mindestens drei interaktive Möglichkeiten die Darstellung zur beeinflussen
|
4 | |
Line Integral Convolution
Die Line Integral Convolution (LIC) ist eine Methode zur wissenschaftlichen Visualisierung von Vektorfeldern. Während Strömungslinien und Pfeile jeweils lokale Informationen abstrahieren, bietet die LIC die Möglichkeit das Vektorfeld in seinerm Gesamtheit darstellen zu können. Die Grundidee ist, dass ein zweidimensionales weißes Rauschen entlang eines Ströngsfeldes integriert wird (durch Faltung). Dadurch sind die Pixelwerte entlang der Strömung stark korreliert ("verwischt"), wodurch die Feldlinien optisch sehr gut sichtbar werden (Info).
Anforderungen: Funktionierende LIC-Implementierung
|
4 |
Datensätze
Für diese Aufgabe stellen wir drei Strömungsdatensätze zur Verfügung. Außer der Strömung (gegeben durch ein Vektorfeld sind noch zusätzliche Parameter verfügbar.
Alle Daten sind immer in einem rectilinearen Gitter angeordnet. Jeder Datensatz besteht aus zwei Dateien - einer *.gri und einer *.dat File. In der *.gri-Datei ist die Geometrie des Datensatzes abgelegt. Die ersten beiden Zeilen geben die Dimensionen in X- und Y-Richtung an. Die nächste Zeile bestimmt die Anzahl N der zusätzlichen Parameter, und die letzte Zeile gibt den Namen des zugehörigen *.dat-Files an. In der *.dat-Datei sind die Werte als floats gespeichert (immer im Format VX VY VZ P1..PN). Der Wert VZ kann ignoriert werden, da es sich um 2D Daten handelt.
Block | x = 314, y = 538 Download |
Zusätzliche Werte:
|
|
Hurricane Timestep 10 |
x = 500, y = 500 Download |
Zusätzliche Werte:
|
|
Hurricane Timestep 48 |
x = 500, y = 500 Download |
Zusätzliche Werte:
|
Die Datensätze dürfen im Rahmen der Visualisierung 1 VU für den Übungsteil verwendet, aber NICHT weitergegeben werden.
Links
Wikipedia - Vektorfelder; Informationen in Deutsch
Wikipedia - Euler; Informationen in Englisch
Wikipedia - Euler; Informationen in Deutsch
Wikipedia - Runge-Kutta; Informationen in Deutsch
Evenly Spaced Streamlines; Artikel von Jobard und Lefer, 2009
Wikipedia - Line Integral Convolution; Informationen in Deutsch
Wikipedia - Line Integral Convolution; Informationen in Englisch
Wikipedia - Euler; Informationen in Englisch
Wikipedia - Euler; Informationen in Deutsch
Wikipedia - Runge-Kutta; Informationen in Deutsch
Evenly Spaced Streamlines; Artikel von Jobard und Lefer, 2009
Wikipedia - Line Integral Convolution; Informationen in Deutsch
Wikipedia - Line Integral Convolution; Informationen in Englisch