User Tools

Site Tools


representation_of_the_data_on_gpu

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
representation_of_the_data_on_gpu [2017/12/03 08:42]
178.91.253.70
representation_of_the_data_on_gpu [2017/12/03 09:09] (current)
178.91.253.70
Line 8: Line 8:
 pro Frame, also 0.2 FPS) für eine interaktive Visualisierung (> 10 FPS). Hierfür verwenden wir OpenGL ES 2.0, um pro Frame, also 0.2 FPS) für eine interaktive Visualisierung (> 10 FPS). Hierfür verwenden wir OpenGL ES 2.0, um
 mit einigen Optimierungen mehr als 20 FPS für den gleichen Datensatz zu erreichen. mit einigen Optimierungen mehr als 20 FPS für den gleichen Datensatz zu erreichen.
 +
 +----
 +
 +__**Vertex Buffer**__
 +
 +
 +Die Festlegung auf OpenGL ES 2.0 verhindert die Benutzung von Geometry Shadern, daher wird bei Programmstart
 +ein großer Triangle Strip erzeugt, der die Vertices für die höchst mögliche Anzahl an Kurven für einen Datensatz
 +bereit hält und im Vertex Buffer abgelegt wird.
 +
 +{{:​wiki:​tristrip.png?​400|}}
 +
 +Fig: Layout einer Kurve als Triangle Strip im Vertex Buffer.
 +
 +
 +Damit ein Draw-Aufruf für alle Kurven genügt, werden die Kurven an den Enden mit degenerierten Dreiecken
 +verbunden, also mit Dreiecken, die eine Fläche = 0 haben und daher nicht angezeigt werden. Dafür bekommen die
 +ersten beiden Punkte P0 und P1 jeder Kurve die gleiche Koordinate zugewiesen, wie auch die letzten beiden Punkte Pn
 +und Pn−1 auf den gleiche Koordinate fallen (Für die Lesbarkeit nicht im Bild dargestellt). Als Triangle Strip entstehen
 +dann zwei unendlich dünne Dreicke zwischen Kurven die hintereinander im Vertex Buffer gespeichert sind.
 +
 +Als Attribut bekommt jeder Vertex im Vertex Buffer einen Wert für side der entweder 1 oder -1 sein kann.
 +Außerdem hat jeder Vertex ein Attribut tex_pos eine Texturkoordinate für die Textur tex_1 Gegen¨uberliegende
 +Punkte einer Kurve haben den gleichen Wert für tex_pos und unterscheiden sich nur im Wert für side.
 +
 +{{:​wiki:​tex.png?​400|}}
 +
 +Fig: Verbindungen zwischen den geladenen Texturen und dem Vertex Buffer.
 +
 +
 +----
 +
 +__**tex_1**__
 +
 +
 +Für jedes Jahr wird an den Namen tex_1 eine andere Textur gebunden. An der Texturkoordinate tex_pos ist die
 +Positionen des aktuellen Kurvenpunkte nach der Bezier Interpolation gespeichert sowie der Interpolationsparameter
 +t. t wird z.B. zur Farbinterpolation der Kurve verwendet (von Export t = 0 nach Import t = 1). Die Pixel einer
 +Kurve mit den Werten jedes Kurvenpunktes sind nebeneinander gruppiert. Am Anfang einer Solchen Gruppe liegt
 +ein weiterer Pixel, der Daten zur ganzen Kurve kodiert. Mit Hilfe von t kann die Position dieses Pixels berechnet
 +werden. Er enthält IDs für den Start- und Endknoten jeder Kurve, die als Koordinate für tex_selection genutzt
 +werden können und eine weitere Texturkoordinate tex_pos für den Zugriff auf tex_2
 +
 +
 +__**tex_selection**__
 +
 +
 +tex_selection speichert für jede Knoten-ID einen Wert von 0 für unausgewählt bis 1 für selektiert.
 +
 +
 +__**tex_2**__
 +
 +Unter tex_2 wird für jedes Jahr und jede ausgewählte Produktkategorie eine andere Textur geladen. Sie enthält
 +mit conn value die Breite einer Verbindung/​Kurve (für den Einheitskreis skaliert) und mit conn_angle_dist den
 +Winkelabstand zwischen den Endpunkten einer Kurve.
 +
 +----
 +----
 +
 +
 +__**Vertex Shader**__
 +
 +Der Vertex Shaderübernimmt die Textur-Lookups und bestimmt die Normale (normal an einem Kurvenpunkt,​ durch
 +Berechnung der Position der beiden Nachbarpunkte. Kurven werden entsprechend ihrer Breite skaliert, in dem
 +vert pos in Richtung der Normale verschoben wird:
 +
 +pos = vert pos + normal * side * conn value * 0.5
 +
 +
 +----
 +
 +
 +__**Datenformat**__
 +
 +Dieses Kapitel beschreibt das Dateiformat der Datensätze. Ein Datensatz beschreibt die Veränderung
 +eines Netzwerks über die Zeit. Die zusätzlichen hierarchischen Informationen,​ die in der Visualisierung als radialer Icicle Plot
 +dargestellt werden, bleiben konstant über die Zeit. Die Kanten und deren Gewichte (Handelsverbindungen) verändern
 +sich über die Zeit und mit der Verbindungsart (Produktklasse). Diese Informationen eines Datensatzes werden in drei
 +CSV-Dateien gespeichert. Die Dateinamen eines Datensatzes sollten den gleichen Präfix haben und sich nur in der
 +Dateiendung unterscheiden. Die erste Zeile ist jeweils f¨ur den Header reserviert, der beim Einlesen überprüft wird
 +um eine Verwechslung zu verhindern.
 +
 +  * **Verbindungsarten**
 +
 +Die möglichen Verbindungsarten werden in einer Datei mit der Endung *.cid.csv gespeichert.
 +
 +<code c>
 +connection_type_id,​ short_name , long_name
 +0 ,TOTAL, Total
 +1 , Apples , Apples
 +2 , Oranges , Oranges
 +</​code>​
 +
 +Listing: Beispiel simple.cid.csv
 +
 +
 +- connection type id: Index der Verbindungsart
 +- short name: Eine kurze Bezeichnung
 +- long name: Eine möglicherweise längere Bezeichnung
 +
 +**Wichtig:​** Die erste Verbindungsart mit der ID 0 ist für TOTAL reserviert. Eine Verbindung vom Typ TOTAL
 +enthält üblicherweise die Summe aller anderen Verbindungsarten für den gleichen Zeitwert.
 +
 +
 +  * **Hierarchie**
 +
 +
 +Die hierarchischen Informationen bilden einen Baum und werden in einer Datei mit der Endung *.tree.csv
 +gespeichert.
 +
 +<code c>
 +node_id , parentid , short_name , long_name
 +1 ,0 , Root , Root Node
 +2 ,1 ,EU, ” European Union ”
 +3 ,1 ,NA, ” North America ”
 +4 ,2 ,DEU, ” Germany”
 +5 ,2 , ESP , ” Spain ”
 +6 ,3 ,CAN, ” Canada ”
 +7 ,3 ,USA, ” United States”
 +</​code>​
 +
 +- node_id: Index des Knotens
 +- parent_id: Index der Elternknotens
 +- short_name: Eine kurze Bezeichnung,​ die z.B. im Icicle Plot verwendet wird
 +- long_name: Eine möglicherweise längere Bezeichnung,​ die z.B. in den Tooltips verwendet wird
 +
 +**Wichtig:​** Der erste Knoten mit der ID 1 ist für den Wurzelknoten reserviert. Da dieser keinen Elternknoten hat, ist parent id = 0. Alle Blätter des Baums sollten auf einer Ebene liegen.
 +
 +
 +
 +  * **Verbindungen**
 +
 +
 +Die hierarchischen Informationen werden in einer Datei mit der Endung *.conn.csv gespeichert.
 +
 +<code c>
 +from_node_id , to_node_id , connection_type_id , value , time
 +4 ,5 ,0 ,45.4 ,2016
 +4 ,5 ,1 ,12.1 ,2016
 +4 ,5 ,0 ,43.0 ,2015
 +4 ,5 , 1 ,9.8 ,20 15
 +4 ,6 ,0 ,27.4 ,2016
 +4 ,6 , 1 ,2.2 ,20 16
 +. . .
 +</​code>​
 +
 +- from node id: Index des Startknotens
 +- to node id: Index des Zielknotens
 +- connection type id: Index der Verbindungsart
 +- value: Das Gewicht (Handelsvolumen)
 +- time: Ein Zeitwert (meist eine Jahreszahl)
 +
 +In einer *.conn.csv Datei wird jede Handelsverbindung von jeden Zeitwert (Jahr) und jeder Verbindungsart
 +gespeichert. Verbindungen sollten nur zwischen Blättern des Baum definiert werden.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  
representation_of_the_data_on_gpu.1512286938.txt.gz · Last modified: 2017/12/03 08:42 by 178.91.253.70