next up previous contents
Next: Die graphische Benutzeroberfläche Up: Der Entwurf von WebLSD Previous: Erzeugung der Datenstruktur

Berechnung der HTML Struktur

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.


  
Abbildung: Berechnung der Koordinaten
6#6

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.


next up previous contents
Next: Die graphische Benutzeroberfläche Up: Der Entwurf von WebLSD Previous: Erzeugung der Datenstruktur
Copyright Munich Network Management Team