Zur graphischen Umsetzung der Verbindungsstruktur gäbe es eine Vielzahl von Möglichkeiten. Eine zu Beginn angestrebte Darstellung als Baum hat sich bei näherer Betrachtung als ungeeignet erwiesen, da sich der so entstehende Baum sehr in die Breite entwickelt und damit schnell unübersichtlich wird. Außerdem verleitet ein baumartiges Bild dazu, den zyklischen Graphen, der ja eigentlich dahintersteckt, zu übersehen.
Wir haben uns deshalb entschieden die Dokumente kreisförmig um das
Startdokument anzuordnen, das so die Koordinaten (0,0) erhält.
Die rekursive Funktion Display(int from, int to, LinkStructure struktur,
int dokument), die die restlichen Koordinaten berechnet (siehe dazu Bild
), arbeitet als Breitensuche. Das heißt, alle noch nicht
behandelten Söhne des aktuellen Dokuments werden gleichmäßig auf einem
Kreisbogen mit dem um die Konstante addRadius vergrößertem Radius
angeordnet, bevor die Rekursion fortschreitet. Jedem Dokument wird
dabei der Winkelbereich zugeordnet, der sich aus dem Winkelbereich seines
Vaters, im Falle des Startdokuments 0 bis 360 Grad, dividiert durch die
Anzahl dessen unbesuchter Söhne ergibt. Dieser Winkelbereich steht nun
wiederum diesem Dokument zur Verfügung, um seine Nachkommen auf dem
nächstgrößerem Kreis zu plazieren. Aus diesem Winkelbereich, dem
Radius sowie der Anzahl der unbesuchten Söhne lassen sich nun die
jeweiligen Koordinaten bestimmen.
Da manche HTML-Seiten sehr viele Verzweigungen aufweisen (z.B. eine Indexdatei eines Servers oder eine Seite mit Bookmarks), wird es in solchen Fällen oft zu sehr dicht angehäuften Darstellungen kommen, die nur schwierig erkennbar sein dürften. Andere Seiten hingegen (vor allem Bilder o.ä.) besitzen überhaupt keine weiteren Verknüpfungen, oder nur solche, die bereits an anderer Stelle wiedergegeben wurden.
Um die Anhäufungen etwas zu entzerren, liefert die Rekursion die
Anzahl der im Kreisbogen untergebrachten Nachkommen zurück.
Ist dieser Wert gleich null, d.h. der Sektor verbleibt ohne Nachkommen,
wird dieser Winkelbereich dem nachfolgendenfolgenden Dokument
zur Verfügung gestellt. Sollten sich diese Winkel auf mehr als 90 Grad
aufsummieren, wird der Bereich auf diesen Wert gekürzt, denn eine
zu große Streuung bei weit vom Mittelpunkt entfernten Dokumenten
hat sich als unvorteilhaft erwiesen.
Da das Koordinatensystem bei Graphiken in Java den Ursprung in der
linken oberen Ecke des Fensters hat und nur positive Werte erlaubt,
müssen im Anschluß an die Berechnungen die Koordinaten entsprechend
berichtigt werden. Dazu wird der größte benutzte Radius während der
Berechnung in der Variable maxRadius festgehalten und dieser Wert
bei allen Dokumenten in x- und y- Richtung aufaddiert. Die so korrigierten
Daten können jetzt zur weiteren Verwendung direkt benutzt werden.