DE69904539T2 - Anordnung von Knotenverbindungstruktur in einem Raum mit negativer Kurvatur - Google Patents

Anordnung von Knotenverbindungstruktur in einem Raum mit negativer Kurvatur

Info

Publication number
DE69904539T2
DE69904539T2 DE69904539T DE69904539T DE69904539T2 DE 69904539 T2 DE69904539 T2 DE 69904539T2 DE 69904539 T DE69904539 T DE 69904539T DE 69904539 T DE69904539 T DE 69904539T DE 69904539 T2 DE69904539 T2 DE 69904539T2
Authority
DE
Germany
Prior art keywords
node
data
box
processor
elements
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69904539T
Other languages
English (en)
Other versions
DE69904539D1 (de
Inventor
John O. Lamping
Ramana B. Rao
Tichomir G. Tenev
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Business Objects Americas Inc
Original Assignee
Business Objects Americas Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Business Objects Americas Inc filed Critical Business Objects Americas Inc
Publication of DE69904539D1 publication Critical patent/DE69904539D1/de
Application granted granted Critical
Publication of DE69904539T2 publication Critical patent/DE69904539T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Generation (AREA)
  • User Interface Of Digital Computer (AREA)
  • Bridges Or Land Bridges (AREA)

Description

  • Die Erfindung betrifft das Anordnen einer Knoten-Verbindung-Struktur in einem Raum mit negativer Krümmumg, z. B. einem hyperbolischen Raum.
  • Lamping, J. und Rao, R., "The Hyperbolic Browser: A Focus+Context Technique for Visualizing Large Hierarchies", Journal of Visual Languages and Computing, Vol. 7, 1996, Seiten 33-35, offenbaren Verfahren zum Anordnen einer Hierarchie auf einer hyperbolischen Ebene derart, dass der Abstand zwischen Mutter und Kind und zwischen Geschwistern überall etwa gleich ist. Ein rekursiver Algorithmus ordnet jeden Knoten basierend auf lokaler Information an, um den Abkömmlingen des Knotens einen Keil der hyperbolischen Ebene zuzuweisen. Der Algorithmus platziert alle Kinder in gleichem Abstand vom Mutterknoten und wenigsten in einem Mindestabstand voneinander entlang einem Bogen in dem Keil. Die Anordnung eines Knotens hängt nur von der Anordnung seiner Mutter und der Knotenstruktur von zwei oder drei Generationen beginnend bei der Mutter ab. Das Anordnen kann daher inkremental erfolgen, indem z. B. zu Anfang die Knoten nächst der Wurzel angeordnet werden und dann weitere Knoten hinzugefügt werden, sobald mehr von der Struktur durchlaufen wird. Lamping et al., US-A-5,590,250, offenbaren ähnliche Anordnungsverfahren, bei denen jeder Knoten eine Datenstruktur besitzt, die seine Position und Radius und, wenn er Kinder hat, eine Verbindung zu einer Liste von Kindern einschließt; komplexe Zahlen werden verwendet, um Positionen in der hyperbolischen Ebene darzustellen.
  • Munzner, T. und Burchard, P., "Visualizing the Structure of the World Wide Web in 3D Hyperbolic Space", in Proceedings of the VRML '95 Symposium (San Diego, CA, Dezember 13-16, 1995), ACM SIGGRAPH, 1995, Seiten 33-38, offenbaren Verfahren zur Anordnung eines Graphen in der hyperbolischen Ebene, die bei gerichteten Graphen mit Zyklen verwendet werden können. Die hyperbolische Länge einer Kante, die zwei Knoten verbindet, wird mittels hyperbolischer Funktionen und der Winkel zwischen auf die zwei Knoten fallenden Kanten gewonnen. Gerichtete Graphen mit Zyklen können in hyperbolische Vielfachräume, die sich selbst umhüllen und verschließen können, oder im normalen hyperbolischen Raum durch Einfüllen von Rückverbindungskanten eingebettet werden.
  • Matsuura, T., Taniguchi, K, Masuda, S. und Nakamura, T., "A Graph Editor for Large Trees with Browsing and Zooming Capabilities", Systems and Computers in Japan, Vol. 24, Nr. 8, 1993, Seiten 35-46, offenbaren ein Bibliotheksprogramm, das die direkte Manipulation eines großen Baumes auf einer Anzeige erlaubt. Wenn ein Knoten oder Unterbaum hinzugefügt oder entfernt wird, wird die Datenstruktur aktualisiert; die Anordnung für jeden Knoten wird auf der Basis des Graphen-Anordnungs-Algorithmus berechnet, und jeder Knoten und jede Kante werden neu gezeichnet. Der Anordnungsalgorithmus bestimmt für jeden Nicht-Wurzel- Knoten einen relativen Positionswert, der die Differenz zwischen der X-Koordinate des Knotens und der X-Koordinate seiner Mutter ist. Die Y-Koordinate andererseits wird durch die Stufe des Knotens bestimmt, und wird folglich bestimmt, wenn die Koordinaten des Wurzelknotens nicht spezifiziert sind. Wenn ein Teil des Baumes entfernt oder ein Unterbaum hinzugefügt wird, werden Vorfahren verfolgt, um die Anordnung zu aktualisieren.
  • Die Erfindung wendet sich an Probleme beim Anordnen von Knoten-Verbindung-Strukturen in einem Raum mit negativer Krümmung, z. B. einem hyperbolischen Raum.
  • Bei den von Lamping und Rao beschriebenen Verfahren und bei anderen herkömmlichen Verfahren zur negativen Krümmungsanordnung muss, wenn sich eine Struktur nach ihrem Anzeigen ändert, typischerweise eine neue Anordnung für wenigstens einen großen Teil der geänderten Struktur erstellt und dann erneut angezeigt werden. Das Durchführen des Anordnens auf einer großen Struktur ist langsam und kann, wenn man es mit der erneuten Anzeige zusammennimmt, einen Benutzer davon abhalten, mit der geänderten Struktur wirkungsvoll zu interagieren. Obwohl diese Probleme für sich ändernde Strukturen besonders kritisch sind, treten sie auch auf, wenn Operationen ausgeführt werden, die häufiges Auslegen einer statischen Struktur oder von Teilen einer statischen Struktur erfordern.
  • Die von Lamping und Rao beschriebenen Auslegungsverfahren für statische Strukturen weisen bestimmte Merkmale auf, die das Auslegen wenigstens eines großen Teils der Struktur verlangen. Die Auslegungsverfahren für statische Strukturen treffen bei jedem Knoten Entscheidungen, die von Auslegungsentscheidungen höher in dem Baum und bei seinen Geschwisterknoten abhängen. Das Hinzufügen oder Entfernen eines Kindes eines Knotens verlangt somit, dass die Auslegung für alle Abkömmlinge des Knotens und all seiner Geschwister überarbeitet wird. Die Auslegungsverfahren für statische Strukturen bewahren außerdem nur die Position des Knotens in der hyperbolischen Ebene; jede Änderung in der Struktur, die die Position eines Knotens ändern würde, erfordert das Wiederholen der Anordnung seiner Geschwister und seiner ganzen Abkömmlinge.
  • Die Erfindung mindert Probleme, die aus dem Anordnen großer Strukturen entstehen, indem Verfahren bereitgestellt werden, die es möglich machen, eine lokale Auslegung einer Knoten-Verbindung-Struktur in einem Raum mit negativer Krümmumg, z. B. einem hyperbolischen Raum, oder der hyperbolischen Ebene durchzuführen. Die Verfahren gewinnen Nähe- Beziehungsdaten für ein Element, die Information über nahe gelegene Knoten-Verbindung- Beziehungen angibt. Die Verfahren verwenden dann die Nähe-Beziehungsdaten, um Auslegungsdaten zu gewinnen, die die Position des Elements bezüglich einer Mutter in dem Raum mit negativer Krümmung angeben.
  • Wenn z. B. das Element und die Mutter Knoten sind, können die Auslegungsdaten Positionsverschiebungsdaten, die einen Abstand zwischen der Position der Mutter und der Position des Elements angeben, und Winkelverschiebungsdaten einschließen, die eine Winkeldifferenz zwischen einer ankommenden Verbindung zu der Mutter und der abgehenden Verbindung von der Mutter zu dem Element angeben. In einer besonders eleganten Implementierung umfassen die Auslegungsdaten nur die Positionsverschiebungsdaten und die Winkelverschiebungsdaten.
  • Die Nähe-Beziehungsdaten können erlangt werden, indem für jedes eines Satzes von Kindern der Mutter eine Zahl von Enkeln der Mutter gewonnen wird. Der Satz von Kindern der Mutter enthält das Element und kann auch andere Kinder einschließen, die in dem negativ gekrümmten Raum ausgelegt werden oder wurden. Die Zahl von Enkeln kann benutzt werden, um einen Radius und einen Winkel für jedes des Satzes von Kindern zu erlangen. Die Radien und Winkel können dann benutzt werden, um eine Positionsverschiebung und eine Winkelverschiebung zwischen der Mutter und dem Element zu gewinnen. Die Winkelverschiebung kann mit einer vorherigen Winkelverschiebung verglichen werden, um zu bestimmen, ob Kinder des Elements auszulegen sind.
  • Die Nähe-Knoten-Verbindung-Beziehungen können nur Beziehungen zwischen der Mutter und den Kindern der Mutter und Enkeln enthalten.
  • Die neuen Verfahren können iterativ implementiert werden, wobei jede Iteration auszulegende Elemente identifiziert und für jedes identifizierte Element Nähe-Beziehungsdaten und Auslegungsdaten erhalten werden. Wenn z. B. eine Reihe von Iterationen als Reaktion auf ein Einfügungs- oder Entfernungsereignis ausgeführt wird, können die identifizierten Elemente Elemente durch das Einfügen oder Entfernen beeinflusste Elemente enthalten. Die identifizierten Elemente jeder Iteration können auch Elemente einschließen, die der Struktur während einer vorangehenden Iteration hinzugefügt wurden. Vor der Reihe kann für jede Iteration ein Gewicht zur Verwendung beim Erlangen von Auslegungsdaten während der Iteration gewonnen werden.
  • Die neuen Verfahren sind beim Auslegen einer dynamischen Knoten-Verbindung-Struktur vorteilhaft, weil, wenn ein Element entfernt oder eingefügt wird, nur ein paar nahe gelegene Elemente erneut ausgelegt werden müssen. Die Verfahren erlangen auch die Position eines Elements relativ zu einer Mutter anstelle einer absoluten Position, was es möglich macht, die Position eines Elements und seiner ganzen Abkömmlinge zu ändern, indem eine einzige Änderung oder eine kleine konstante Zahl von lokalisierten Änderungen in der Datenstruktur vorgenommen wird.
  • Die neuen Verfahren sind außerdem vorteilhaft, weil sie in einer Vielfalt von Situationen benutzt werden können, bei denen es erwünscht ist, einen Teil einer Knoten-Verbindung-Struktur auszulegen. Die neuen Verfahren sind somit nicht nur auf eine dynamische Knoten-Verbindung-Struktur, sondern auch auf eine statische Struktur anwendbar, die nur in Fragmenten ausgelegt und angezeigt werden soll, weil nicht die ganze Struktur im Speicher vorhanden ist. Die Verfahren sind besonders vorteilhaft zum Auslegen eines Baumes, der eine Teildarstellung eines gerichteten Graphen ist, bei der Knoten mehrfache ankommende Verbindungen haben; ein gemeinsamer Zweig eines solchen Baumes braucht nicht für alle seiner Vorkommen vollständig ausgelegt werden, da sich nur die relative Position der obersten Elemente zwischen Vorkommen unterscheiden wird.
  • Die Verfahren sind auch vorteilhaft zur Animation einer Änderung, die nur einen Teil einer Struktur betrifft. Wenn z. B. in einer Struktur Einfügungen oder Entfernungen vorgenommen werden, kann es erwünscht sein, den Übergang so zu animieren, dass nur Positionen von Elementen geändert werden, die nahe der Einfügung oder Entfernung liegen. Die Verfahren machen es möglich, eine Reihe von Auslegungen, eine für jeden Animationsschritt, schnell durchzuführen, wobei nur die Positionen von Elementen in der Nähe von Einfügungen oder Entfernungen geändert werden. Demnach verbessert sich die Animationsleistung, und ein einfacherer Animationsalgorithmus kann verwendet werden. Der Algorithmus kann fortlaufend nur eine kleine Zahl von Variablen ändern, z. B. einen Winkel und einen Radius für jeden Knoten, der nahe bei einer Einfügung oder Entfernung liegt.
  • Ein anderer Vorteil ist, dass die Verfahren Auslegungen liefern, von denen eine Anzeige beginnend bei jedem beliebigen Element erzeugt werden kann, anstatt wie bei herkömmlichen Verfahren immer am Wurzelknoten oder bei den Bodenblättern einer Struktur zu beginnen.
  • Noch ein anderer Vorteil ist, dass die Position eines Elements in Bezug auf seine Mutter immer mit angemessener Genauigkeit ausgedrückt werden kann. Wenn demgegenüber die absolute Position eines Elements in einer hyperbolischen Ebene benutzt wird, könnte eine große Struktur die verfügbaren Gleitpunktzahlen erschöpfen.
  • Fig. 1 ist ein schematisches Flussdiagramm, das zeigt, wie eine lokale relative Auslegung für ein Element in einer Knoten-Verbindung-Struktur durchgeführt werden kann.
  • Fig. 2 ist ein Flussdiagramm, das allgemeine Tätigkeiten beim Durchführen der in Fig. 1 veranschaulichten lokalen relativen Auslegung zeigt.
  • Fig. 3 ist ein Schaltbild, das allgemeine Komponenten einer Maschine zeigt, die die in Fig. 1 veranschaulichte lokale relative Auslegung durchführt.
  • Fig. 4 ist ein Schaltbild eines Systems.
  • Fig. 5 ist ein Flussdiagramm, das zeigt, wie das System von Fig. 4 auf Ereignisse durch Präsentieren von Darstellungen eines gerichteten Graphen reagieren kann.
  • Fig. 6 ist ein Flussdiagramm, das zeigt, wie eine anfängliche Auslegung in Fig. 5 durchgeführt werden kann.
  • Fig. 7 ist ein Flussdiagramm, das zeigt, wie das Auslegen einer geänderten Knoten-Verbindung-Struktur in Fig. 5 durchgeführt werden kann.
  • A. Begriffliches Rahmenwerk
  • Das folgende begriffliche Rahmenwerk, wenn mit den in US-Patenten 5,590,250 und 5,619, 632 dargelegten Rahmenwerken genommen, ist nützlich beim Verstehen des breiten Umfangs der Erfindung, und die unten definierten Begriffe haben überall in dieser Anmeldung, einschließlich der Anspruche, die angegebenen Bedeutungen.
  • Eine "Knoten-Verbindung-Struktur" ist eine Struktur, die Items enthält, die nach Knoten und Verbindungen unterschieden werden können, wobei jede Verbindung zwei oder mehrere der Knoten verknüpft. Ein "Graph" ist eine Knoten-Verbindung-Struktur, in der jede Verbindung zwei Knoten verknüpft. Ein "gerichteter Graph" ist ein Graph, bei dem jede Verbindung die Richtung zwischen den Knoten, die sie verknüpft, angibt, wobei ein Knoten eine Quelle oder "Von-Knoten" der Verbindung ist, und der andere ein Ziel oder "Zu-Knoten" der Verbindung ist. Ein "azyklischer gerichteter Graph" ist ein gerichteter Graph, bei dem die Verbindungen, wenn ihren angegebenen Richtungen gefolgt wird, keinen Pfad von irgendeinem Knoten zurück zu ihm selbst bereitstellen. Ein "Baum" ist ein azyklischer gerichteter Graph mit genau einem Wurzelknoten, sodass für jeden Nicht-Wurzel-Knoten in dem Baum die Verbindungen, wenn ihren angegebenen Richtungen gefolgt wird, nur einen Pfad bereitstellen, der an dem Wurzelknoten beginnt und zu dem Nicht-Wurzel-Knoten führt.
  • Die "Elemente" einer Knoten-Verbindung-Struktur sind ihre Knoten und Verbindungen.
  • In einer Knoten-Verbindung-Struktur ist eine "Knoten-Verbindung-Beziehung" eine Beziehung zwischen Elementen, die auf Pfaden von Knoten und Verbindungen zwischen oder unter den Elementen basiert.
  • In vielen Fällen können Knoten-Verbindung-Beziehungen nach Kategorie zusammengefasst werden. Bei einem gerichteten Graphen sind z. B. die "Kinder" eines Elements die Elemente, die von dem Element erreicht werden können, indem nicht mehr als einer Verbindung in seiner angegebenen Richtung gefolgt wird. Ähnlich sind die "Eltern" eines Elements die Elemente, die von dem Element erreicht werden können, indem nicht mehr als einer Verbindung entgegen seiner angegebenen Richtung gefolgt wird. Kinder und Eltern eines Knotens umfassen daher Verbindungen und Knoten, während Kinder und Eltern einer Verbindung nur Knoten umfassen. Die "Abkömmlinge" eines Elements enthalten seine ganzen Kinder, die Kinder seiner Kinder ("Enkel") usw. Die "Vorfahren" eines Elements umfassen seine ganzen Eltern, die Eltern seiner Eltern ("Großeltern") usw. Die "Geschwister" eines Elements umfassen alle anderen Kinder seiner Eltern. Die "Miteltern" eines Elements umfassen alle anderen Eltern seiner Kinder.
  • Im Allgemeinen ist es nützlich, Knoten-Verbindung-Beziehungen, die auf kürzesten Pfadlängen zwischen Elementen basieren, zu unterscheiden, wobei die Pfadlänge nach der Zahl von Elementen in dem Pfad gemessen wird. In einem gerichteten Graphen wären z. B. die "nächsten" Knoten-Verbindung-Beziehungen eines Knotens mit seinen ankommenden und abgehenden Verbindungen; dann mit anderen Knoten, die seine Eltern- und Kinderknoten sind; dann mit anderen ankommenden und abgehenden Verbindungen seiner Eltern- und Kinderknoten; dann mit anderen Knoten, die seine Großeltern, Geschwister, Enkel, Miteltern usw. sind. Ein Satz von "Nähe"-Knoten-Verbindung-Beziehungen eines Elements ist ein Satz von Beziehungen, wobei alle kürzesten Pfadlängen zwischen Elementen ein geeignetes Kriterium für Nähe erfüllen, z. B. dass alle kürzer sind als eine relativ kurze Maxilmallänge von z. B. 2, 3 oder 4. Ein Beispiel einer nützlichen Gruppe von Nähe-Knoten-Verbindung-Beziehungen ist die Gruppe von Beziehungen unter den Eltern eines Elements, den Kindern der Eltern (einschließlich des Elements) und den Enkeln der Ehem.
  • Ein Item von Daten "identifiziert" ein Element in einer Knoten-Verbindung-Struktur, wenn das Item von Daten genug Information liefert, um das Element von anderen Elementen in der Struktur zu unterscheiden. Zum Beispiel identifiziert ein Item von Daten ein Element, wenn das Item von Daten benutzt werden kann, um auf Daten bezüglich des Elements zuzugreifen, anstatt auf Daten bezüglich anderer Elemente zuzugreifen.
  • Die Begriffe "Raum" und "Position" haben verwandte Beziehungen wie folgt: Ein "Raum" ist ein Satz von "Positionen", von denen über jedes Paar ein Abstandsmaß angelegt werden kann, um einen Abstand zwischen dem Paar von Positionen zu gewinnen. Beispiele von Arten von Räumen umfassen eindimensionale Räume wie Linien oder Strahlen, andere n-dimensionale Räume, stetige Räume, diskrete Näherungen von stetigen Räumen usw.
  • Eine "ebene Einheitsscheibe" oder "Einheitsscheibe" ist ein durch einen kreisförmigen Umkreis eingegrenzter zweidimensionaler euklidischer Raum mit einer ersten und zweiten senkrechten Achse, die sich in der Mitte des Umkreises kreuzen, und mit einem Radius entlang jeder Achse von der Mitte zum Umkreis von einer. Demnach kann jede Position in der Einheitsscheibe durch zwei Koordinalen, jede zwischen +1 und -1, eindeutig identifiziert werden.
  • Ein Raum mit negativer Krümmung ist ein Raum, in dem parallele Linien divergieren. Deshalb gibt es durch jede Position in einem Raum mit negativer Krümmung, die nicht auf einer gegebenen graden Linie liegt, vielfache andere grade Linien parallel zu der gegebenen graden Linie. Ein Beispiel eines Raumes mit negativer Krümmung ist ein hyperbolischer n- Raum. Eine "hyperbolische Ebene" ist ein hyperbolischer 2-Raum.
  • Eine Operation "legt aus" eine Struktur in einem Raum, wenn die Operation Daten erlangt, die Positionen in dem Raum für Elemente der Struktur angeben. Die Struktur wird in dem Raum "ausgelegt", wenn Daten, die solche Positionen in dem Raum angeben, erlangt worden sind. Die Daten könnten absolute Positionen angeben, z. B. mit Koordinatenwerten, die Verschiebungen von einem Satz universeller Bezugspunkte z. B. einem Koordinaten-Ausgangspunkt, messen, oder die Daten könnten relative Positionen angeben, z. B. mit Koordinatenwerten, die Verschiebungen von einem Satz von Bezugspunkten, der auf der Position eines anderen Elements basiert, messen.
  • Daten geben die "Position relativ zu einer Mutter" eines Elements an, wenn die Daten eine oder mehrere Verschiebungen angeben, die benutzt werden können, um eine absolute Position des Elements von der absoluten Position der Mutter zu gewinnen. Ein Satz von Verschiebungen, der einen Vektor von der Position einer Mutter zu der Position eines Elements definiert, gibt z. B. die Position des Elements relativ zu der Mutter an. Beispiele von Arten von Verschiebungen umfassen Positionsverschiebungen, die Abstände zwischen Positionen angeben, ob entlang von Koordinatenachsen oder in der Form einer Größe, und Winkelverschiebungen, die Winkeldifferenzen angeben, z. B. zwischen einer ankommenden Verbindung zu einer Mutter und einer abgehenden Verbindung von der Mutter zu dem Element.
  • Eine Operation "legt ein Kriterium an", wenn die Operation ein Kriterium benutzt, um eine Entscheidung zu erreichen, z. B., ob Kinder eines Elements auszulegen sind.
  • Wie hierin gebraucht, ist "Reihe von Iterationen" eine Reihe von Operationen, die in zwei oder mehr aufeinanderfolgende Teile geteilt werden kann, von denen jeder hierin als eine Iteration bezeichnet wird. Obwohl sich Iterationen in einer Reihe wesentlich unterscheiden können, kann jede Iteration nach der ersten typischerweise von der vorangehenden iteration erzeugte Anfangsdaten verwenden, um Endungsdaten zu erlangen. Die Endungsdaten jeder Iteration können typischerweise wiederum von der folgenden Iteration als ihre Anfangsdaten benutzt werden.
  • Der Begriff "Navigationssignal" wird hierin gebraucht, ein Signal zu meinen, das angibt, dass der Benutzer größeres Interesse an einem Teil einer Knoten-Verbindung-Struktur hat als an anderen Teilen. Zum Beispiel gibt "Signal erweitern" eine Anforderung an, eine Darstellung eines Graphen zu präsentieren, bei der die Darstellung eines Elements des Graphen erweitert wird, während "Signal zusammenziehen" eine Anforderung angibt, eine Darstellung eines Graphen zu präsentieren, bei der die Darstellung eines Elements eines Graphen zusammengezogen wird. Andere Beispiele umfassen Anforderungen, einen Teil der Knoten-Verbindung-Struktur bei einer spezifischen Position zu präsentieren, was durch Wählen eines Lesezeichens oder dergleichen oder durch eine Zeigen-und-Klick-Operation erfolgen kann, die verlangt, dass ein Merkmal, auf das gezeigt wird, in einen Mittelpunkt bewegt wird.
  • Ein Signal "verlangt eine Änderung" in einer Knoten-Verbindung-Struktur, wenn das Signal eine Änderung in einem oder mehreren Elementen der Struktur verlangt, z. B. ein Einfügen oder Entfernen von einem oder mehreren Elementen oder eine Operation, z. B. Bewegen oder Kopieren, die durch eine Kombination aus Einfügungen und Entfernungen implementiert werden kann.
  • Ein "Prozessor" ist eine Komponente von Schaltkreisen, die auf Eingabesignale durch Ausführen von Verarbeitungsoperationen auf Daten und durch Bereitstellen von Ausgabesignalen reagiert. Die Eingabesignale können z. B. Befehle enthalten, obwohl nicht alle Prozessoren Befehle empfangen. Die Eingabesignale für einen Prozessor können Eingabedaten für die Operationen des Prozessors umfassen. Die Ausgabesignale können gleichermaßen Ausgabedaten umfassen, die aus den Operationen des Prozessors entstehen.
  • Ein "Netzwerk" ist eine Kombination von Schaltkreisen, durch die eine Verbindung zur Übertragung von Daten zwischen Maschinen errichtet werden kann.
  • A. Allgemeine Merkmale
  • Fig. 1-3 zeigen allgemeine Merkmale der Erfindung.
  • Fig. 1 veranschaulicht, wie ein Element in einer Knoten-Verbindung-Struktur 10 in einem Raum mit negativer Krümmung angeordnet werden kann. Wie durch die gestrichelte Linie zu Kasten 20 veranschaulicht, hat ein Element in der Knoten-Verbindung-Struktur 10, veranschaulichend Knoten 22, mehrere nahe gelegene Knoten-Verbindung-Beziehungen. Wie in Kasten 20 gezeigt, können nahe gelegene Knoten-Verbindung-Beziehungen z. B. Beziehungen umfassen, die aus einer Verbindung vom Mutterknoten 24 zum Knoten 22, Verbindungen vom Muterknoten 24 zu Geschwisterknoten 26 bis 28 und Verbindungen vom Knoten 22 zu Kinderknoten 30 bis 32 entstehen.
  • Wie durch die feste Linie von der Knoten-Verbindung-Struktur 10 und durch die gestrichelte Linie von Kasten 20 veranschaulicht, werden Nähe-Beziehungsdaten 40 erhalten, die Information über nahe gelegene Knoten-Verbindung-Beziehungen von Knoten 22 angeben. Dann können Auslegungsdaten 42 für Knoten 22 auf der Basis von Nähe-Beziehungsdaten 40 gewonnen werden. Andere Information über die Knoten-Verbindung-Struktur 10 könnte ebenfalls beim Gewinnen von Auslegungsdaten 42 benutzt werden, aber solch andere Information sollte vorzugsweise kerne Information über entfernte Knoten-Verbindung-Beziehungen enthalten, um sicherzustellen, dass der Knoten 22 nur neu ausgelegt werden muss, wenn nahe gelegene Knoten-Verbindung-Beziehungen modifiziert werden.
  • Die Auslegungsdaten 42 können verschiedene Information über den Knoten 22 und seine Position in einem Raum mit negativer Krümmung angeben, einschließlich wenigstens einer Position von Knoten 22 relativ zum Mutterknoten 24. Wie z. B. in Kasten 44 gezeigt, können die Auslegungsdaten 42 einen Vektor D angeben, der den Abstand und die Richtung in dem negativ gekrümmten Raum vom Mutterknoten 24 zum Knoten 22 angibt. Genau wie die Position eines Kindes relativ zu der Position einer Mutter definiert werden kann, kann die Richtun von Mutter zu Kind relativ zu der Richtung vvn Großmutter zu Mutter (oder, wenn die Mutter die Wurzel ist, zu einer anfänglichen Richtung) definiert werden. Der Vektor D kann somit die Positionsverschiebung von der Mutter und die Winkelverschiebung von der Richtung Großmutter zu Mutter angeben.
  • In Fig. 2 beginnt der Vorgang im Kasten 100 mit dem Erlangen von Nähe-Beziehungsdaten für ein Element in einer Knoten-Verbindung-Struktur, die Information über Nähe-Knoten-Verbundung-Beziehungen des Elements angeben. Wie durch die innere gestrichelte Linie um Kasten 100 herum angedeutet, können Nähe-Beziehungsdaten für jedes eines Satzes von Elementen erlangt werden.
  • Auf der Basis der in Kasten 100 erlangten Nähe-Beziehungsdaten erlangt der Vorgang in Kasten 102 dann Auslegungsdaten, die die Position eines Elements relativ zu einer Mutter in dem negativ gekrümmten Raum angeben. Wie durch die innere gestrichelte Linie um Kasten 102 herum angedeutet, können Auslegungsdaten gleichermaßen für jedes eines Satzes von Elementen erlangt werden, für das Nähe-Beziehungsdaten in Kasten 100 gewonnen wurden. Wie durch die äußere gestrichelte Linie um die Kästen 100 und 102 herum angedeutet, können Nähe-Beziehungsdaten für ein anderes Element oder für einen anderen Satz von Elementen nach Erlangen der Auslegungsdaten eines Elements erlangt werden.
  • Die Maschine in Fig. 3 umfasst einen Prozessor 152, der Daten empfängt, die Benutzersignale von Benutzereingabekreisen 154 angeben, und Daten, die Bilder definieren, an die Anzeige 156 liefert. Der Prozessor 152 greift auch auf Knoten-Verbindung-Daten 158 zu, die wenigstens einen Teil einer Knoten-Verbindung-Struktur definieren. Der Prozessor 152 empfängt außerdem Befehlsdaten 160, die Befehle bezeichnen, über Befehlseingabekreise 162, die veranschaulichend Befehle liefern kann, die von Verbindungen zum Speicher 164, der Speichermedium-Zugriffseinrichtung 166 oder dem Netzwerk 168 empfangen werden.
  • Beim Ausführen der durch die Befehlsdaten 160 bezeichneten Befehle erlangt der Prozessor 152 Nähe-Beziehungsdaten für ein Element, die Information über nahe gelegene Knoten- Verbindung-Beziehungen des Elements angeben. Der Prozessor 152 kann auf die Knoten- Verbindung-Daten 158 zugreifen, um Information über Knoten-Verbindung-Beziehungen zu gewinnen. Auf der Basis der Nähe-Beziehungsdaten erlangt der Prozessor 152 dann Auslegungsdaten, die die Position des Elements relativ zu einer Mutter in einem Raum mit negativer Krümmung angeben.
  • Wie oben angemerkt, veranschaulicht Fig. 3 drei mögliche Quellen, von denen die Befehlseingabekreise 162 Daten empfangen könnten, die Befehle bezeichnen, nämlich Speicher 164, Speichermedium-Zugriffseinrichtung 166 und Netzwerk 168.
  • Der Speicher 164 könnte jeder herkömmliche Speicher in der Maschine 150 sein, der einen Direktzugriffsspeicher (RAM) oder Nurlese-Speicher (ROM) enthält, oder könnte eine periphere oder abgesetzte Speichereinrichtung jeglicher Art sein. Ganz allgemein könnte der Speicher 164 eine Kombination aus mehr als einer Art von Speicherkomponente sein.
  • Die Speichermedium-Zugriffseinrichtung 166 könnte ein Laufwerk oder eine geeignete Einrichtung oder Schaltkreise zum Zugreifen auf das Speichermedium 170 sein, das z. B. ein magnetisches Medium, z. B. ein Satz aus einem oder mehreren Bändern, Disketten oder Floppy-Disks, ein optisches Medium, z. B. ein Satz aus einer oder mehreren CD-ROMs oder jedes andere geeignete Medium zum Speichern von Daten sein könnte. Das Speichermedium 170 könnte ein Teil der Maschine 150, ein Teil eines Servers oder einer anderen peripheren oder abgesetzten Speichereinrichtung oder ein Softwareprodukt sein. In jedem dieser Fälle ist das Speichermedium ein Herstellungsartikel der von der Maschine 150 benutzt werden kann. Auf dem Speichermedium 170 können sich Dateneinheiten befinden, sodass die Speichermedium-Zugriffseinrichtung 166 auf die Dateneinheiten zugreifen und sie über die Befehlseingabekreise 162 in einer Folge an den Prozessor 152 liefern kann. Wenn in der Folge geliefert, bilden die Dateneinheiten Befehlsdaten 160, die Befehle, wie veranschaulicht, bezeichnen.
  • Das Netzwerk 168 kann von der Maschine 180 empfangene Befehlsdaten 160 bereitstellen. Der Prozessor 182 in der Maschine 180 kann durch Netzwerkanschlusskreise 184 und Befehlseingabekreise 162 über das Netzwerk 168 eine Verbindung mit dem Prozessor 152 herstellen. Jeder Prozessor könnte die Verbindung einleiten, und die Verbindung mit jedem geeigneten Protokoll errichtet werden. Der Prozessor 182 kann dann auf die im Speicher 168 gespeicherten Befehlsdaten zugreifen und die Befehlsdaten über das Netzwerk 168 an den Prozessor 152 übermitteln, sodass der Prozessor 152 die Befehlsdaten 160 vom Netzwerk 168 empfangen kann. Die Befehlsdaten 160 können dann vom Prozessor 152 im Speicher 164 oder sonstwo gespeichert werden, und können ausgeführt werden.
  • C. Implementierung
  • Die oben beschriebenen allgemeinen Merkmale könnten in zahlreicher Weise auf verschiedenen Maschinen implementiert werden, um Knoten-Verbindung-Darstellungen vorzulegen. Eine unten beschriebene Implementierung wurde auf einem PC-basierten System implementiert, das die 32-Bit Versionen von Microsoft Windows fährt und aus C++ Sprache Quellencode kompilierten Code ausführt.
  • C.1. System
  • In Fig. 4 umfasst das System 200 den PC-Prozessor 202, der mit der Anzeige 204 zum Darstellen von Bildern und mit der Tastatur 206 und der Maus 208 zur Eingabe von Benutzersignalen verbunden ist. Der Prozessor 202 kann auch auf den Speicher 210 und den Client 212 zugreifen. Der Speicher 210 kann veranschaulichend einen Programmspeicher 214 und einen Datenspeicher 216 enthalten. Der Client 212 ist eine Quelle von Information über einen gerichteten Graphen, die eine Kombination von im Speicher 210 gespeicherten Routinen und Daten oder, wie gezeigt, unabhängig vom Speicher 210 sein könnte. Der Prozessor 202 könnte z. B. mit dem Cilient 212 über ein Netzwerk kommunizieren.
  • Die im Programmspeicher 214 gespeicherten Routinen können in verschiedene Funktionen eingeteilt werden. Zeichner-Routinen 220 erzeugen und modifizieren eine Datenstruktur, die den durch die Information vom Client 212 definierten gerichteten Graphen darstellt. Geher- Routinen 222 reagieren auf Navigationssignale und andere Benutzersignale von der Tastatur 206 und der Maus 208 durch Erlangen von Information von der gerichteten Graphdatenstruktur. Maler-Routinen 224 liefern Signale an die Anzeige 204, um sie zu veranlassen, Darstellungen der gerichteten Graphdatenstruktur zu präsentieren. Mathematische Routinen 226 können aufgerufen werden, um Positionen von Elementen des gerichteten Graphen in einem Auslegungsraum zu gewinnen.
  • Der Datenspeicher 216 enthält wiederum Datenstrukturen, auf die der Prozessor 202 bei der Ausführung von Routinen im Programmspeicher 214 zugreifen kann. Die gerichtete Graphdatenstruktur 230 kann, wie oben angemerkt, durch Zeichner Routinen 220 erzeugt und modifiziert werden, und auf sie kann auch durch die Geher-Routinen 222 und die Maler-Routinen 224 zugegriffen werden.
  • Knotenpositionsdaten 232, die mit der gerichteten Graphdatenstruktur 230 verbunden oder darin enthalten sein können, können Positionen von Knoten in einem negativ gekrümmten Raum, z. B. einer hyperbolischen Ebene, und in einem Gestaltungsraum, z. B. einer zweidimensionalen Einheitsscheibe einschließen. Auf die Knotenpositionsdaten 232 kann von den Routinen im Programmspeicher 214 zugegriffen werden.
  • Die Routinen im Programmspeicher 214 können auch auf verschiedene gemischte Datenstrukturen 234 zugreifen. Die Datenstrukturen 234 können z. B. eine als Standardhaufen implementierte zusätzliche Datenstruktur umfassen, um ein Paar von Knoten-IDs einer Verbindungs-ID zuzuordnen. Diese zusätzliche Datenstruktur erlaubt das Nachsehen und Einfügen einer Verbindungs-ID in einer gleichbleibenden erwarteten Zeit.
  • C.2. Reagieren auf Ereignisse
  • Fig. 5 zeigt, wie das System von Fig. 4 durch Präsentieren von Darstellungen einer Grafik auf Ereignisse reagieren kann.
  • In Kasten 300 beginnt der Client 212, indem er einen Anfangsgraphen erlangt und einen anfänglichen Satz von Elementen in den Speicher lädt, z. B. durch Aufrufe, um Knoten zu erzeugen. Erweiterungsflags definieren einen Baum in dem anfänglichen Satz von Elementen. Der Client 212 ruft auch geeignete Routinen im Speicher 214 auf, um den Baum in einer hyperbolischen Ebene auszulegen, den Baum von der hyperbolischen Ebene in einer Einheitsscheibe mit dem Wurzelknoten in der Scheibenmitte abzubilden, den abgebildeten Baum zu malen und die gemalte Version durch Wechseln eines Doppelpuffers auf der Anzeige 204 darzustellen, alles in Kasten 300.
  • In Kasten 302 empfängt der Client 212 ein den Graphen betreffendes Ereignis. Das Ereignis könnte aus einem Navigationssignal, einem Editiersignal oder einem anderen Signal von einem Benutzer hervorgehen. Alternativ könnte das Ereignis von einer anderen Quelle innerhalb oder außerhalb des Systems 200 empfangen werden. In jedem Fall könnte das Ereignis die Form eines Aufrufs von dem Client 212, von einer der Routinen im Speicher 214 oder von anderen durch den Prozessor 202 ausgeführten Befehlen annehmen. Ein Reihe empfangener Ereignisse könnte in einer Warteschlange gehalten werden, sodass der Kasten 302 das Auswählen eines Ereignisses aus der Warteschlange beeinhalten könnte.
  • Als Reaktion auf das in Kasten 302 empfangene Ereignis leitet der Client 212 eine geeignete Antwort ein, indem er einen odere mehrere Aufrufe zu Routinen im Speicher 214 vornimmt. Wie durch Kasten 304 angedeutet, hängt die Antwort von der Art des Ereignisses ab, sodass basierend auf dem Ereignis eine Verzweigung genommen wird.
  • Das Ereignis kann ein nicht-animiertes Ereignis, z. B. ein Ausrichtungs-Verschiebungsereignis, ein Dehnen-Ereignis oder ein Ziehen-Ereignis sein. Ein Ausrichtungsereignis kann entstehen, wenn der Benutzer eine neue Ausrichtung für den Wurzelknoten angibt. Ein Dehnen- Ereignis kann enstehen, wenn der Benutzer einen Dehnungsfaktor für die angezeigte Darstellung angibt. Ein Ziehen-Ereignis kann z. B. entstehen, wenn der Benutzer eine Stelle innerhalb der Darstellung z. B. durch einen Mausklick auswählt, und verlangt, dass sie durch eine geeignete Geste oder ein anderes Signal bewegt wird.
  • Der Client 212 beginnt die Antwort auf ein nicht-animiertes Ereignis in Kasten 310, indem er alle zum Reagieren auf das Ereignis benötigte Information gewinnt. Für ein Ausrichtungsereignis kann die in Kasten 310 erlangte Information eine neue Ausrichtung enthalten. Für ein Dehnen-Ereignis kann die in Kasten 310 erlangte Information einen neuen Dehnungsfaktor enthalten.
  • Für ein Ziehen-Ereignis ist das Erlangen von Information in Kasten 310 etwas komplizierter. Der Client 212 könnte einen Knotenidentifizierer (Knoten-ID) des Knotens nächst der gewählten Stelle erlangen oder könnte auch Information über die verlangte Bewegung erlangen. Diese Informationsstücke könnten in fast derselben Weise erlangt werden, wie sie durch die in Spalten 71-72 beschriebene Funktion 'Finde-nächsten-Knoten' veranschaulicht wird, und wie in Bezug auf Fig. 14 von US-Patent 5,590,250 beschrieben.
  • Wenn der Client 212 in Kasten 310 die benötigte Information erlangt hat, kann er mit geeigneten Aufrufen der Geher-Routinen 222 und der Maler-Routinen 224 zum Auslegen, Abbilden und Malen schließen. Für ein Ausrichtungsereignis muss der Wurzelknoten mit der neuen Ausrichtung ausgelegt werden. Für ein Dehnen- oder Ziehenereignis wird keine Auslegung benötigt. Für ein Dehnen-Ereignis muss der Aufruf der Geher-Routinen 222 jedoch den neuen Dehnungsfaktor zur Verwendung beim Abbilden einschließen. Desgleichen muss für ein Ziehen-Ereignis der Aufruf der Geher-Routinen 222 die Knoten-ID des nächsten Knotens und die nächste Stelle entlang des Bewegungspfades zur Verwendung beim Abbilden enthaften.
  • In Kasten 312 könnten die Geber-Routinen 222 zuerst alle notwendigen Auslegungen in der hyperbolischen Ebene durchführen und könnten auch alle anhängigen Editierungen des Baumes auslegen. Dann könnten in Kasten 314 die Geher-Routinen 222 den Baum in der Einheitsscheibe, beginnend mit einem Anfangsknoten und bei einer Anfangsposition, abbilden. Zum Beispiel könnte als Reaktion auf ein Ziehen-Ereignis der Anfangsknoten der nächste in Kasten 310 identifizierte Knoten sein, und die Anfangsposition könnte die nächste Position längs des Bewegungspfades sein. Der Anfangsknoten und die Anfangsposition, die zuvor zum Abbilden benutzt wurden, könnten als Antwort auf ein Ausrichtungs- oder Dehnen-Ereignis verwendet werden.
  • Wenn der Baum abgebildet ist, können die Maler-Routinen 224 aufgerufen werden, um den abgebildeten Baum in Kasten 316 in einem Anzeigepuffer zu malen. Während des Malens können die Maler-Routinen 224 neue Editierungen markieren, die in dem Baum als Folge von Knotenerzeugung vorfallen. Jede Editierung kann durch Setzen eines Flags oder geeignete Daten markiert werden. Wenn das Malen vollendet ist, kann ein Wechsel von Anzeigepuffern durchgeführt werden, um den Baum wie gemalt zu präsentieren, um so eine Darstellung der Grafik zu liefern.
  • Wie oben angemerkt, werden diese Ereignisse momentan als nicht-animierte Ereignisse implementiert. Als Reaktion auf ein Ausrichtungsereignis schwenkt die Darstellung zu der neuen Ausrichtung, typischerweise um den Knoten im Mittelpunkt des Anzeigebereichs. Gleichermaßen expandiert und kontrahiert die Darstellung radial als Antwort auf ein Dehnen- Ereignis, typischerweise um den Knoten im Mittelpunkt. Als Reaktion auf ein Ziehen-Ereignis bewegt sich die Darstellung mit einer durch das Eingabesignal bestimmten Rate. Der Client 212 könnte jedoch eine animierte Antwort auf ein Ausrichtungsereignis, ein Dehnen- Ereignis oder ein Ziehen-Ereignis liefern, indem er die verlangte Änderung in eine gleichwertige Folge kleinerer Ereignisse umwandelt und in Kasten 310 eine Reihe von Aufrufen ausgibt, einen Aufruf für jedes der kleineren Ereignisse.
  • Fig. 5 veranschaulicht auch Antworten auf zwei verschiedene Arten von Ereignissen, die in der vorliegenden Implementierung immer als animiert behandelt werden. Die erste Art ist ein Lesezeichen- oder Klick-Ereignis, als Reaktion auf welches die Position eines Knotens während einer animierten Sequenz gewegt wird und andere Elemente sich bewegen, um die Bewegung des einen Knotens unterzubringen. Die zweite Art ist ein Einfügen/Entfernen- Ereignis, als Reaktion auf welches ein Knoten während einer animierten Sequenz, bei der einige Elemente kontrahiert, andere expandiert und noch andere sich bewegen, um die Kontraktionen und Expansionen unterzubringen, stabil bleibt.
  • Ein Lesezeichen- oder Klick-Ereignis könnte entstehen, wenn der Benutzer ein Item in einem Menü oder einer anderen Sammlung von Lesezeichen oder eine Position innerhalb der Darstellung mit einem Mausklick auswählt. Als Antwort auf ein Ereignis dieser Art erlangt der Client 212 eine Knoten-ID und eine Zielposition in der Einheitsscheibe. Im Fall eines Lesezeichen-Ereignisses werden die Knoten-ID und die Zielposition vorher gespeichert, und können aus dem Speicher rückgewonnen werden. Im Fall eines Klick-Ereignisses könnte der Client 212 eine Knoten-ID des Knotens nächst der gewählten Position in fast derselben Weise wie die in Spalten 71-72 von US-Patent 5,590,250 beschriebene Funktion 'Finde-nächsten-Knoten' erlangen, und das Ziel könnte eine Vorgabestelle sein, z. B. die Mitte der Einheitsscheibe.
  • In Kasten 320 könnte der Client 212 die Geber-Routinen 222 mit der Knoten-ID und der Zielposition aufrufen. Die Geher-Routinen 222 können reagieren, indem sie eine Animationsschleife ausführen, um eine Folge von Darstellungen zu präsentieren, in denen der Knoten sich von seiner vorherigen Position zu der Zielposition bewegt. In Kasten 320 beginnen die Geher-Routinen durch Errichten einer Folge von Knoten/Position-Paaren, wobei jedes die Knoten-ID und eine Position in der Einheitsscheibe enthält. Die Positionen können erlangt werden durch Gewinnen einer ganzen Umsetzung von der vorherigen Position in die Zielposition, dann Gewinnen und wiederholend Zusammensetzen einer n-ten Wurzel der ganzen Umsetzung mit einer momentanen Umsetzung, wie in Bezug auf Kästen 470, 472 und 482 in Fig. 12 von US-Patent 5,619,632 beschrieben. Die Zahl von Knoten/Position-Paaren kann groß genug sein, um eine sanfte Animation von der vorherigen Position zu der Zielposition zu sichern, wobei Merkmale, die Elemente der Struktur darstellen, die Objektbeständigkeit während des Animierens aufrechterhalten. Als Alternative zu der n-ten-Wurzel-Lösung könnten die Positionen gewonnen werden, indem eine geeignete Zahl von Punkten längs eines geeignet gewählten Bogens in der hyperbolischen Ebene von der vorherigen Position zu der Zielposition ausgewählt wird. Der Bogen könnte als Kompromiss zu einer graden Linie gewählt werden, die unnatürlich erscheinen kann, und die der Bogen des Knotens bei dem n- ten-Wurzel-Verfahren angenommen hätte, was eine übermäßige Zahl von Animationsschritten erfordern kann, um glatt zu erscheinen. Die Zahl von Punkten könnte gewählt werden, um eine zufriedenstellende Animation zu sichern.
  • Beim Erlangen von Positionen in Kasten 320 kann die Ausrichtung bewahrt werden, wie in Bezug auf Fig. 15 von US-Patent 5,590,250, hierin durch Verweis eingeschlossen, beschrieben. Alternativ können Transformationen oder Rotationen gewählt werden, sodass die Position eines einzelnen Punktes auf der Grenze des Einheitskreises bewahrt wird. Der gewählte Punkt könnte z. B. der Punkt auf dem Kreis in der entgegengesetzten Richtung von der Richtung sein, in der die Kinder der Wurzel angeordnet wurden.
  • Die Geher-Routinen 222 führen dann eine Iteration der Animationsschleife für jedes Knoten/Position-Paar in der Sequenz durch, wie in Kasten 322 angedeutet. In Kasten 324 könnten die Geher-Routinen 222 zuerst in der hyperbolischen Ebene alle offenen Editierungen des Baumes auslegen, wie oben in Bezug auf Kasten 312 beschrieben. Dann könnten in Kasten 326 die Geher-Routinen 222 den Baum in der Einheitsscheibe abbilden, beginnend mit dem Knoten und der Position von dem nächsten Knoten/Position-Paar als Anfangsknoten und Anfangsposition, wie oben in Bezug auf Kasten 314 beschrieben.
  • Wenn der Baum abgebildet ist, können die Maler-Routinen 224 aufgerufen werden, um in Kasten 328 den abgebildeten Baum in einem Anzeigepuffer zu malen. Während des Malens können die Maler-Routinen 224 neue Editierungen markieren, die als Folge von Knotenerzeugung vorfallen, wie oben in Bezug auf Kasten 316 beschrieben. Wenn das Malen beendet ist, kann ein Wechsel von Anzeigepuffern durchgeführt werden, um den Baum wie gemahlt zu präsentieren, um so eine Darstellung des Graphen zu liefern.
  • Wenn in Kasten 328 ein neues Edit von den Maler-Routinen 224 markiert wird, wird in Kasten 324 das neue Edit während der nächsten Iteration ausgelegt. Demnach zeigt die animierte Sequenz von Darstellungen, anstatt eine statische Knoten-Verbindung-Struktur wie in US- Patent 5,629,632 zu zeigen, eine dynamische Knoten-Verbindung-Struktur. Die Edits dienen jedoch hauptsächlich dazu, Merkmale hinzuzufügen, die neue Knoten längs des äußeren Umkreises der Darstellung repräsentieren, wenn die Darstellung von der vorherigen Position in die Zielposition übergeht. Die hinzugefügten Merkamle stören oder vermindern demnach nicht die Wahrnehmung der Objekttreue für Merkmale, die andere Elemente darstellen.
  • Ein Einfügen/Entfernen-Ereignis könnte entstehen, wenn der Benutzer eine Expansion oder Kontraktion eines Knotens oder eine andere Modifikation des Graphen oder Baumes verlangt. Ein Einfügen/Entfernen-Ereignis könnte auch in der Form eines Aufrufes empfangen werden, und könnte somit einen Mechanismus zur automatischen Modifikation des Graphen oder des Baumes ohne gleichzeitige menschliche Kontrolle bereitstellen.
  • Als Reaktion auf ein Ereignis dieser Art kann der Client 212 zuerst geeignete Aufrufe von Routinen im Speicher 214 vornehmen, um um festzustellen, ob die verlangte Modifikation des Graphen oder Baumes annehmbar ist, in Kasten 330.
  • Wenn die verlangte Modifikation des Graphen oder Baumes annehmbar ist, kann der Client 212 den Graphen oder Baum entsprechend modifizieren, indem er, wenn nötig, Routinen im Speicher 214 aufruft. Beim Durchführen der Modifikation wird jedes Element, das durch die Modifikation eingefügt, entfernt oder geändert werden könnte, hierin als ein "betroffenes Element" bezeichnet, markiert, z. B. durch Setzen eines Flags oder Speichern anderer geeigneter Daten. Wenn durch ein Expansions- oder Kontraktionssignal ein Knoten ausgewählt wird, ist seine Mutter ebenfalls ein betroffener Knoten, weil sich der der Mutter zugeteilte Bereich ändern kann. Für die meisten anderen Einfügen/Entfernen-Ereignisse sind nur Knoten, die eingefügt oder entfernt werden, betroffen. Der Client 212 kann dann einen Knoten als stabilen Knoten auswählen, der während der animierten Präsentation der Modifikation an seiner vorherigen Stelle zu halten ist.
  • In vielen Fällen kann der vorher beim Abbilben benutzte Anfangsknoten als der stabile Knoten gewählt werden, und er kann an der vorherigen Anfangsposition gehalten werden, in anderen Fällen kann es dem Client 212 erwünscht sein, einen anderen stabilen Knoten zu wählen; z. B. könnte ein Knoten, der grade erweitert wird, als der stabile Knoten, der an seiner momentanen Position zu halten ist, ausgewählt werden, der somit die neue Anfangsposition wird. Sofern der Client 212 keinen anderen stabilen Knoten auswählt, werden daher der vorherige Anfangsknoten und die vorherige Anfangsposition für gewöhnlich beibehalten. Aber, wo der vorherige Anfangsknoten entfernt wird, muss ein anderer Knoten als der vorgegebene stabile Knoten, der der Änderung durch den Client 212 unterliegt, gewählt werden.
  • Wenn ein Entfernen vorgenommen wird, können die Geher-Routinen 222 mit den Knoten- IDs des Knotens der entfernt wird, und seines nächsten Vorfahrs, der nach dem Entfernen in dem Baum, der abgebildet wird, verbleiben wird, aufgerufen werden. Dieser Vorfahr kann gefunden werden, indem von dem Knoten, der entfernt wird, aufwärts gegangen wird, bis ein Vorfahr erreicht wird, der durch das momentane Einfügen/Entfernen-Ereignis nicht entfernt wird.
  • Als Antwort auf diesen Aufruf können die Geher-Routinen 222 prüfen, ob der Knoten, der entfernt wird, der vorherige Anfangsknoten ist. Wenn ja, kann der identifizierte Vorfahr gewählt werden, um ihn als Anfangsknoten zu ersetzen. Wenn der Vorfahr kürzlich an einer Position abgebildet wurde, die angezeigt wird und verfügbar ist, kann diese Position als die Anfangsposition gewählt werden. Wenn der Vorfahr nicht kürzlich abgebildet wurde oder an einer Position abgebildet wurde, die nicht angezeigt wird oder nicht verfügbar ist, weil ein anderes Element nun dort abgebildet wurde, kann die Anfangsposition die Mitte der Einheitsscheibe sein.
  • Außerdem kann in Kasten 330 der Client 212 die Geher Routinen 222 mit der ID des stabilen Knotens und der Position aufrufen. Die Geher-Routinen 222 können durch Ausführen einer Animationsschleife reagieren, um eine Folge von Darstellungen zu präsentieren, in denen zuerst entfernte Knoten an ihren vorherigen Positionen kontrahiert werden, und dann eingefügte Knoten an ihren neuen Positionen expandiert werden, wobei der stabile Knoten an seiner vorherigen Stelle gehalten wird. Wenn ein stabiler Knoten nicht an seiner vorigen Position gehalten werden kann, weil er kürzlich nicht abgebildet wurde oder an einer Stelle abgebildet wurde, die nicht angezeigt wird oder nicht verfügbar ist, kann er zu dieser Stelle mit dem vorherigen Anfangsknoten an der vorherigen Anfangsposition geschoben werden, nachdem entfernte Knoten kontrahiert wurden, was eine plötzliche Bewegung zwischen Kontraktion und Expansion zur Folge hat. Die Geher-Routinen 222 beginnen, indem sie eine Folge von Gewichten errichten, um die Rate zu kontrollieren, mit der sich der jedem betroffenen Knoten zugeordnete Bereich während der Kontraktion und Expansion ändert. Die Gewichte werden durch ausreichend kleine Inkremente getrennt, um die Objekttreue während des Animierens zu bewahren.
  • Die Geher-Routinen 222 führen dann eine Iteration der Animationsschleife für jedes Gewicht in der Folge durch, wie in Kasten 332 angegeben. In Kasten 334 könnten die Geher-Routinen 222 zuerst die betroffenen Knoten und alle offenen Editierungen des Baumes unter Verwendung des Gewichts der Iteration in der hyperbolischen Ebene auslegen. Dann könnten in Kasten 336 die Geher-Routinen 222 den Baum in der Einheitsscheibe abbilden, beginnend mit dem stabilen Knoten und Position, wie oben in Bezug auf Kasten 314 beschrieben.
  • Wenn der Baum abgebildet ist, können die Maler-Routinen 224 in Kasten 338 aufgerufen werden, um den abgebildeten Baum in einem Anzeigepuffer zu malen. Während des Malens können die Maler-Routinen 224 neue Editierungen markieren, die in einem Knoten als Folge von Knotenerzeugung vorkommen, wie oben in Bezug auf Kästen 316 und 328 beschrieben. Wenn das Malen beendet ist, kann ein Wechsel von Anzeigepuffern durchgeführt werden, um den Baum, wie gemalt, zu präsentieren, um so eine Darstellung des Graphen bereitzustellen.
  • Ob es offene Editierungen gibt oder nicht, eine Reihe von Iterationen der Animationsschleife, beginnend in Kasten 332, erzeugt Darstellungen einer dynamischen Knoten-Verbindung- Struktur infolge der Entfernungen und/oder Einfügungen. Des Weiteren bewegen sich betroffene Elemente von ihren Positionen vor den Entfernungen und Einfügungen zu neuen Positionen. Das Verfahren ist erfolgreich implementiert worden, um während dieser Bewegungen Objekttreue zu schaffen.
  • Nachdem in Kasten 316 eine Darstellung geliefert wurde oder nachdem eine Animationsfolge in Kasten 322 oder 332 vollendet ist, kann in Kasten 302 ein weiteres Ereignis empfangen werden, wie durch die in Fig. 5 mit "A" gekennzeichneten Kreise angegeben.
  • C.3: Auslegung
  • Fig. 6 zeigt, wie das Auslegen anfänglich in Kasten 300 in Fig. 5 durchgeführt werden kann. Fig. 7 zeigt, wie das Auslegen einer geänderten Knoten-Verbindung-Struktur in den Kästen 312, 324 und 334 durchgeführt werden kann.
  • Wie in Kasten 350 gezeigt, beginnen die Geher-Routinen 222 das anfängliche Auslegen, indem sie die Wurzelknoten-ID erlangen und sie benutzen, um auf Daten zuzugreifen, die den Wurzelknoten in der gerichteten Graphdatenstruktur 232 betreffen. In Kasten 352 legen die Geher-Routinen 222 den Wurzelknoten aus, indem sie mathematische Routinen 226 mit einer Winkelbreite aufrufen. Dies könnte jeder geeignete Winkel sein, der ein gewünschtes Ergebnis hervorbringt. Die Winkel 2p und p/2 sind erfolgreich benutzt worden, wobei 2p für einen Mittenauslegungsstil geeignet ist und p/2 für einen Oben-, Unten-, Rechts- oder Links- Auslegungsstil geeignet ist. Es könnte auch eine Schnittstelle zum Modifizieren dieses Winkels bereitgestellt werden, um erwünschte Ergebnisse zu erzielen.
  • Als Antwort legen die Math-Routinen 226 den Wurzelknoten am Ursprung des Einheitskreises bei Koordinaten (0,0) aus, mit einer Aufwärtsausrichtung bei Koordinaten (0,1), und mit einem Winkel halb der Winkelbreite. Dann schieben die Geher-Routinen 222 die Wurzelknoten-ID in Kasten 354 an die Spitze einer Warteschlange.
  • Im Rest von Fig. 6 durchqueren die Geher-Routinen 222 iterativ einen Satz von Elementen des durch die gerichte Graphdatenstruktur 232 definierten Baumes, bis die Warteschlange leer ist, wie in Kasten 360 angedeutet. Jede Iteration beginnt, indem die Knoten-ID vom Ende der Warteschlange erlangt und sie benutzt wird, auf Daten zuzugreifen, die mit dem identifizierten Knoten in der gerichteten Graphdatenstruktur 232 in Beziehung stehen.
  • In jeder Iteration ermittelt eine Prüfung in Kasten 370, ob der Knoten in dieser Durchquerung bereits gegangen wurde. Wenn nicht, markieren die Geher Routinen 222 den Knoten als gegangen, erlangen die Knoten-IDs der Kinder, identifizieren, welches der Kinder nicht-ermreiterte Blätter sind, d. h. Blattknoten mit keinen erweiterten ankommenden Verbindungen, erlangen die Zahl der Kinder, die in dem sichtbaren Baum liegen, wie unten erklärt, und rufen die Math-Routinen 226 mit der Zahl N von Kindern des Knotens, die in dem sichtbaren Baum liegen, auf, um Anordnungen von Winkeln und Radien für die Kinder in dem sichtbaren Baum zu gewinnen, wie ebenfalls unten erklärt.
  • Für die Operationen in Kasten 372 kann die Zahl von Kindern in dem sichtbaren Baum N, die eine Art von Nähe-Beziehungsdaten sind, auf zwei Wegen berechnet werden: Wenn die momentane Durchquerung Teil einer Folge von Schritten ist, die Knoten hinzufügt, ist N gleich der Summe der Zahl von Kindern vor der Durchquerung plus der Zahl von Kindern, die hinzugefügt werden. Wenn die momentane Durchquerung Teil einer Folge von Schritten ist, die Knoten entfernt, ist N einfach gleich der Zahl von Kindern vor der Durchquerung.
  • Die Anordnungen von Winkeln und Radien können in Kasten 372 auf vielfältige Weise erhalten werden. In einer erfolgreichen Implementierung wird jeder Radius auf den Wert 0.7 gesetzt, während jeder Winkel auf den kleineren Wert von (N&pi;)I18) und &pi; gesetzt wird. Für N< 18 wird daher der Winkel eines Knotens von der Zahl seiner Kinder abhängen, die sich in dem sichtbaren Baum befinden.
  • In Kasten 374 rufen die Geher Routinen 222 dann die Math-Routinen 226 auf, um die Kinder auszulegen.
  • Bei der Implementierung von Kasten 374 werden zwei allgemeine Prinzipien des Auslegens angewandt. Erstens, Abstand und Winkel zwischen Knoten werden nur auf der Basis von Information über nahe gelegene Elemente in dem Baum, d. h. Nähe-Beziehungsdaten, bestimmt, und zweitens, die für jeden Knoten erlangte Auslegungsinformation gibt die relative Position eines Knotens zu seiner Mutter so an, dass die Position eines Knotens und seiner ganzen Kinder durch eine kleine Änderung in der Datenstruktur verschoben werden kann.
  • Eine allgemeine Strategie, der gefolgt werden kann, besteht darin, mit dem Radius und Winkel eines Kindes von Kasten 372 zu beginnen, ungefähre Abstände, die das Kind benötigt, zu erlangen, die ungefähren Abstände zu verwenden, um einen Abstand von der Mutter zu erhalten, dann den Abstand von der Mutter zu benutzen, um genauere Abstände für das Kind zu erlangen, und dann optional die genaueren Abstände zu verwenden, um noch genauere Abstände zu erlangen, usw.
  • Nach der allgemeinen Strategie können, wenn ein Kind den Radius R und den Winkel 8 aus Kasten 372 hat, die ungefähren Abstände D1 und D2 als sinh(R) bzw. tan(&theta;/4) berechnet werden. D1 und D2 können benutzt werden, um einen Gesamtabstand DT für alle Kinder zu gewinnen, wo jedes benachbarte Paar von Klndem durch die größere der Summen ihrer D1s und D2s getrennt wird, d. h. DT = S(max(D1(i) + D1(i+1), D2(i) + D2(i+1) + max(D1(1), D2(1)) + max(D1(N), D2(N)), wo die Summierung von i = 1 bis N-1 läuft, wobei N die Zahl von Kindern ist, für die das Auslegen durchgeführt wird. Wenn die Mutter einen vorhandenen Winkel &omega; besitzt, dann kann der Abstand DP von der Mutter als asinh(DT/&omega;) berechnet werden. Die Kinder können dann entlang des Umfangs eines Kreises mit dem Radius DP, zentriert bei der Mutter, mit Winkeln zwischen ihnen, die ihren Trennungen proportional sind, positioniert werden.
  • DP kann dann wie folgt benutzt werden, um genauere Abstände für die Kinder zu erhalten:
  • D1' = sinh(DP)asin(sinh(R)/sinh(DP));
  • D2' = 2sinh(DP)atan(tan(&theta;/4)/eDP).
  • D1' und D2' können dann verwendet werden, um einen genaueren Abstand DP' zu der Mutter, wie oben, zu erhalten, usw. bis ein gewünschter Grad an Genauigkeit erreicht ist. An diesem Punkt kann die Ausrichtung jedes Kindes als ein Winkelversatz von der Ausrichtung der Mutter berechnet werden.
  • Man beachte, dass die oben beschriebenen Abstände im wahren metrischen System in der hyperbolischen Ebene ausgedrückt werden. Ein Abstand D in der hyperbolischen Ebene entspricht einem Vektor im Einheitskreis, der am Ursprung beginnt und eine Entfernung tanh(D/2) geht.
  • Die allgemeine Strategie erlangt somit Auslegungsinformation, die nur auf Nähe-Beziehungsinformation über einen Knoten, seine Mutter und seine Geschwister, einschließlich Information über Kinder eines Geschwisters in dem sichtbaren Baum basiert, wie oben in Bezug auf Kasten 372 beschrieben. Die allgemeine Strategie erlangt Auslegungsinformation, die einen Abstand von einem Kind zu seiner Mutter und einen Winkel angibt, der den Unterschied in der Ausrichtung zwischen ihnen darstellt.
  • Die allgemeine Strategie ist in Software implementiert worden, die mit zwei iterativen Schleifen durch das Kind geht, aber den ersten erlangten Abstand benutzt, ohne zu versuchen, genauere Abstände in der oben in Bezug auf die allgemeine Strategie beschriebenen Weise zu erlangen. Die erste Schleife erlangt und speichert vorübergehend Trennungen zwischen benachbarten Kindern und eine "Scheibengröße" für jedes Kind, und erlangt auch eine Gesamttrennung. Diese Information wird dann benutzt, um den Abstand zu der Mutter zu erlangen. Die zweite Schleife erlangt und speichert dann die relative Ausrichtung und die Fläche jedes Kindes.
  • Wenn in der Software-Implementierung ein Kind den Radius R und den Winkel 9 aus Kasten 372 besitzt, werden die Abstände D1 und D2 wie oben in Bezug auf die allgemeine Strategie dargelegt berechnet. D1 und D2 für jedes Kind werden zu D1 und D2 für das vorherige Kind addiert, um S1 und S2 zu gewinnen. Eine Gesamttrennung ST wird um die maximale S1 und S2 des Kindes, außer für das erste und letzte Kind, erhöht, für die ST um den maximalen D1 und D2 des Kindes erhöht wird.
  • Wenn die S1 des Kindes größer ist als seine S2, wird S1 als die Trennung des Kindes gespeichert, D1 wird anfangs als die Größe der Scheibe des Kindes gespeichert, und für das zweite und folgende Kinder wird die vorherige Scheibengröße des Kindes so justiert, dass sie das Minimum seiner vorherigen Scheibengröße und seiner S1 ist. Wenn andererseits die S1 des Kindes nicht größer ist als seine S2, wird S2 als die Trennung des Kindes gespeichert, D2 wird anfangs als die Scheibengröße gespeichert, und für das zweite und folgende Kinder wird die vorherige Scheibengröße des Kindes so justiert, dass sie das Minimum seiner vorherigen Scheibengröße und seiner S2 ist. Die Scheibengröße des letzten Kindes wird jedoch so justiert, dass sie das Minimum seiner vorherigen Scheibengröße und das Maximum seines D1 und D2 ist, um so die erste iterative Schleife zu vollenden.
  • Unter Verwendung des Winkels &omega; der Mutter kann dann der Abstand von der Mutter in der Einheitsscheibe als der größere Wert von tanh(asinh(ST/2&omega;)/2) oder 0.5 berechnet werden. DP wird als Teil der für den Mutterknoten relevanten Daten gespeichert.
  • Für jedes Kind beginnt die zweite iterative Schleife, indem der Winkel (S/ST)2&omega; berechnet wird, wo S die gespeicherte Trennung für das Kind ist. Der Winkel (S/ST)2&omega; wird zu einer laufenden Summe, die bei -2&omega; begann, addiert. Die laufende Summe wird mit anderen für das Kind relevanten Daten gespeichert.
  • Die Math-Routinen 226 können dann den neuen Winkel für das Kind durch Aufrufen einer Funktion berechnen, die der Funktion "Inside-Angle" in Spalten 67 und 68 von US-Patent 5, 590,250 ähnlich ist. Diese Funktion, hierin als "InsideAngle" bezeichnet, beginnt mit einem Abstand ("dist"), der in einen Keil bewegt wurde, und einem Winkel, der die Hälfte des Keils ist. InsideAngle nimmt als Arbeitswinkel den kleineren des Anfangswinkels und (&pi;-&epsi;), wo &epsi; einen sehr kleinen Wert, z. B. 0.0001, haben kann, wodurch Probleme beim Berechnen des Arkustangens umgangen werden. InsideAngle gewinnt die Transformation, die einen Punkt bei Koordinaten (dist,0) auf dem Einheitskreis zu dem Ursprung bewegen würde. Inside- Angle wendet dann diese Transformation auf die komplexen Koordinaten eines Punktes am Schnittpunkt des Umkreises des Einheitskreises mit dem am Ursprung beginnenden Strahl an, dessen Winkel mit der Horizontalen der Arbeitswinkel ist. InsideAngle gibt als resultierenden Winkel den Winkel von der Horizontalen des Strahls vom Ursprung durch den transformierten Punkt zurück.
  • Um den Winkel eines Kindes zu gewinnen, wird InsideAngle mit dem Abstand DP und mit einem Winkel aufgerufen, der durch Multiplizieren der Scheibengröße des Kindes aus der ersten Iteration mit 2&omega;/ST berechnet wird. Der von IsideAngle zurückgegebene Winkel wird mit &pi;/2 verglichen, und der Winkel des Kindes ist der kleinere der beiden.
  • Bevor der neue Winkel des Kindes gespeichert wird, speichern die Math-Routinen 226 den vorherigen Winkel des Kindes. Wenn der Absolutwert der Differenz zwischen dem alten und dem neuen Winkel einen Minimalwert übersteigt, speichern die Math-Routinen 226 auch Daten, die angeben, dass das Auslegen weitergehen soll, wie unten erörtert.
  • Schließlich erlangt die zweite iterative Schleife die Fläche oder Seitenabstand eines Kindes durch Aufrufen einer Funktion, die der Funktion "Room-Available" in Spalten 67 und 68 von US-Patent 5,590,250 ähnlich ist. Diese Funktion, hierin als "RoomAvailable" bezeichnet, beginnt mit einem Abstand D, der in einen Keil bewegt wurde, und einem Winkel &phi;, der die Hälfte des Keils ist. RoomAvailable gibt einen Abstand zur Kante des Keils zurück, der berechnet wird, indem zuerst das Verhältnis (1-D²)12D gewonnen und dann das Verhältnis durch sinF geteilt wird, um einen anfänglichen Abstand S zu erhalten. RoomAvailable gibt dann den Abstand ((S²-1)1/2-S) zurück. Um die Fläche eines Kindes zu erhalten, wird Room-Available mit demselben Abstand und Winkel aufgerufen, die beim Aufrufen von InsideAngle benutzt wurden, wie oben beschrieben. Der von RoomAvailable zurückgegebene Abstand wird als ein Maß der Fläche des Kindes gespeichert.
  • Obwohl die oben beschriebene Software-Implementierung zusätzliche Daten speichern kann, basiert sie auf der Entdeckung, dass für jeden Knoten nur zwei Datenitems gespeichert werden müssen, um imstande zu sein, das hierin beschriebene Auslegen und Abbilden durchzuführen. Ein Item gibt eine Abstands- oder Postionsversetzung von dem Knoten zu seinen Kinderknoten in der hyperbolischen Ebene an. Das andere ist eine Winkelversetzung in der hyperbolischen Ebene zwischen der Verlängerung der ankommenden Verbindung zu der Mutter des Knotens und der abgehenden Verbindung von der Mutter zu dem Knoten. Die zwei Datenitems oder eine Handhabe, die benutzt werden kann, um auf sie zuzugreifen, können im Datenitem einer Verbindung in einer gereichteten Graphdatenstruktur eingeschlossen werden.
  • Die Prüfung in Kasten 380 wendet ein geeignetes Kriterium an, um festzustellen, ob das Auslegen zu der nächsten Generation von Knoten fortgesetzt werden soll. Wie oben bezüglich Kasten 374 angemerkt, kann das Kriterium sein, ob der Winkel irgendeines Kinderknotens um mehr als eine kleine Winkeldifferenz, z. B. 0.00001, modifiziert wurde. Wenn ja, soll das Auslegen weitergehen.
  • In Kasten 382 schieben die Geher-Routinen 222 die ID jedes Kinderknotens, der gedehnt oder kein Blatt ist, an die Spitze der WArteschlange. Andere Kinderknoten könnten in Kasten 382 als begangen markiert werden, da sie keine Kinder haben, die ausgelegt werden. Wenn Kasten 382 zu Ende ist oder wenn die Prüfung in Kasten 380 feststellt, nicht weiterzumachen, oder die Prüfung in Kasten 370 feststellt, dass der Knoten bereits begangen ist, wird in Kasten 384 der hintere Knoten in der Warteschlange hervorgeholt, bevor zum Kasten 360 zurückgekehrt wird.
  • Fig. 7 veranschaulicht, wie das Auslegen einer geänderten Knoten-Verbindung-Struktur in den Kästen 312, 324 und 334 in Fig. 5 durchgeführt werden kann. In jedem Fall beginnt das Auslegen als Reaktion auf einen Aufruf, der zum Auslegen und Abbilden führt, wie in Kasten 400 gezeigt. Wie durch die Verzweigung in Kasten 402 veranschaulicht, hängt jedoch die Art und Weise, in der das Auslegen durchgeführt wird, von der Art der Änderung ab, die in der Knoten-Verbindung-Struktur vorgenommen wird.
  • Wenn die Änderung eine Änderung in der Ausrichtung des Wurzelknotens als Reaktion auf ein Ausrichtungsereignis ist, können die Geher-Routinen 222 die Math-Routinen 226 aufrufen, um in Kasten 404 den Wurzelknoten bei der neuen Ausrichtung vor dem Abbilden und Malen auszulegen. Der Wurzelknoten kann wie oben in Bezug auf Kasten 352 in Fig. 6 beschrieben ausgelegt werden, aber mit der neuen Ausrichtung. Die neue Ausrichtung wird dann beim Abbilden benutzt werden, wobei die Ausrichtung der Darstellung geändert wird.
  • Wenn die Änderung eine nicht-animierte Editierung ist, die als Reaktion auf ein Dehnen-Ereignis, ein Ziehen-Ereignis, ein Lesezeichen-Ereignis oder ein Klick-Ereignis vorkommen könnte, wenn Editierungen anhängig sind, erstellen in Kasten 410 die Geher Routinen 222 zuerst eine Liste von Entfernen-Editierungen und legen dann in Kasten 412 die Entfernen- Editierungen vor dem Abbilden und Malen aus. Dann erstellen die Geher-Routinen eine Liste von Hinzufügen-Editierungen in Kasten 414 und legen dann in Kasten 416 die Hinzufügen-Editierungen vor dem Abbilden und Malen aus.
  • In der augenblicklichen Implementierung werden die Editierlisten auf der Basis von Editierquellenlisten aufgestellt, die von verschiedenen Routinen im Speicher 214 unterhalten werden und Zeichner-Routinen 220 und Maler-Routinen 224 einschließen. Die augenblickliche Implementierung betrifft auch einen durch expandierte Verbindungen definierten Baum. Ein Paar von Editierquellenlisten, hierin als "CollapsedLinks" und "ExpandedLinks" bezeichnet, umfasst Editierungen für Verbindungen, die durch Kontrahieren- bzw. Expandieren-Anforderungen ausgewählt werden, und kann daher in Kasten 330 in Fig. 5 eingerichtet werden. Das andere Paar, hierin als "RemovedLinks" und AddedLinks" bezeichnet, umfasst Editierungen für Verbindungen, die entfernt bzw. eingefügt werden. Mehrfache Kopien der Editierquellenlisten können für verschiedene Zwecke vorhanden sein.
  • Die in Kasten 410 aufgestellte Liste von Entfernen-Editierungen basiert auf RemovedLinks, während die in Kasten 414 aufgestellte Liste von Hinzufügen-Editierungen auf AddedLinks basiert. Beim Aufstellen einer Liste in Kasten 410 oder 414 greifen die Geher Routinen 222 auf jede Editierung in der passenden Editierquellenliste zu und benutzen die Editierung, um geeignete Einträge für die Liste, die aufgestellt wird, zu erlangen. In jedem Fall wird eine Editierung in der Editierquellenliste benutzt, um eine Knoten-ID des Kindknotens der Verbindung der Editierung und einen Editierungs-Identifikator, der die Art der grade durchgeführten Editierung angibt, zu erlangen.
  • Eine Mutter des Kindknotens wird dem Ende einer Liste betroffener Knoten hinzugefügt, sofern sie nicht schon auf der Liste ist. Die Mutter ist der gedehnte Mutterknoten des Kindes, oder wenn keine seiner Mutterknoten momentan gedehnt sind, sein erster Mutterknoten. Wenn eine Editierung von einer Editierquellenliste einen Kindknoten betrifft, der keine Mutter hat, muss sie die Wurzel betreffen, und der Wurzelknoten wird daher in diesem Fall an das Ende der Liste betroffener Knoten gestellt.
  • Am Ende der Iteration für eine Verbindung aus einer Editierquellenliste wird der Kindknoten der Verbindung auch einer Liste von Kinderknoten hinzugefügt, bevor auf die nächste Editierung in der passenden Editierquellenliste zur Verwendung bei der nächsten Iteration zugegriffen wird. Auf diese Weise wird eine Iteration für jede Editierung auf der Editierquellenliste durchgeführt, bis alle Editierungen behandelt worden sind, um die Listen von betroffenen Knoten und Kinderknoten zu vollenden.
  • Dann werden in Kasten 412 oder 416 die Editierungen unter Verwendung der Listen ausgelegt, indem einer Sequenz ähnlich der in Kästen 354 bis 382 von Fig. 6 für jeden Knoten in der Liste von betroffenen Knoten gefolgt wird, der Knoten von der Liste geschoben wird, anstatt den Wurzelknoten an den Anfang der Warteschlange zu setzen, und verschiedene Änderungen in Kasten 372 wie folgt vorgenommen werden: Zusätzlich zum Identifizieren, welche Kinder nicht-ermreiterte Blätter sind, stellt das Auslegen in den Kästen 412 und 416 fest, ob jedes Kind auf der Liste von Kinderknoten ist. Wenn ja, multipliziert das Auslegen den Winkel und den Radius des Kindes mit einem Gewicht. In Kasten 412 ist das Gewicht null, sodass das Kind in Kasten 374 ungefähr bei seiner vorherigen Position mit einem Winkel und Radius von null ausgelegt wird, und somit verschwindet. In Kasten 416 ist das Gewicht eins, sodass in Kasten 374 das Kind an seiner neuen Position mit seinem vollen Winkel und Radius ausgelegt wird.
  • Die Operationen in den Kästen 410 bis 416 könnten auch innerhalb einer Animationsfolge implementiert werden, in welchen Fall Entfernen-Editierungen während eines Anfangsteils der Animationsfolge und Hinzufügen-Editierungen während eines nachfolgenden Teils der Folge behandelt werden könnten. Wenn andererseits die nicht-animierten Editierungen hauptsächlich aus der Knotenerzeugung während des Malens entstehen, wie oben in Bezug auf Fig. 5 beschrieben, dürfen die Editierungen nur Hinzufügen-Editierungen sein, und alle momentan anhängigen Editierungen könnten in jedem Schritt der Animationsfolge behandelt werden.
  • Wenn die Änderung eine animierte Editierung ist, die als Reaktion auf ein Einfügen/Entfernen-Ereignis, z. B. eine Anforderung zum Kontrahieren oder Expandieren eines Elements, vorkommen könnte, erlangen die Geher-Routinen 222 zuerst in Kasten 420 die Zahl zu entfernender und hinzuzufügender Elemente basierend auf den Editierquellenlisten. Die zu entfernende Anzahl kann erlangt werden, indem die Zahl von Elementen in CollapsedLinks und RemovedLinks addiert wird, während die hinzuzufügende Anzahl erhalten werden kann, indem die Zahl von Elementen in ExpandedLinks und AddedLinks addiert wird. Dann weisen in Kasten 422 die Geher-Routinen 222 die verfügbaren Animationsschritte zwischen entfernenden Schritten und hinzufügenden Schritten zu und erstellen auch Listen von Entfernen-Editierungen und Hinzufügen-Editierungen, etwa wie in Kästen 410 und 414 in Fig. 6. Eine einfache Zuweisung von Animationsschritten besteht aus der Hälfte Entfernungsschritte und der Hälfte Hinzufügungsschritte, aber, wenn es keine zu entfernenden Elemente gibt, können alle Schritte Hinzufügungsschritte sein und umgekehrt, wenn keine Elemente hinzuzufügen sind.
  • Beim Erstellen von Listen von Entfernen-Editierungen und Hinzufügen-Editierungen in Kasten 422 können die Geher-Routinen wie oben in Bezug auf Kästen 410 und 414 beschrieben arbeiten, sofern es keine kollabierten oder expandierten Knoten gibt. Im Fall von kollabierten oder expandierten Knoten wird der Knoten selbst, zusätzlich zu seiner Mutter, an das Ende der Liste betroffener Knoten geschoben; dann werden die Kinder des Knotens, anstelle des Knotens selbst, der Liste von Kinderknoten hinzugefügt. Mit anderen Worten, das Kollabieren oder Expandieren kann man sich als zwei Generationen von Knoten betreffend vorstellen, im Gegensatz zu anderen Operationen, die nur eine betreffen. Die Geher-Routien 222 erstellen zwei Paare von Listen von betroffenen und Kinderknoten, ein Paar für Entfernen- Editierungen und ein Paar für Hinzufügen-Editierungen.
  • Die Animationsschritte, die Knoten entfernen, werden dann in der Schleife, die mit Kasten 430 beginnt, mit einem erlangten Gewicht, mit den mit dem Gewicht ausgelegten Entfernen- Editierungen und mit Abbliden und Malen eines Animatiosrahmens durchgeführt, in Kasten 432. Ähnlich werden dann die Animationsschritte, die Knoten hinzufügen in der Schleife, die mit Kasten 440 beginnt, mit einem erlangten Gewicht, mit den mit dem Gewicht ausgelegten Hinzufügen-Editierungen und mit Abbilden und Malen eines Animationsrahmens durchgeführt, in Kasten 442. Indem Knoten vor dem Hinzufügen von Knoten entfernt werden, wird die Situation verhindert, wo derselbe Knoten an zwei Stellen in einem einzigen Rahmen erscheinen würde. Indem ein letzter Schritt mit dem Gewicht null nach dem Entfernen von Knoten und ein anderer mit dem Gewicht eins nach dem Hinzufügen von Knoten durchgeführt werden, kann das Verfahren sicherstellen, dass das endgültige Gewicht null bzw. eins ist.
  • Ein Gewicht kann in Kasten 432 erlangt werden, indem die momentane Entfernen-Animationsschrittzahl von der Zahl von Entfernen-Animationsschritten subtrahiert wird, dann die Differenz durch die Zahl von Entfernen-Animationsschritten dividiert wird, sodass die Gewichte während einer Reihe von Entfernen-Animationsschritten von eins bis null gehen. Ähnlich kann in Kasten 442 ein Gewicht erlangt werden, indem eins zu der momentanen Hinzufügen-Animationsschrittzahl addiert wird, dann die Summe durch die Zahl von Hinzufügen- Animationsschritten dividiert wird, sodass die Gewichte während einer Reihe von Hinzufügen-Animationsschritten von etwa null bis eins gehen.
  • Die Gesamtzahl von Animationsschritten, verbunden mit der Animationsgeschwindigkeit, hilft die Wahrnehmung der Objekttreue während des Animierens zu beeinflussen. Wie aus der obigen Beschreibung der Art des Gewinnens der Gewichte zu erkennen ist, bestimmt die Gesamtzahl von Animationsschritten die Rate, mit der sich die Fläche eines entfernten oder hinzugefügten Elements ändert, wodurch indirekt die Rate bestimmt wird, mit der sich andere Elemente in Bezug auf die Fläche des entfernten oder hinzugefügten Elements bewegen müssen. Eine größere Zahl von Animationsschritten, zwischen entfernenden Schritten und hinzufügenden Schritten geeignet zugeordnet, wird wahrscheinlicher Objekttreue hervorbringen, vorausgesetzt, es wird eine ausreichende Animationsgeschwindigkeit beibehalten.
  • Das Verfahren von Fig. 7, wenn es mit einer geeigneten Zahl von Animationsschritten und bei einer geeigneten Geschwindigkeit durchgeführt wird, hat erfolgreich die Wahrnehmung eines Satzes von Knoten, die sich zusammenziehen und Ausdehnen, etwa wie ein Fächer gefaltet oder entfaltet werden würde, hervorgebracht. Durch Justieren der Radien und Winkel, die den Knoten zugeordnet sind, können unterschiedliche Wahrnehmungen erhalten werden, z. B., dass entfernte Knoten in ihre Eltern gezogen oder in die Unendlichkeit weggedrückt werden, oder dass eingefügte Knoten aus ihren Eltern herauswachsen oder aus der Unendlichkeit hereingezogen werden. Wenn nur eine Gruppe von Kindern entfernt wird, kann es wie in die Unendlichkeit weggedrückt aussehen, aber wenn alle Kinder als eine Gruppe, wie beim Zusammenziehen, entfernt werden, können alle wie in ihre Eltern hineingezogen erscheinen. Gleichermaßen, wenn einer Gruppe ein Kind hinzugefügt wird, kann es wie aus der Unendlichkeit hereingezogen erscheinen, aber wenn alle Kinder als eine Gruppe, wie beim Ausdehnen, eingefügt werden, können alle wie aus ihren Elteren herausgewachsen erscheinen. Des Weiteren können Enkel in die Unendlichkeit weggedrückt werden, während Kinder in ihre Eltern hineingezogen werden, wobei die Raten so eingestellt werden, dass die Enkel stabil erscheinen und nur die Kinder sich zu bewegen scheinen.
  • C.4. Variationen
  • Eine Implementierung ähnlich der oben beschriebenen ist erfolgreich auf Prozessoren von IBM-kompariblen PCs ausgeführt worden, aber Implementierungen könnten auch auf anderen Maschinen mit jedem geeigneten Prozessor ausgeführt werden.
  • Eine Implementierung ähnlich der oben beschriebenen ist erfolgreich unter Verwendung von C++ in 32-Bit Windows-Umgebungen ausgeführt worden, aber andere Programmiersprachen und Umgebungen, einschließlich nicht objektorientierter Umgebungen, und andere Plattformen, z. B. Lisp, eine Unix-Umgebung, ANSI C, Pascal usw., könnten verwendet werden.
  • Eine Implementierung ähnlich der oben beschriebenen ist erfolgreich mit in einem XML- verträglichen Format und in einem experimentellen Format präsentierten Knoten-Verbindung-Daten ausgeführt worden, aber die Erfindung könnte mit jeder geeigneten Art von Knoten-Verbindung-Daten, ob statisch oder dynamisch, und zugänglich in jeder geeigneten Weise, z. B. im Speicher oder über ein Netzwerk, implementiert werden.
  • Eine Implementierung ähnlich der oben beschriebenen ist implementiert worden, wobei jede Iteration eine Darstellung oder eine animierte Reihe von Darstellungen eines Graphen als Reaktion auf ein Navigationssignal erzeugt und präsentiert, aber die Erfindung könnte mit anderen Arten von Iterationen, die durch andere Arten von Signalen oder Aufrufen aufgerufen werden, implementiert werden.
  • Eine Implementierung ähnlich der oben beschriebenen ist erfolgreich mit Navigationssignalen ausgeführt worden, die von einer Tastatur und Maus empfangen werden und sich auf eine angezeigte Darstellung oder animierte Reihe von Darstellungen einer Knoten-Verbindung-Struktur beziehen. Die Erfindung könnte jedoch mit oder ohne Navigationssignale implementiert werden. Zum Beispiel könnten Elemente als Reaktion auf verschiedene Sortierungen der Kinder eines Knotens oder als Reaktion auf die Anwendung verschiedener Filter auf Elemente einer Struktur umherbewegt werden. Auch könnte die Erfindung mit jeder geeigneten Art von Expandierungs- und Kontraktionssignalen oder anderen Navigationssignalen implementiert werden, einschließlich Signalen, die von externen Abfragen entstehen, Auswählen eines menüeintragsgleichen Items, das eine Erweiterung unter einem angegebenen Knoten oder Verbindung verlangt, oder Auswählen eines menüeintragsgleichen Items, das eine Erweiterung unter dem momentanten Brennpunkt verlangt. Die Navigationssignale könnten stattdessen einen illusorischen Raum, wie er durch Videospiele oder Umgebungen virtueller Wirklichkeit erzeugt wird, oder einen Präsentationsraum anders als eine Anzeige betreffen, und Navigationssignale könnten stattdessen von jeder anderen geeigneten Benutzereingabeeinrichtung, einschließlich anderer Arten von Zeigegeräten oder anderer Arten von Einrichtungen zum Empfangen alphanumerischer oder sprachlicher Eingabe, z. B. Sprache, Gesten oder andere Arten von Benutzereingaben, erzeugt werden. Des Weiteren könnte die Erfindung mit anderen Arten von Darstellungen von Knoten-Verbindung-Strukturen implementiert werden. Die Erfindung könnte ohne Animation oder mit jedem geeigneten Animationsverfahren implementiert werden.
  • Die oben beschriebene Implementierung erlangt Nähe-Beziehungsdaten, die sich auf Beziehungen zwischen einer Mutter, ihren Kindern und ihren Enkeln beziehen, aber die Erfindung könnte implementiert werden, um Nähe-Beziehungsdaten zu erlangen, die sich auf einen verschiedenen Satz von nahen Knoten-Verbindung-Beziehungen beziehen, z. B. Beziehungen, die entferntere Verwandte eines grade ausgelegten Elements, ob zusätzliche Generationen über oder unter dem Element oder zusätzliche seitliche Verwandte, einschließen. Zum Beispiel könnten die Großeltern des grade ausgelegten Elements in Betracht gezogen werden.
  • Die oben beschriebene Implementierung erlangt Auslegungsdaten, die für einen Knoten eine Positionsversetzung und eine Winkelverseztung von seiner Mutter angeben. Die Erfindung könnte jedoch implementiert werden, um Auslegungsdaten für Verbindungen anstelle von oder zusätzlich zu Knoten zu erlangen. Weiterhin könnte die Erfindung implementiert werden, um Auslegungsdaten zu erlangen, die eine relative Position in jeder anderen geeigneten Weise angeben und zusätzliche Information angeben.
  • Die oben beschriebene Implementierung erlangt Zählungen von Enkeln der Mutter eines Elements und benutzt dann diese Zählungen, um Winkel und Radien der Kinder der Mutter zu erlangen, die wiederum benutzt werden, um eine Positionsversetzung und eine Winkelversetzung zu erlangen. Die Implementierung führt spezifische Berechnungen wie oben beschrieben durch. Die Erfindung könnte implementiert werden, um Nähe-Beziehungsdaten und Auslegungsdaten in jeder anderen geeigneten Weise zu erlangen. Zum Beispiel könnte jedes Kind einer Mutter eine Gewichtung haben, und die relativen Gewichtungen der Kinder könnten verwendet werden, um den von jedem Kind belegten Raum zu bestimmen oder proportionale Abstände von den Kindern zu der Mutter zu bestimmen. Auch könnte Information über die verfügbare Fläche rund um einen Knoten in Betracht gezogen werden, indem eine Auslegung mit der geringsten Überlappung in den Flächen erlangt wird. Auslegungsergebnisse könnten zwischengespeichert werden, um sich wiederholende Berechnungen zu minimieren.
  • In der oben beschriebenen Implementierung wird eine in der hyperbolischen Ebene ausgelegte Knoten-Verbindung-Struktur dann in der Einheitsscheibe abgebildet und dann gemalt, aber eine erfindungsgemäß ausgelegte Knoten-Verbindung-Struktur könnte in jedem anderen geeigneten negativ gekrümmten Raum ausgelegt werden und dann in jeder anderen geeigneten Weise mit oder ohne Abbilden behandelt oder in jeder anderen geeigneten Weise abgebildet und präsentiert werden, einschließlich ihres Abbildens in jedem anderen geeigneten Darstellungsraum und ihrer Präsentation in jedem anderen geeigneten Anzeigeraum, einschließlich dreidimensionaler Darstellung und Anzeigeräumen.
  • Die oben beschriebene Implementierung bestimmt, ob das Kind eines Knotens ausgelegt wird, indem eine für den Knoten erlangte Winkelversetzung mit einer vorherigen Winkelversetzung verglichen wird, aber die Erfindung könnte implementiert werden, indem alle Abkömmlinge jedes ausgelegten Knotens ausgelegt werden, oder durch Anwenden jedes anderen geeigneten Kriteriums, um zu bestimmen, welche Elemente auszulegen sind.
  • Die oben beschriebene Implementierung ist für das Auslegen von Elementen eines Baumes geeignet. Die Erfindung könnte benutzt werden, um Elemente anderer Arten von Knoten- Verbindung-Strukturen auszulegen, z. B. Grafiken im Allgemeinen.
  • Die oben beschriebene Implementierung verwendet Knoten-Verbindung-Daten, die Erweiterungsflags von Verbindungen enthalten, um einen Baum in einer Grafik mit Speicherverwaltung zu definieren, aber die Erfindung könnte mit einer in jeder anderen Weise definierten Knoten-Verbindung-Struktur implementiert und in jeder geeigneten Weise in einen Speicher geladen werden.
  • Die oben beschriebene Implementierung verwendet eine gerichtete Graphdatenstruktur, in der eine Verbindung als ein Item in zwei verbundenen Listen dargestellt wird, eines für die abgehenden Verbindungen von seinem Von-Knoten und eines für die ankommenden Verbindungen zu seinem Zu-Knoten. Jede andere geeignete Art von Datenstruktur könnte verwendet werden.
  • Die oben beschriebene Implementierung kann gerichtete Graphen, einschließlich zyklischer gerichteter Graphen handhaben, aber die Erfindung könnte für andere Arten von Graphen implementiert werden, indem andere Arten von Verbindungen in geeignete Kombinationen von gerichteten Verbindungen umgewandelt werden oder sonstwie ein Protokoll zum Abbilden der Struktur eines Graphen in einem Baum bereitgestellt wird. Zum Beispiel könnte eine ungerichtete Verbindung zwischen zwei Knoten in ein Paar gerichteter Verbindungen zwischen denselben Knoten umgewandelt werden oder könnte basierend auf einem geeigneten Kriterium eine Richtung zugewiesen werden. Im Allgemeinen ist eine Darstellung, in der alle ungerichteten Verbindungen in ein Paar gerichteter Verbindungen umgewandelt wurden, wahrscheinlich visuell verwirrend, weil jedes Paar von gerichteten Verbindungen in einem Zyklus resultiert, aber diese Verwirrung könnte überwunden werden, indem Zyklen in anderer Weise präsentiert werden.
  • In der oben beschriebenen Implementierung werden Tätigkeiten in einer Reihenfolge ausgeführt, die in vielen Fällen modifiziert werden könnte. Zum Beispiel könnte in Fig. 6 ein Tiefe- Zuerst-Gang anstelle eines BreiteZuerst-Gangs durchgeführt werden.
  • Außerdem werden in der oben beschriebenen Implementierung mehrere Softwareteile, z. B. Zeichner-, Geher, Maler- und mathematische Routinen und der Client, unterschieden, aber die Erfindung könnte mit anderen Kombinationen von Hardware und Software und mit in jeder geeigneten Weise organisierter Software implementiert werden.
  • D. Anwendungen
  • Die Erfindung ist bei der Bereitstellung eines interaktiven Browsers von Knoten-Verbindung- Strukturen angewandt worden. Die Erfindung könnte in einer Vielfalt von Kontexten angewandt werden, in denen Knoten-Verbindung-Strukturen zur Visualisierung ausgelegt werden. Insbesondere könnte die Erfindung bei der Visualisierung von Webbezogenen Strukturen, wie z. B. die durch einen zwischengespeicherten Satz von Web-Seiten oder andere Web-Objekte gebildete Struktur, angewandt werden.
  • Ganz allgemein könnte die Erfindung angewandt werden, um einen Browser zum Organisieren von Diagrammen, Filesystem-Hierarchien, Hypertext-Hierarchien, WWW-Verbindbarkeitsstrukturen, Teilelisten, SGML-Strukturen oder irgendwelchen anderen großen Knoten- Verbindung-Strukturen bereitzustellen. Der Browser könnte beim Editieren von Strukturen oder ihren Inhalten verwendet werden.
  • E. Verschiedenes
  • Die Erfindung ist in Bezug auf Software-Impementierungen beschrieben worden, aber die Erfindung könnte mit spezialisierter Hardware implementiert werden.
  • Nach einer bevorzugten Ausführung des Verfahrens des Auslegens der Knoten-Verbindung- Strukturen umfassen die nahen Knoten-Verbindung-Strukturen nur Beziehungen zwischen der Mutter, den Kindern der Mutter und Enkeln.
  • Das Verfahren wird vorzugsweise in einer Reihe von Iterationen durchgeführt, wobei jede Iteration in der Iteration auszulegende identifizierende Elemente umfasst und die Tätigkeiten des Erlangens von nahen Beziehungsdaten und Erlangens von Auslegungsdaten für jedes der identifizierten Elemente durchführt.
  • Die Reihe von Iterationen wird vorteilhaft als Reaktion auf ein Ereignis, das ein Einfügen oder Entfernen verlangt, durchgeführt, wobei die identifizierten Elemente durch das Einfügen oder Entfernen beeinflusste Elemente einschließen.
  • Vor der Reihe von Iterationen umfasst das Verfahren vorzugsweise das Gewinnen eines Gewichts für jede Iteration, wobei jede Iteration die Verwendung des Gewichts beim Durchführen der Tätigkeit des Erlangens von Auslegungsdaten umfasst.
  • Identifizierte Elemente enthalten vorteilhaft Elemente, die der Struktur während einer vorangehenden Iteration hinzugefügt wurden.

Claims (10)

1. Verfahren zum lokalen, relativen Anordnen einer Knoten-Kanten-Struktur (10) in einem Raum mit negativer Krümmung, wobei das Verfahren umfasst:
Auswählen eines Elementes (22) in der Struktur (20), ohne die Auswahl auf eine Position in der Struktur in der Nähe eines Wurzel- oder Basisblattes zu beschränken;
Bestimmen von Nähe-Beziehungsdaten (40, 100, 160) für das Element in der Struktur, wobei die Nähe-Beziehungsdaten Attribute von Elementen oder Gruppen von Elementen in der Nähe des Elementes (22) anzeigen, und
auf der Basis der Nähe-Beziehungsdaten Bestimmen von Daten, die die Position des Elementes in Bezug auf eine Mutter in dem Raum mit negativer Krümmung (42, 102, 160) anzeigen.
2. Verfahren nach Anspruch 1, wobei der Raum mit negativer Krümmung eine hyperbolische Ebene ist.
3. Verfahren nach Anspruch 1 oder 2, wobei es sich bei dem Element und der Mutter um Knoten handelt, und wobei die Anordnungs-Daten Positionsverschiebungs- Daten, die den Abstand (44D) zwischen der Position der Mutter und der Position des Elementes anzeigen, und Winkelverschiebungs-Daten einschließen, die eine Winkeldifferenz zwischen einer zu der Mutter (zu 24) hin führenden Kante und einer von der Mutter weg zu dem Element (24 zu 22) führenden Kante anzeigen.
4. Verfahren nach Anspruch 3, wobei die Anordnungs-Daten nur die Positionsverschiebungs-Daten (44D) und die Winkelverschiebungs-Daten einschließen.
5. Verfahren nach einem der Ansprüche 1 bis 4, wobei der Vorgang des Bestimmens der Nähe-Beziehungsdaten umfasst: für jede einer Gruppe von Töchtern (22, 26, 28) der Mutter (24) Bestimmen einer Anzahl von Enkeln (30; 32), wobei das Element (22) eine der Gruppe von Töchtern (22, 26, 28) ist.
6. Verfahren nach Anspruch 5, wobei der Vorgang des Bestimmens von Anordnungs- Daten umfasst:
Verwenden der Anzahl von Enkeln (30; 32), um für jede der Gruppe von Töchtern (22, 26, 28) einen Radius und einen Winkel zu bestimmen; und
Verwenden der Radien und Winkel für die Gruppe von Töchtern, um die Positionsverschiebung (44,D) und die Winkelverschiebung zwischen der Mutter (24) und dem Element (22) zu bestimmen.
7. Verfahren nach Anspruch 6, wobei das Element (22) eine vorangegangene Winkelverschiebung aufweist und das Verfahren des Weiteren das Vergleichen der bestimmten Winkelverschiebung mit der vorangegangenen Winkelverschiebung umfasst, um festzustellen, ob Töchter des Elementes anzuordnen sind.
8. Verfahren nach Anspruch 1 bis 7, das des Weiteren das Übertragen von Daten zwischen einem ersten und einem zweiten Rechner über ein Netzwerk einschließt, wobei der zweite Rechner Speicher und einen Prozessor enthält, der zum Zugreifen auf den Speicher geschaltet ist, und der Speicher zum Speichern von Befehls- Daten dient, wobei das Verfahren umfasst:
Herstellen einer Verbindung zwischen einem ersten und einem zweiten Rechner über das Netzwerk; und
Betreiben des ersten und des zweiten Rechners zum Übertragen von Befehls- Daten von dem ersten Rechner zum Speicher des zweiten Rechners, wobei die Befehls-Daten Befehle anzeigen, die der Prozessor ausführen kann und der Prozessor beim Ausführen der Befehle die lokale, relative Anordnung der Knoten- Kanten-Struktur erzeugt.
9. System, das umfasst:
einen Prozessor (202) zum Anordnen einer Knoten-Kanten-Struktur (10) in einem Raum mit negativer Krümmung, wobei der Prozessor (202) beim Erzeugen einer lokalen, relativen Anordnung der Knoten-Kanten-Struktur:
ein Element (22) in der Struktur (20) auswählt, ohne die Auswahl auf eine Position in der Struktur in der Nähe eines Wurzel- oder Basisblattes zu beschränken;
Nähe-Beziehungsdaten (40, 100, 160) für das Element in der Struktur bestimmt, wobei die Nähe-Beziehungsdaten Attribute von Elementen oder Gruppen von Elementen in der Nähe des Elementes (22) anzeigen; und
auf der Basis der Nähe-Beziehungsdaten Daten bestimmt, die die Position des Elementes in Bezug auf eine Mutter in dem Raum mit negativer Krümmung (42, 102, 160) anzeigen.
10. Erzeugnis zum Einsatz in einem System, das enthält:
eine Speichermedien-Zugriffsvorrichtung; und
einen Prozessor, der so geschaltet ist, dass er Daten empfängt, auf die von der Speichermedien-Zugriffsvorrichtung auf einem Speichermedium zugegriffen wird;
wobei das Erzeugnis umfasst:
ein Speichermedium; und
Befehls-Daten, die von dem Speichermedium gespeichert werden, wobei die Befehls-Daten Befehle anzeigen, die der Prozessor ausführen kann, und der Prozessor beim Ausführen der Befehle eine Knoten-Kanten-Struktur in einem Raum mit negativer Krümmung anordnet, wobei der Prozessor beim Erzeugen einer lokalen, relativen Anordnung einer Knoten-Kanten-Struktur:
ein Element (22) in der Struktur (20) auswählt, ohne die Auswahl auf eine Position in der Struktur in der Nähe eines Wurzel- oder Basisblattes zu beschränken;
Nähe-Beziehungsdaten (40, 100, 160) für das Element in der Struktur bestimmt, wobei die Nähe-Beziehungsdaten Attribute von Elementen oder Gruppen von Elementen in der Nähe des Elementes (22) anzeigen; und
auf der Basis der Nähe-Beziehungsdaten die Position des Elementes in Bezug auf eine Mutter in dem Raum mit negativer Krümmung (42, 102, 160) bestimmt.
DE69904539T 1998-07-29 1999-07-28 Anordnung von Knotenverbindungstruktur in einem Raum mit negativer Kurvatur Expired - Lifetime DE69904539T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/124,805 US8232995B2 (en) 1998-07-29 1998-07-29 Local relative layout of node-link structures in space with negative curvature

Publications (2)

Publication Number Publication Date
DE69904539D1 DE69904539D1 (de) 2003-01-30
DE69904539T2 true DE69904539T2 (de) 2003-05-15

Family

ID=22416864

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69904539T Expired - Lifetime DE69904539T2 (de) 1998-07-29 1999-07-28 Anordnung von Knotenverbindungstruktur in einem Raum mit negativer Kurvatur

Country Status (4)

Country Link
US (1) US8232995B2 (de)
EP (1) EP0977155B1 (de)
JP (1) JP4864181B2 (de)
DE (1) DE69904539T2 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6377259B2 (en) 1998-07-29 2002-04-23 Inxight Software, Inc. Presenting node-link structures with modification
US6901555B2 (en) 2001-07-09 2005-05-31 Inxight Software, Inc. Tree visualization system and method based upon a compressed half-plane model of hyperbolic geometry
EP2562663A3 (de) * 2002-06-13 2016-05-11 MarkLogic Corporation. Parent-Child-Abfrageindizierung für XML-Datenbanken
WO2003107323A1 (en) * 2002-06-13 2003-12-24 Cerisent Corporation A subtree-structured xml database
US7127469B2 (en) * 2002-06-13 2006-10-24 Mark Logic Corporation XML database mixed structural-textual classification system
EP1665128A4 (de) * 2003-08-21 2007-10-17 Microsoft Corp Electronische tintebearbeitung
BR0306695A (pt) * 2003-08-21 2005-05-24 Microsoft Corp Processamento de tinta eletrônica
EP1656612B1 (de) * 2003-08-21 2011-10-26 Microsoft Corporation Elektronische tintenverarbeitung
US7616333B2 (en) * 2003-08-21 2009-11-10 Microsoft Corporation Electronic ink processing and application programming interfaces
US7283670B2 (en) * 2003-08-21 2007-10-16 Microsoft Corporation Electronic ink processing
US7631001B2 (en) * 2003-08-21 2009-12-08 Microsoft Corporation Electronic ink processing
US7958132B2 (en) * 2004-02-10 2011-06-07 Microsoft Corporation Voting based scheme for electronic document node reuse
US8214754B2 (en) 2005-04-15 2012-07-03 Microsoft Corporation Registration of applications and complimentary features for interactive user interfaces
US7477263B2 (en) * 2006-03-10 2009-01-13 International Business Machines Corporation Relayout of all or part of a graph in association with a change in state of a graph element
US8120610B1 (en) * 2006-03-15 2012-02-21 Adobe Systems Incorporated Methods and apparatus for using aliases to display logic
US20080016093A1 (en) * 2006-07-11 2008-01-17 Clement Lambert Dickey Apparatus, system, and method for subtraction of taxonomic elements
US7949946B2 (en) * 2007-10-17 2011-05-24 Microsoft Corporation Layout and line routing composition
CN101676955B (zh) * 2008-09-19 2013-05-08 国际商业机器公司 动画展现动态图序列之间的转变的方法和装置
CN101877138B (zh) * 2009-04-30 2014-01-15 国际商业机器公司 动态图的动画规划方法和装置
KR20110003947A (ko) * 2009-07-07 2011-01-13 삼성전자주식회사 데이터 처리 장치 및 방법
TWI470576B (zh) * 2010-02-01 2015-01-21 Ibm 動態圖片的動畫規劃方法與裝置
US9075873B2 (en) * 2011-03-11 2015-07-07 Microsoft Technology Licensing, Llc Generation of context-informative co-citation graphs
US8825710B2 (en) * 2011-05-26 2014-09-02 Planet Technologies Cloud computing method for dynamically scaling a process across physical machine boundaries
US8832582B2 (en) * 2012-03-15 2014-09-09 Microsoft Corporation Interactive control of the curvature of links
US10412117B2 (en) * 2014-08-05 2019-09-10 Dflabs S.P.A. Method and system for automated cybersecurity incident and artifact visualization and correlation for security operation centers and computer emergency response teams
CN112887112A (zh) * 2019-11-29 2021-06-01 中兴通讯股份有限公司 站点坐标规划方法、装置、设备和存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2646256A1 (fr) * 1989-04-24 1990-10-26 Digital Equipment Int Procede pour realiser des dessins a l'aide d'un ordinateur
DE69033865T2 (de) * 1989-12-29 2002-04-11 Inxight Software Inc Display hierarchischer dreidimensionaler Strukturen
US5333254A (en) * 1991-10-02 1994-07-26 Xerox Corporation Methods of centering nodes in a hierarchical display
CA2097232C (en) * 1993-05-28 1999-01-19 Phillip J. Beaudet Displaying partial graphs by expanding and collapsing nodes
JPH0876951A (ja) 1994-09-07 1996-03-22 Toshiba Corp ハイパーメディアのマップ表示システム及びマップ表示方法
US5619632A (en) * 1994-09-14 1997-04-08 Xerox Corporation Displaying node-link structure with region of greater spacings and peripheral branches
US5590250A (en) * 1994-09-14 1996-12-31 Xerox Corporation Layout of node-link structures in space with negative curvature
JP2993434B2 (ja) 1996-07-16 1999-12-20 日本電気株式会社 分散ハイパーメディアシステム
US5798769A (en) 1996-08-15 1998-08-25 Xerox Corporation Method and apparatus for maintaining links between graphic objects in a free-form graphics display system

Also Published As

Publication number Publication date
EP0977155A2 (de) 2000-02-02
US8232995B2 (en) 2012-07-31
EP0977155B1 (de) 2002-12-18
US20020085002A1 (en) 2002-07-04
JP2000067253A (ja) 2000-03-03
JP4864181B2 (ja) 2012-02-01
DE69904539D1 (de) 2003-01-30
EP0977155A3 (de) 2000-10-25

Similar Documents

Publication Publication Date Title
DE69904539T2 (de) Anordnung von Knotenverbindungstruktur in einem Raum mit negativer Kurvatur
EP0977154B1 (de) Wiedergeben von Knotenverbindungenstruktur mit Modifikation
DE69033865T2 (de) Display hierarchischer dreidimensionaler Strukturen
US6300957B1 (en) Mapping a node-link structure to a rendering space beginning from any node
DE69525696T2 (de) Wiedergeben von Knotenverbindungsstruktur mit einer Zone von grösseren Abständen und peripheren Zweigen
US6654761B2 (en) Controlling which part of data defining a node-link structure is in memory
DE69129712T2 (de) Arbeitsraumanzeigen
DE19960043B4 (de) Verfahren zum Navigieren in einer Baumstruktur
DE69403664T2 (de) Graphisches editorfachwerksystem
DE69231239T2 (de) Verfahren zur Bedienung eines Prozessors
US5555354A (en) Method and apparatus for navigation within three-dimensional information landscape
US7404147B2 (en) System and method for dynamic space management of a display space
DE69432698T2 (de) Verfahren und Vorrichtung zur Aufnahme von Anmerkungen auf einen Anzeigeschirm ohne Überlappung
DE69130198T2 (de) Bildanzeigesysteme
DE69524330T2 (de) Anordnung von Knotenverbindungstruktur in einem Raum mit negativer Krümmung
DE69230331T2 (de) Computervorrichtung und verfahren zur identifizierung von finite-elementen in der interaktiven modellierung
Herman et al. Tree visualisation and navigation clues for information visualisation
JP2000067086A (ja) ノ―ド―リンクデ―タ取得方法
US20010049695A1 (en) Visualization spreadsheet
EP0829822B1 (de) Verfahren zur Anzeige von geometrischen Objektoberflächen
DE60127801T2 (de) System und Methode zum Durchstöbern von knotenverbundenen Strukturen basierend auf einem geschätzten Interessegrad
Voisard Towards a toolbox for geographic user interfaces
Benson et al. Spatial and symbolic queries for 3D image data
Fekete The infovis toolkit
Calitz et al. Representation of hierarchical structures in 3D space

Legal Events

Date Code Title Description
8364 No opposition during term of opposition