Kurzdokumentation zur Implementierung:

Complex logarithmic views for small details in large contexts“

Das herkömmliche „Pan-and-Zoom“ leidet unter der Einschränkung, daß bei einer ausreichenden Vergrößerung
des POI (Point of Interest) der Kontext verloren geht und damit die Information fehlt, woher ich denn komme.
Dieser hier umgesetzte Ansatz von [1] Böttger et.al beschreibt ein komplex-logarithmisches und geometrisch
konformes Zoomverfahren. Geometrisch konform bedeutet, daß die Informationen im äußeren Bereich nicht
verzerrt werden und daher die Skalierung als proportional erscheint. Die Daten im Zentrum der Projektion werden
(wie auf späteren Bildern zu sehen ist) enorm skaliert. Leider hat der zeitliche Aspekt die Umsetzung einer
Navigation innerhalb der Bilddaten verhindert, was noch einen schönen Zusatzaspekt dargestellt hätte.

Zur Bedienung des Programmes gibt es nicht viel Worte zu verlieren. Eine Reihe von Bildern soll den Sachverhalt
visualisieren und den Nutzen dahinter aufzeigen!

Im vorliegenden Beispiel sind vier verschiedene Texturen fest im Programm integriert, einen Dialog zum öffnen von
Dateien ist in dieser Testanwendung nicht vorgesehen!

Das erste Bild scheint unspektakulär – ein Weltraumbild mit Sternen – die Quelle des Bildes ist mir leider unbekannt.
Links oben befindet sich das „Navigationsfenster“, eine kleine GLUI (GL User Interface)-Anwendung, die eine
Umschaltung zwischen Texturen und zwischen den Zeichenmodi FILL und LINE umschaltet!




Was zunächst unscheinbar erscheint – das Geheimnis wird im übernächsten Bild gelüftet bzw. geöffnet: Aber zuerst
das ganze Bild im Wireframe-Modus:



Das obige Bild zeigt die unverzerrte Grundlage der Implementierungstechnik




Sieht etwas verquer aus. Mit der gedrückten rechten Maustaste und einer Bewegung in y-Richtung spreizt sich
das Bild auf. Die Information im Zentrum des Bildes wandert in Nähe der Grundlinie, da durch den komplexen
Logarithmus der Ursprung nach y = -inf verschoben wird. Dadurch findet im unteren Bereich eine sehr starke
Magnifikation (Vergrößerung) statt, während der obere Bereich eher verkleinert wird.




Im obigen Beispiel beträgt der Öffnungswinkel genau PI. Bis zu diesem Punkt betraf der Zoom nur dem Aufspalten
des Bildes in zwei „Teile“. Die Sterne oben rechts wirken verkleinert, die Galaxie im Zentrum ist um 180° aufgefächert.




Das ganze zum besseren Verständnis auch noch mal als Skelett.




Im obigen Bild ein Öffnungswinkel von ca. 270°. Ganz deutlich ist erkennbar, daß das Liniengitter im Ursprungsbild
verzerrt wird und Linie zu Kurven angenähert werden. Da nur Vierecksegmente (GL_QUAD_STRIP) verwendet werden,
wirkt das Gitter dennoch etwas eckig. Durch die hier verwendete Gittergröße von 50x50 Vertices sieht der Effekt
(siehe letztes Bild) doch recht vernünftig aus!




Dieses Bild zeigt den maximalen Öffnungswinkel an.. Die Galaxie ist maximal verzerrt, die Sterne wurden verkleinert
und sind in den Hintergrund gewandert. Das komplette Bild ist sichtbar (normalisiert auf Projektionsfläche sowie
„shifted & scaled“ - sprich verschoben und skaliert, wie im Paper angegeben. Der komplette Kontext ist noch vorhanden,
jedoch lässt die Übersichtlichkeit etwas zu wünschen übrig!




Das letzte Bild zeigt den Wireframe-Modus. Der helle Bereich im unteren Bilddrittel verhindert leider eine genauere
Darstellung des Gitters. Dennoch ist gut zu erkennen, wie im Vergleich zum zweiten Bild die Linien zu Kurven
umgewandelt wurden. Die „Kästchen-Struktur“ wird auch weitgehend beibehalten. Sie unterscheiden sich nur durch
eine leichte Kurvatur, aber durch sehr geringe Verzerrung!

[1] Complex Logarithmic Views for Small Details in Large Contexts

Downloads:

Kompiliertes Binary (incl. Texturen)

Sources (mit VS.NET 2005 Solution)

Source Dokumentation (Doxygen)