Benutzerdoku
Allgemeines
Nach erfolgreichem Starten der Applikation, sieht man das User Interface. Der erste Schritt ist klarerweise das Laden eines Datensatzes.
Laden eines Datensatzes
Über das Menü "File" > "Open" ist es möglich einen Datensatz zu laden. Die Datensätze haben das Fileformat .rsf, das von Danny Holten, dem Autor des Papers "Hierarchical Edge Bundles", in seiner Applikation Extravis verwendet wird. Zu dieser Applikation werden eigene fiktive Datensätze und 2 Datensätze von Extravis (Ausführungspfad von JHotDraw - Java GUI Framework für technische und strukturierte Grafiken ("jhotdraw-3drawings-5figures.initial.rsf") und JPacman - Applikation für Lernzwecke in einer Softwaretesting-Lehrveranstaltung an der Technischen Universität Delft ("pacman-4moves-food-8moves-die-quit-start-2moves-wall.initial.rsf")) mitgeliefert. Nach dem Laden des Datensatzes wird der Datensatz so auf dem Bildschirm dargestellt, dass all seine Knoten zu sehen sind.
Benutzerinteraktion
Um den geladenen Datensatz besser erforschen zu können, kann man in die Darstellung hineinzoomen und diese verschieben:
- Zoomen: Entweder mit dem Scrollrad der Maus (hinaufschieben zoomt hinein und herunterschieben zoomt heraus), oder mit gedrückter rechten Maustaste und Verschieben der Maus nach oben (hineinzoomen) oder unten (herauszoomen). Bei der zuletzt genannten Möglichkeit hat der User sozusagen mehr Kontrolle, vor allem kann man auch kleine Details gut heran- bzw. herauszoomen.
- Verschieben: Bei gedrückter linker Maustaste und Verschieben der Maus, kann man den Datensatz beliebig verschieben.
Relation Parameters
Mit Hilfe der Relation Parameters ist es möglich die Darstellung der Adjazenzrelationen (B-Splines) zu verändern.
Bündelstärke β
Durch Variieren der Position des Sliders am linken oberen Rand der GUI kann die Bündelstärke verändert werden. Befindet sich der Slider ganz links, so ist die Bündelstärke gleich 0 und die Kanten werden als gerade Linien zwischen den Knoten gezeichnet. Ist dieser ganz rechts, so ist die Bündelstärke 1 und die Kanten werden als B-Splines mit uniformem Knotenvektor gezeichnet, wobei sämtliche Knoten welche sich auf dem Pfad zwischen den entsprechenden Knoten befinden als Kontrollpunkte dienen. Für alle Sliderpositionen zwischen linkem und rechtem Rand wird das dem jeweiligen B-Spline zugrunde liegende Kontrollpolygon aus dem ursprünglichen Kontrollpolygon berechnet und der B-Spline mit Hilfe des neu berechneten Kontrollpolygons gezeichnet.
Show Relations
Wenn diese Checkbox ausgewählt ist (Hackerl ist zu sehen), so werden die Adjazenzrelationen (B-Splines) dargestellt.
Transparency
Wenn diese Checkbox ausgewählt ist (Hackerl ist zu sehen), ist das Alpha Blending aktiviert. Je länger eine B-Spline ist, desto durchsichtiger (transparenter) wird sie gerendert. Dadurch werden kurze B-Splines hervorgehoben und es ist möglich bei aktiviertem Alpha Blending die einzelnen B-Splines in einem Bündel voneinander zu unterscheiden.
Remove LCA
Durch Anhaken dieser Checkbox wird aus Kontrollpolygonen, welche aus mehr als drei Kontrollpunkten bestehen, der LCA (Least Common Ancestor) entfernt. Beim LCA handelt es sich um jenen Vorfahren der beiden adjazenten Knoten, welcher in der Hierarchie am weitesten oben liegt. Das Entfernen des LCA macht sich z.B. beim Radial Tree dadurch bemerkbar, dass die B-Splines nicht so stark gen Mitte gezogen werden. Aus Kontrollpolygonen, welche aus nur drei Kontrollpunkten bestehen wird der LCA grundsätzlich nicht entfernt, da ansonsten nur noch eine Gerade dargestellt werden kann und es so zu Mehrdeutigkeiten kommt.
Tree Parameters
Mit Hilfe der Tree Parameters kann man die Darstellung der hierarchischen Strukturen steuern. Die hierarchischen Strukturen können als Radial Tree, Balloon Tree oder als Rooted Tree dargestellt werden.
Radial
Wenn dieser Radio Button ausgewählt ist, dann werden die hierarchischen Strukturen als Radial Tree dargestellt.
Beim Radial Tree wird der Wurzelknoten in der Mitte des Baums (Radius 0) gezeichnet. Alle anderen Knoten werden auf konzentrischen
Kreisen platziert, wobei der Radius proportional zur Hierarchieebene des Knotens ist (d.h. je größer der Radius ist,
desto weiter unten (größere Tiefe) befindet sich der Knoten in der Hierarchie). Diese Darstellungsart nutzt den
vorhandenen Platz effizienter wie der Rooted Tree. In der Benutzerstudie von Danny Holten, war diese Darstellungsform am beliebtesten.
Beim Radial Tree lag die Priorität auf einer Darstellung ohne Überlappungen mit gleichzeitig möglichst effizienter Nutzung des
vorhandenen Platzes. Daher mussten Constraints bestimmt werden. Diese Constraints sind im Extremfall (Geschwisterknoten haben keine Kinder)
die Schnittpunkte der Tangente durch den Knoten mit dem Kreis auf dem sich die Kindknoten befinden. Haben die Geschwisterknoten Kinder müssen
zusätzliche Constraints gefunden werden, nämlich die beiden Bisector Limits, damit es mit den Geschwisterknoten der Kinder keine
Überschneidungen gibt. Eine genauere Erklärung findet sich hier.
(Achtung: Die Formel für den ArcAngle dürfte nicht korrekt sein!)
Rooted
Wenn dieser Radio Button ausgewählt ist, werden
die hierarchischen Strukturen als Rooted Tree dargestellt. Beim Rooted Tree
wird der Wurzelknoten an oberster Stelle gerendert. Die Knoten der nächsten
Hierarchieebene werden direkt unter der vorhergehenden Hierarchieebene
dargestellt. Die Knoten, die zueinander in Parent-Child-Beziehung stehen, sind
mittels gerader Linien miteinander verbunden. Diese Darstellungsart nutzt den
vorhandenen Platz leider sehr ineffizient. Bei dieser Baumstruktur erkennt man
sehr gut das Problem des Algorithmus, wenn viele Relationen zwischen
kollinearen Knoten vorhanden sind.
In unserer Implementierung wird der Rooted Tree aus dem Radial Tree erzeugt, wobei der Radius der Hierarchieebene im
Radial Tree der Tiefe im Rooted Tree entspricht und der Winkel im Radial Tree über die Länge des Kreisbogens im jeweiligen Kreissektor in eine Distanz
umgerechnet wird.
Die Wurzelknoten der Unterbäume werden anschließend gemäß der x-Positionen ihrer Kinder zentriert. Das Zentrieren kann allerdings die Reihenfolge der Geschwisterknoten
durcheinander bringen. Sollte das der Fall sein, erfolgt keine Zentrierung.
Balloon
Wenn dieser Radio Button ausgewählt ist, dann werden die hierarchischen Strukturen als Balloon Tree dargestellt.
Beim Balloon Tree wird der Wurzelknoten in der Mitte des Baums gezeichnet. Die einzelnen Unterbäume des Knotens werden
als Kreise dargestellt. Diese Darstellungsart nutzt den vorhandenen Platz effizienter wie der Rooted Tree.
In der Benutzerstudie von Danny Holten, war diese Darstellungsform am zweit beliebtesten.
Beim Balloon Tree lag die Priorität auf einer Darstellung ohne Überlappungen, nicht jedoch auf eine möglichst effiziente Nutzung des
vorhandenen Platzes. Die einzelnen Winkeln zwischen den Kindern in den Balloons sind daher gleich.
Show Nodes
Wenn diese Checkbox ausgewählt ist (Hakerl ist zu sehen), werden die im Baum befindlichen Knoten angezeigt. Andernfalls werden diese nicht gerendert.
Show Hierarchy Lines
Wenn diese Checkbox ausgewählt ist (Hackerl ist zu sehen), so sind die Kanten der hierarchischen Strukturen zu sehen.
Show Hierarchy Circles
Wenn diese Checkbox ausgewählt ist (Hackerl ist zu sehen), dann sind die Kreise beim Radial bzw. Balloon zu sehen. Beim Rooted Tree ist diese Checkbox deaktiviert (ausgegraut).