DE69731434T2 - Verfahren und Gerät zur Modifizierung eines Node-Linkdiagramms - Google Patents

Verfahren und Gerät zur Modifizierung eines Node-Linkdiagramms Download PDF

Info

Publication number
DE69731434T2
DE69731434T2 DE69731434T DE69731434T DE69731434T2 DE 69731434 T2 DE69731434 T2 DE 69731434T2 DE 69731434 T DE69731434 T DE 69731434T DE 69731434 T DE69731434 T DE 69731434T DE 69731434 T2 DE69731434 T2 DE 69731434T2
Authority
DE
Germany
Prior art keywords
node
connection
attachment point
segment
determining
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
DE69731434T
Other languages
English (en)
Other versions
DE69731434D1 (de
Inventor
Patrick Chiu
Thomas P. Moran
William J. Vanmelle
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.)
Xerox Corp
Original Assignee
Xerox Corp
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 Xerox Corp filed Critical Xerox Corp
Application granted granted Critical
Publication of DE69731434D1 publication Critical patent/DE69731434D1/de
Publication of DE69731434T2 publication Critical patent/DE69731434T2/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)
  • Processing Or Creating Images (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • Die Erfindung betrifft Verfahren, die ein Konten-Verbindung-Diagramm modifizieren.
  • Computerbasierte Systeme wie schreibstiftbasierte Systeme und "elektronische Wandtafeln" (z. B. das LiveBoardTM, erhältlich von LiveWorks, einer Division der Xerox Corporation) stellen grafische Benutzerschnittstellen bereit, die auf dem Gebrauch einer Eingabeeinrichtung, wie z. B. einem Schreibstift, einem Griffel oder einer Cursor-Steuereinrichtung, basieren. Bei solchen Systemen wirkt das "Display" sowohl als ein Mittel zum Zeigen von Daten als auch als ein Eingabemedium. Grafische Objekte können mit Federstrichen, die mittels der Eingabeeinrichtung erzeugt werden, auf dem Display "gezeichnet" werden. Die grafischen Objekte können Wörter, Figuren oder irgend etwas darstellen, das angezeigt werden kann. Verschiedene Operationen können dann auf den grafischen Objekten unter Verwendung einer als Gesten bekannten Eingabetechnik durchgeführt werden. Gesten selbst sind einfach nur Federstriche, die als Anweisungen interpretiert werden. Manchmal werden solche Systeme eine Zeichenbetriebsart und eine Gestenbetriebsart haben, um zu unterscheiden, wenn ein Federstrich ein bleibendes grafisches Objekt erzeugt, oder wenn der Federstrich als eine Geste behandelt wird.
  • Beim Interagieren mit einem computerbasierten System, hat das Anhalten des gedachten Prozesses, um auf Operationen zu warten, um z. B. grafische Objekte zu gruppieren oder neu anzuordnen, eine sehr nachteilige Wirkung. Solche Stockungen verlangsamen meistens die kreativen Prozesse. Dies wirkt sich besonders auf die Synergie der Gruppeninteraktionen aus. Künstliche Verzögerungen können Teilnehmer veranlassen, "ihren Faden zu verlieren", was den möglichen Verlust von Ideen zur Folge hat. Es besteht daher ein allgemeiner Bedarf an Systemen mit grafischen Benutzerschnittstellen für Verfahren, die intuitive und schnelle Manipulation von grafischen Objekten bereitstellen.
  • Eine Anwendung von Systemen ist die Erzeugung und Manipulation von Knoten-Verbindung-Diagrammen. Zum Beispiel ermöglichen verschiedene Programme zum Projektmanagement, Erstellen von Flussdiagrammen und Zeichnen die Unterhaltung der Topologie einer Knoten-Verbindung-Struktur, wenn die Knoten bewegt werden. Bekannte Programme arbeiten typischerweise mit Knoten und Verbindungen, die von einem bekannten vordeklarierten Typ sind. Schwierigkeiten treten jedoch auf, wenn das Diagramm eine freie Form hat, d. h., wenn die Knoten und Verbindungen willkürliche Formen aufweisen.
  • Eine derartige Manipulation einer Freiform-Knoten-Verbindung-Struktur wird in EP-A-0 667 567 beschrieben. EP-A-0 667 567 offenbart Diagramme, d. h. Knoten-Verbindung-Strukturen, die bleibende Verbindungen besitzen, die Formmerkmale beibehalten, wenn Knoten bewegt werden. Verbindungen werden unter Verwendung von linearen, geometrischen Transformationen neu geformt, die die charakteristische Form einer Verbindung bewahren, während "Strecken" es erlaubt, die Verbindung an die neuen Positionen der Knoten, die sie verbindet, anzupassen. Endpunkte der Verbindungen können bewegt werden, wenn es die Bewegung des Knotens verlangt.
  • Dokument WO 96/10231 offenbart ein Computerprogramm zum Erzeugen von Grafikdiagrammen, die Formen umfassen und Linien, die die Formen verbinden, wobei, wenn Formen bewegt werden, die Linie, die die Formen verbindet, intelligent neu gezogen wird, sodass der Eingang in die nächste Form logisch bleibt.
  • "Layout Algorithm for Computer Network Management Graphics", IBM Technical Disclosure Bulletin, Vol. 30, Nr. 12, 1. Mai 1998, Seiten 268–277, XP00018844, offenbart die Verwendung eines Algorithmusses zum Erzeugen von verbesserten Grafikdarstellungen von Computernetzwerken, um Linienkreuzungen zu minimieren.
  • Die Erfindung wendet sich an Probleme, die beim automatischen Neupositionieren und Neuformen von Verbindungen auftreten. Wenn z. B. eine einfache geometrische Transformation, z. B. eine Skalierung, auf einer Verbindung durchgeführt wird und die Verbindung die Form einer einzelnen Periode einer Sinuskurve hat, können die "Höcker" der Kurve stark erweitert werden, was eine unerwünschte Verzerrung der Form der Verbindung erzeugt. Außerdem, wenn eine Verbindung einfach um einen Punkt gedreht wird, an dem sie einen Knoten berührt oder daran haftet, kann die Verbindung nach dem Drehen ein kontraintuitives Aussehen haben. Diese und andere automatische Neupositionierungs- und Neuformungstechniken können auch eine Verbindung hinterlassen, die so positioniert oder geformt ist, dass sie einen Knoten schneidet. All diese Probleme können manuelle Korrektur erfordern, was das automatische Neupositionieren und Neuformen weniger effizient macht.
  • Die Erfindung stellt Verfahren bereit, die diese Probleme mildern. Einige der Verfahren transformieren Segmente einer Verbindung. Andere schnippen eine Verbindung um eine Achse, und andere erfassen und beseitigen Verbindung-Knoten-Kreuzungen.
  • Die Verfahren sind vorteilhaft, weil sie automatisch ein Knoten-Verbindung-Diagramm unterhalten können, in dem ein Knoten oder ein anderes Merkmal bewegt oder sonstwie modifi ziert wird, und die Verfahren tun dies, ohne die Topologie der Knoten-Verbindung-Struktur, die das Diagramm darstellt, zu modifizieren. Als Folge sind weniger manuelle Korrekturen erforderlich, um ein annehmbares Knoten-Verbindung-Diagramm zu erzeugen.
  • Bei einem Aspekt der Erfindung wird ein Verfahren, wie in Anspruch 1 beansprucht, zum Modifizieren eines Knoten-Verbindung-Diagramms bereitgestellt, wobei das Knoten-Verbindung-Diagramm einen Knoten (303; 603) und eine Verbindung (301; 801; 1107; 1603; 1803) aufweist, die an einem Befestigungspunkt an dem Knoten befestigt ist, und die Verbindung durch einen Satz von Segmenten dargestellt wird, wobei das Verfahren umfasst:
    • (a) Empfangen einer Anforderung, dass das Knoten-Verbindung-Diagramm zu modifizieren ist;
    • (b) als Reaktion, Modifizieren des Knoten-Verbindung-Diagramms durch Modifizieren der Verbindung, wobei die Modifikation eines oder beides des Folgenden umfasst: (b1) Transformieren jedes von zwei oder mehr Segmenten (831) der Verbindung (801) und (b2) Schnippen der Verbindung um eine oder mehr Achsen (1005; 1006) zwischen einer ersten Position und einer zweiten Position, gekennzeichnet durch (b3) Bestimmen, ob die modifizierte Verbindung einen Knoten kreuzt, und, wenn die modifizierte Verbindung (1201; 1803; 2102) einen Knoten (1103, 1105, 1802) kreuzt, weiter Modifizieren der Verbindung, um die Kreuzung mit dem Knoten zu beseitigen, wobei das Beseitigen der Kreuzung mit dem Knoten das Schnippen des Befestigungspunktes oder das Beschneiden der Verbindung oder beides umfasst.
  • Bei einem anderen Aspekt der Erfindung wird ein System, wie in Anspruch 10 beansprucht, bereitgestellt, nämlich ein System, das eingerichtet ist, ein Verfahren wie in einem der Ansprüche 1 bis 9 beansprucht, durchzuführen, wobei das System umfasst:
    eine Eingabeeinrichtung (105) zum Bereitstellen von Anforderungen für Modifikationen in Knoten-Verbindung-Diagrammen;
    eine Verarbeitungseinrichtung (102) zum Reagieren auf die Anforderungen durch Modifizieren von Knoten-Verbindung-Diagrammen;
    wobei die Verarbeitungseinrchtung als Reaktion auf eine Anforderung zum Modifizieren eines Knoten-Verbindung-Diagramms mit einem Knoten und einer Verbindung (301; 801; 1107; 1603; 1803), die an einem Befestigungspunkt an dem Knoten befestigt ist, wobei die Verbindung durch einen Satz von Segmenten dargestellt wird, das Knoten-Verbindung-Dia gramm durch Modifizieren der Verbindung modifiziert, wobei die Verarbeitungseinrichtung beim Modifizieren der Verbindung eines oder beides des Folgenden durchführt:
    (A) Transformieren jedes von zwei oder mehr Segmenten (831) der Verbindung (801) und (B) Schnippen der Verbindung um eine oder mehr Achsen (1005; 1006) zwischen einer ersten Position und einer zweiten Position, gekennzeichnet durch (C) Bestimmen, ob die modifizierte Verbindung einen Knoten kreuzt, und, wenn die anfänglich modifizierte Verbindung (1201; 1803; 2102) einen Knoten (1103, 1105; 1802) kreuzt, weiter Modifizieren der Verbindung, um die Kreuzung mit dem Knoten zu beseitigen, wobei das Beseitigen der Kreuzung mit dem Knoten das Schnippen des Befestigungspunktes oder das Beschneiden der Verbindung oder beides umfasst.
  • Die Eingabeeinrichtung kann benutzt werden, um Freiform-Grafikobjekte auf einer Arbeitsfläche zu erzeugen und zu bewegen, deren Inhalt von der Anzeigeeinrichtung angezeigt wird. Die Verarbeitungseinrichtung kann grafische Objekte auf der Arbeitsfläche als ein Knoten-Verbindung-Diagramm interpretieren. Beim Transformieren einer Verbindung kann die Verarbeitungseinrichtung verbindungscharakteristische Daten erzeugen, eine Verbindung um eine Achse schnippen und jedes Segment der Verbindung basierend auf den verbindungscharakteristischen Daten, einer ursprünglichen Stelle des bewegten Knotens und einer Zielstelle des bewegten Knotens kurventransformieren. Beim Erfassen und Beseitigen einer Kreuzung kann die Verarbeitungseinrichtung einen Kreuzungspunkt erfassen und die Verbindung so modifizieren, dass sie an dem gekreuzten Knoten an dem Kreuzungspunkt haftet.
  • Die Erfindung kann in einer Programmspeichervorrichtung implementiert werden, die von einer Maschine lesbar ist, und die greifbar ein Programm von durch die Maschine ausführbaren Anweisungen verkörpert, um die hierin beschriebenen Verfahren durchzuführen.
  • In einem computergesteuerten Anzeigesystem, das imstande ist, Freiform-Grafikeingabe zu unterstützen, werden Verfahren zum Unterhalten der Topologie einer knotenartigen Struktur, wenn Knoten bewegt werden, offenbart. Eine Verbindung wird abhängig davon neu geformt werden, wohin ein Knoten relativ zu dem Knoten, mit dem er verbunden ist, bewegt wird. Sowohl die Verbindung als auch der Knoten haben eine beliebige Form. Im einfachen Fall wird sich eine Verbindung strecken oder zusammenziehen, wenn die Verbindung eine gerade Linie ist und die Bewegungsrichtung entlang dieser Line verläuft. Verbindungen und die Bewegungsrichtung von Knoten sind jedoch nicht auf gerade Linien begrenzt. So werden verschiedene Verfahren zum Bewahren der knotenartigen Strukturtopologie benötigt, wenn ein Knoten bewegt wird. Gewöhnlich geschieht das Neuformen der Verbindung automatisch, wenn ein Knoten bewegt wird. Die Absicht bezüglich des "automatischen" Verbindungs-Neuformens ist, die Grundform-Merkmale der Verbindung zu bewahren und unerwünschte Artefakte zu vermeiden, wenn ein Knoten bewegt wird (z. B. eine Verbindung, die einen Knoten kreuzt). Verbindungs-Neuformen wird durch eine Kombination aus Kurventransformation, Verbindungsschnippen, Verbindungsbefestigungspunktschnippen und Verbindungsbeschneidung zustande gebracht.
  • Kurventransformation einer Verbindung ist mehr als ein einfaches Skalieren. Stattdessen besteht eine Verbindung aus einer Vielzahl von Segmenten, und die Verschiebung aus einer Knotenbewegungsoperation wird aufgeteilt (entsprechend einem bestimmten Transformationsfaktor basiert auf jedem Segment) und den Segmenten hinzugefügt. Schnippen der Verbindungsform bewahrt Formmerkmale und ist erwünscht, da ein Knoten auf einer Arbeitsfläche relativ zu einem stationären Knoten überallhin bewegt werden kann. Die Punkte, an denen Verbindungen einen Knoten "berühren", werden Befestigungspunkte genannt. Die Befestigungspunkte, an denen die Verbindung an dem stationären Knoten befestigt ist, werden benutzt, um einen Ursprung eines lokalen Koordinatensystems zum Durchführen des Verbindungs-Neuformens zu definieren. Abhängig davon, wohin der Knoten bewegt wird, kann die Verbindungsform um eine oder beide Achsen des Koordinatensystems geschnippt und das geschnippte Verbindungsbild zum Neuformen benutzt werden.
  • Das Vermeiden unerwünschter Artefakte (d. h. eine Verbindung, die einen Knoten kreuzt) wird durch Schnippen der Befestigungspunkte der Verbindung an den Knoten oder durch Umleiten der Verbindung bewerkstelligt. Das Schnippen eines Befestigungspunktes wird nur aufgerufen, wenn der Knoten das Schnippen von Befestigungspunkten zulässt. Wenn das Schnippen des Befestigungspunktes die kreuzende Verbindung nicht korrigiert, kann die Verbindung an dem Punkt beschnitten werden, wo die Verbindung den Knoten kreuzt.
  • Wenn Schnippen des Befestigungspunktes nicht erlaubt ist, kann Verbindungs-Umleiten stattfinden. Beim Verbindungs-Umleiten wird die Verbindung neu gezogen, um den Umrissen der festen und bewegten Knoten zu folgen, und die Umrisse werden durch einen bewahrten Abschnitt der ursprünglichen kreuzenden Verbindung verbunden.
  • Schließlich kann eine kreuzende Verbindung korrigiert werden, indem ein Benutzer einen Befestigungspunkt eines Knotens auswählt und ihn manuell zu einer neuen, nicht kreuzenden Stelle auf dem Knoten bewegt.
  • Die vorliegende Erfindung ist zur Verwendung auf einem computergesteuerten Anzeigesys tem implementiert worden, das eine grafische Benutzerschnittstelle hat und eine Eingabeeinrichtung benutzt, die einer Person erlaubt, grafische Objekte zur Eingabe zu zeichnen. Beispiele von solchen Systemen umfassen schreibstiftbasierte Systeme, Systeme die "Mal"-Programme benutzen, elektronische Wandtafeln oder elektronische Schreibtischoberflächen.
  • Die Erfindung wird nun als Beispiel mit Verweis auf die begleitenden Zeichnungen beschrieben. Inhalt der Zeichnungen:
  • 1 ist ein Blockschaltbild eines computerbasierten Systems.
  • 2 ist eine Darstellung einer grafischen Basisbenutzerschnittstelle, die auf der Anzeige angezeigt werden kann und durch die berührungsempfindliche Platte von 1 angesteuert wird.
  • 3 ist eine Darstellung eines Knotens, der bewegt und entsprechend verbindungsumgestaltet wird.
  • 4 ist ein Flussdiagramm, das die Verbindungs-Umgestaltung zusammenfasst.
  • 5 veranschaulicht die Raumkoordinaten der Verbindungs-Umgestaltung.
  • 6 und 7 veranschaulichen ein unerwünschtes Ergebnis einer einfachen geometrischen Skalierung eines Beispiels einer Verbindung.
  • 8 ist eine Veranschaulichung von Kurvenprobenpunkten und Segmenten wie in der Darstellung einer Kurve gefunden.
  • 9 ist ein Flussdiagramm, das Schritte zur Kurventransformation veranschaulicht.
  • 10 ist eine Veranschaulichung der Verbindung von 3, wie um verschiedene Achsen geschnippt, was durchgeführt werden kann, wenn ein Knoten aus seinem ursprünglichen Quadranten bewegt wird.
  • 1112 veranschaulichen das Bewegen eines Knotens, sodass er eine umgeformte Verbindung veranlasst, einen Knoten zu kreuzen.
  • 13 ist eine Veranschaulichung des Schnippens von Befestigungspunkten auf einem Knoten nach dem Bewegen des Knotens von 11.
  • 14 ist eine Veranschaulichung des Auswählens eines geschnippten Befestigungspunkts an verschiedenen Punkten auf einem asymmetrisch geformten Knoten.
  • 15 ist eine Veranschaulichung des Auswählens eines geschnippten Befestigungspunkts, wenn der Knoten an mehrfachen Punkten gekreuzt wird.
  • 16 und 17 sind eine Veranschaulichung einer Variation des Schnippens eines Befestigungspunktes durch Bewegen eines Befestigungspunktes über die Kante eines Knotens.
  • 18 und 19 sind eine Veranschaulichung davon, wie das Bewegen eines Knotens eine Verbindung veranlassen kann, einen Knoten zu kreuzen, und das Schnippen des Befestigungspunktes die Knotenkreuzung nicht korrigiert.
  • 20 ist eine Veranschaulichung von Verbindungsbeschneidung.
  • 21 ist eine Veranschaulichung von Verbindungsumleitung, um kreuzende Knoten zu korrigieren.
  • 22 ist ein Flussdiagramm, das den Schritt zum Umleiten einer Verbindung veranschaulicht.
  • 2326 veranschaulichen die in 22 durchgeführten Schritte des Umleitens einer Verbindung.
  • 27 ist ein Flussdiagramm, das die Schritte zum Erzeugen des Umrisses einer Knotengrenze veranschaulicht.
  • 2630 veranschaulichen die Durchführung der verschiedenen Schritte von 23 zum Erzeugen des Umrisses einer Knotengrenze.
  • Die vorliegende Erfindung wendet sich an ein Problem, das auftreten kann, wenn in einem Freiformgrafik-basierten Computersystem gearbeitet wird, das zum Manipulieren von Knoten-Verbindung-Diagrammen imstande ist. Ein Knoten-Verbindung-Diagramm kann ein Flussdiagramm, einen Organisationsplan, ein Zustandsdiagramm, Projektmanagementpläne usw. umfassen. Es ist oft erwünscht, in der Lage zu sein, Knoten in einem Knoten-Verbindung-Diagramm umherzuwegen, während die Verbindungen bewahrt werden. Da außerdem das Knoten-Verbindung-Diagramm in einer formlosen Weise erzeugt werden kann, sodass Knoten und Verbindungen beliebige Formen haben, hat man festgestellt, dass es wünschenswert ist, dass die Verbindungen ihre ursprünglichen Formmerkmale beibehalten. Die vorliegende Erfindung ermöglicht somit einem Benutzer, ein Knoten-Verbindung-Diagramm durch Bewegen von Knoten zu modifizieren, ohne sich um das Verändern der Verbindungen kümmern zu müssen.
  • Die folgenden Begriffe werden in dieser Beschreibung benutzt und haben die folgenden Bedeutungen:
    Grafikobjekt: Jedes angezeigte Objekt im 2D-Raum.
    Kurve: Ein grafisches Objekt, das durch den Benutzer von Hand oder mit anderen Mitteln, z. B. einer Geste (z. B. ein Auswahlrechteck, das aus einer Auswahlgeste hervorgeht) erzeugt wird.
    Federstrich: Eine Aktion mit einem Schreibstift, die ein Tintenstrich oder eine Geste wird.
    Tintenstrich: Eine Kurve, die dauerhaft ist.
    Geste: Eine mit einem Federstrich erzeugte Kurve, die kurzlebig ist und als eine Aktion interpretiert werden kann.
    Auswahl: Ein Satz grafischer Objekte, die als ausgewählt markiert sind.
    Knoten: Ein grafisches Objekt oder Gruppe von grafischen Objekten innerhalb eines eingegrenzten Bereichs. Ein solcher eingegrenzter Bereich wird typisch eine sichtbare Grenze haben.
    Verbindung: Ein Tintenstrich, der einen oder zwei Knoten berührt oder daran befestigt ist. Die Verbindung kann als Knoten "verbindend" beschrieben werden. Ein Knoten kann auch mit sich selbst verbunden sein.
    Knoten-Verbindung-Diagramm: Ein Diagramm, das grafische Objekte enthält, die in Knoten und Verbindungen unterschieden werden können, wobei jede Verbindung zwei Knoten verbindet oder einen Knoten mit sich selbst verbindet.
    Kreuzen: Eine Verbindung "kreuzt" einen Knoten, wenn die Verbindung über das oder die Objekte des Knotens verläuft. Zum Beispiel kann eine Verbindung, die einen Knoten kreuzt, ein Ende haben, das den Knoten berührt, aber anstatt von dem Ende weg von dem Knoten zu verlaufen, kann die Verbindung von dem Ende über den Knoten verlaufen.
  • Ein computerbasiertes System, das in der vorliegenden Erfindung benutzt werden kann, wird mit Verweis auf 1 veranschaulicht. Auf 1 verweisend besteht das computerbasierte System aus einer Vielzahl von über einen Bus 101 verbundenen Komponenten. Der Bus 101 ist hier vereinfacht dargestellt, aber jede geeignete Busarchitektur könnte benutzt werden, um die vorliegende Erfindung zu implementieren. Der Bus 101 kann aus einer Vielzahl von parallelen Bussen (z. B. Adressen-, Daten- und Status-Bussen) sowie einer Hierarchie von Bussen (z. B, ein Prozessorbus, ein lokaler Bus und ein E/A-Bus) bestehen. In jedem Fall besteht das Computersystem weiter aus einem Prozessor 102 zum Ausführen von Anweisungen, die von einem internen Speicher 103 über den Bus 101 bereitgestellt werden (man beachte, das der interne Speicher 103 typisch eine Kombination aus Direktzugriffs- oder Nurlese-Speichern ist). Wenn in Betrieb, werden Programmanweisungen zum Durchführen der verschiedenen hierin beschriebenen Funktionskomponenten im internen Speicher 103 gespeichert. Der Prozessor 102 und der interne Speicher 103 können einzelne Komponenten oder ein einziger integrierter Schaltkreis sein. Der Prozessor 102 und der interne Speicher 103 umfassen Schaltkreise, Software oder andere Mittel zur Durchführung der verschiedenen hierin beschriebenen Verarbeitungsfunktionen. Ebenfalls mit dem Bus 101 verbunden ist ein externer Speicher 107. Der externe Speicher 107 umfasst typischerweise ein Speichermedium mit hoher Kapazität, z. B. einen magnetischen oder optischen Plattenspeicher.
  • Ebenfalls mit dem Bus 101 verbunden sind eine Anzeige 104 und eine Zeigeeinrichtung 105. In einer Ausführung ist die Zeigeeinrichtung 105 eine schreibstiftgetriebene, berührungsempfindliche Platte, die mit der Anzeige 104 zu einer Berührungsschirmanzeige integriert ist. Solche Berührungsschirmanzeigen sind in der Technik wohl bekannt und werden in solchen Systemen als schreibstiftbasierte Systeme und für elektronische Wandtafelsysteme benutzt. Die Zeigeeinrichtung 105 und die Anzeige 104 müssen jedoch nicht integriert sein, sodass die Zeigeeinrichtung 105 auch ein Griffel, eine Maus, ein Trackball oder eine andere Cursor-Steuereinrichtung sein kann.
  • 2 veranschaulicht eine bestimmte Implementierung einer grafischen Benutzerschnittstelle. Auf 2 verweisend wird die grafische Benutzerschnittstelle auf der Anzeige 104 angezeigt, und mit ihr wird über eine Berührungsplatte 105 interagiert. Die grafische Benutzerschnittstelle verwendet eine Arbeitsfläche und kann eine Vielzahl von zugänglichen Funktionen 210, wie gezeigt, einsetzen. Die Arbeitsfläche 202 ist, wo ein Benutzer verschiedene Kurven zeichnen kann, und wo andere grafische Objekte angezeigt werden. Die zugänglichen Funktionen 201 befinden sich in dem Tastenbereich 203 der Anzeige. Die Funktionen 201 können Operationen zum Editieren grafischer Objekte (Erzeugen, Löschen, Bewegen, Schrumpfen usw.) oder Ändern der Betriebsart der Berührungsplatte 103 (z. B. Umschalten vom Zeichen- und Gestenmodus) umfassen.
  • Auf diese Funktionen kann alternativ durch Pull-Down-Menüs zugegriffen werden, die gewöhnlich in Windows-orientierten Anwendungen zu finden sind. Diese Funktionen sind in ihrer Bestimmung optional, wobei ihre Hauptaufgaben sind, Operationen zu definieren, die im Betrieb des Systems inhärent sind. Diese Funktionen können die gleichen Funktionen ausführen, durch Gesten aufgerufen werden.
  • Eine Ausführung der vorliegenden Erfindung ist auf einem schreibstiftbasierten System mit einer grafischen Benutzerschnittstelle (GUI) implementiert. Eine solche GUI wird typischerweise Operationen wie "Antippen" zum Auswählen/Abwählen eines grafischen Objekts oder "Doppelantippen" zum Aufrufen einer Operation unterstützen, die mit dem grafischen Objekt, das angetippt wird, verbunden sein kann. Sobald ein Objekt ausgewählt ist, kann es gezogen und an einer gewünschten Stelle in dem Arbeitsraum abgesetzt werden. Wie unten ausführlicher beschrieben wird, wird eine solche Antippen-Geste ein Umreißen des gewählten grafischen Objeks, z. B. eines Knotens in einem Knoten-Verbindung-Diagramm, bewirken, das zu umreißen und in einer sichtbar bestimmten Weise anzuzeigen ist. Dieses Umreißen liefert dem Benutzer eine Rückmeldung, dass das grafische Objekt ausgewählt wurde.
  • Der Arbeitsraum einer Ausführung erlaubt grafische Objekte, die "freihändig" gemacht werden. Knoten und Verbindungen können folglich eine beliebige Form haben. Dies entspricht der Art und Weise, wie eine Wandtafel benutzt wird.
  • Eine Ausführung der vorliegenden Erfindung ist unter Verwendung von Softwareprogrammen in der C++ Programmiersprache zur Verwendung auf einem schreibstiftbasierten System, z. B. dem LiveBoard, implementiert worden, das unter der Steuerung eines geeigneten Wandtafel-Emulationsprogramms läuft. Solche Softwareprogramme können auf einem geeigneten Speichermedium, z. B. Magnetkassetten oder CD-ROMs, gespeichert werden.
  • Knoten-Verbindung-Diagramme haben viele Verwendungen. Sie können benutzt werden, um einen Prozessfluss zu beschreiben, oder um Beziehungen zwischen gruppierten Elementen zu zeigen. Die Organisation und Beziehung zwischen Knoten und Verbindungen wird als die "Topologie" des Knoten-Verbindung-Diagramms bezeichnet. Wenn die Raumposition von Knoten manipuliert wird, ist es erwünscht, dass die Topologie bewahrt wird.
  • Ein Knoten in einem Knoten-Verbindung-Diagramm kann eine beliebige Form haben und kann eine Gruppe von verwandten grafischen Objekten darstellen. Diese grafischen Objekte können typischerweise Buchstaben, Wörter oder andere informationsbefördernde Symbole darstellen. Ein Knoten kann durch das Einkreisen von grafischen Objekten mit einem Tintenstrich oder durch irgendein Gruppierungsmittel dargestellt werden. Ein Knoten kann eine sichtbare Grenze haben, die die räunlichen Grenzen des Knotens anzeigt. Ein Knoten kann mehrfache Verbindungen zu anderen Knoten haben. Die Wahl eines Knotens kann auch die Wahl seiner Verbindungen bewirken.
  • Verbindungen sind Tintenstriche, die benutzt werden, um eine sichtbare Verbindung zwischen einem oder mehreren Knoten bereitzustellen. Verbindungen können ebenfalls eine beliebige Form haben. Das Bereitstellen von Verbindungen zwischen Knoten ist hilfreich, besonders wenn die Knoten umpositioniert werden. Das Vermögen, die sichtbare Verbindung zwischen den Knoten zu bewahren, selbst wenn sie bewegt werden, hilft, einen ungehinderten Gebrauch des grafikbasierten Systems bereitzustellen.
  • Eine Verbindung wird erzeugt, indem einfach eine Kurve gezeichnet wird, die wenigstens einen Knoten "berührt". Mit Berühren eines Knotens ist gemeint, dass ein passendes Kriterium für Berührung oder Nähe erfüllt ist. Wenn z. B. ein Tintenstrich einen Endpunkt hat und ein Knoten eine Grenze hat, könnte das Kriterium verlangen, das der Tintenendpunkt innerhalb einer vorbestimmten Entfernung der Knotengrenze liegt. Der Punkt, an dem eine Verbindung einen Knoten "berührt", wird ein Befestigungspunkt genannt. Verbindungen sind mit wenigstens einem Knoten (d. h. einendig) und höchstens zwei Knoten verbunden.
  • Eine Ausführung kann mehrfache Knoten und Verbindungen handhaben, aber die Grundprobleme, die aus Verbindungen entstehen, können aus dem in 3 gezeigten Knoten-Verbindung-Diagramm verstanden werden. 3 zeigt eine einzelne Verbindung L1 301 mit einem Knoten an jedem Ende, einen stationären Knoten N 302 und einen Knoten N1 303, den der Benutzer manuell zu einer als N2 304 bezeichneten Position bewegt. Als Folge dieser Bewegung wird die Verbindung L1 302 umgeformt, um die als L2 305 gezeigte Verbindung zu sein. Die Befestigungspunkte der Verbindung an den Knoten werden als A 306, A1 307 und A2 308 gezeigt.
  • 4 ist ein Flussdiagramm, das das Verbindungs-Umformen überwacht, wie es in einer Ausführung der vorliegenden Erfindung durchgeführt werden kann. Auf 4 verweisend bewegt ein Benutzer zuerst einen Knoten in einem Knoten-Verbindung-Diagramm, Schritt 401. Dies kann durch eine einfache Ziehen- und Ablegen-Operation oder durch jede von der zugrunde liegenden grafischen Benutzerschnittstelle unterstützte Operation durchgeführt werden. Der erste Schritt beim Umformen der Knoten und Verbindungen ist es, den Zielquadranten zu definieren, Schritt 402. Eine Feststellung wird getroffen, ob der Zielquadrant der gleiche ist, Schritt 403. Das Bestimmen des Zielquadranten wird angeben, ob Schnippen der ursprünglichen Verbindung nötig ist. Wenn der Zielquadrant der gleiche ist, findet Kurventransformation bezüglich der ursprünglichen Verbindung statt, Schritt 404. Wenn der Zielquadrant nicht der gleiche ist, wird die ursprüngliche Verbindung um die betreffenden Achsen des Zielquadranten geschnippt, Schritt 405. Kurventransformation für die Verbindung wird dann bezüglich der geschnippten Verbindung durchgeführt, Schritt 406.
  • Nachdem die Verbindung umgeformt wurde, wird festgestellt, ob irgendeiner der Knoten von der umgeformten Verbindung gekreuzt wird, Schritt 407. Wenn keine Verbindungen einen Knoten kreuzen, ist das Umformen bendet, Schritt 413. Wenn Verbindungen einen Kno ten kreuzen, wird festgestellt, ob Befestigungspunkte der Knoten bewegt werden können, Schritt 408. Wenn nicht möglich, kann Verbindungs-Umleiten durchgeführt werden, Schritt 409. Andernfalls werden die Befestigungspunkte der Knoten umgeleitet, Schritt 410. Dann wird geprüft, ob noch eine Kreuzung besteht, Schritt 411. Wenn keine Knoten gekreuzt werden, nachdem die Befestigungspunkte geschnippt sind, ist das Verbindungs-Umformen beendet, Schritt 413. Wenn ein Knoten von einer Verbindung gekreuzt bleibt, wird die Verbindung an dem Punkt, in dem ein Knoten gekreuzt wird, beschnitten, Schritt 412. Nach Vollendung des Beschneidens ist das Umformen der Verbindung zu Ende, Schritt 413.
  • Man sollte zur Kenntnis nehmen, dass in einer Ausführung Befestigungspunkte durch den Benutzer ausgewählt und bewegt werden können. Dies ist erforderlich, da der Benutzer wünschen mag, die Beziehung zwischen den Knoten zu verändern. Ferner kann der Benutzer dies zu tun wünschen, wenn er mit den Ergebnissen einer automatischen Verbindungs-Umformung nicht zufrieden ist.
  • Wie oben erwähnt, ist eine Verbindung ein Beispiel einer Kurve. Kurventransformation kann man sich als Strecken oder Zusammenziehen einer Verbindung vorstellen, sodass sie ihre Formmerkmale beibehält. Zur Kurventransformation wird die Verbindung getrennt betrachtet, wie in 5 gezeigt. Verbindung L1 301 geht von A 306 nach A1 307. Es ist erwünscht, dass die Verbindung L2 305, die von A 306 nach A2 308 geht, die gleichen Formmerkmale wie L1 301 hat. Man beachte, dass in dieser Darstellung der Befestigungspunkt A 306 des festen Knotens am Ursprung eines zweidimensionalen Koordinatensystems platziert ist. Somit befinden sich der Befestigungspunkt A1 307 an Koordinaten (x1 501, y1 502) und der Befestigungspunkt A2 308 an Koordinaten (x2 503, y2 504). Das Ziel ist, den Rest der Kurve so zu transformieren, dass die Formmerkmale von L1 301 bewahrt werden.
  • Eine Möglichkeit des Durchführens einer Transformation ist eine einfacahe geometrische Transformation (z. B. Skalierung). Man hat jedoch festgestellt, dass dies unerwünschte Ergebnisse in bestimmten Situationen verursachen kann. Ein solcher Fall wird in 6 und 7 veranschaulicht. Auf 6 verweisend ist eine Verbindung 601 in der Form einer einzelnen Periode einer Sinuskurve an Knoten 602 und 603 befestigt. Eine einfache geometrische Transformation ist typischerweise durch das Folgende gegeben: Die X-Y-Koordinaten des ursprünglichen Befestigungspunktes sind <x1, x2> und <x2, y2> für den Befestigungspunkt, wenn bewegt. Um die Verbindung zu transformieren, wird jeder Punkt P<x, y> auf der Verbindung nach P'<x', y'> bewegt, wo x' = x*x2/x1 und y' = y*y2/y1. Man beachte, dass in einigen Fällen der Nenner klein oder sogar null sein kann. Das Ergebnis wird in 7 veranschaulicht. Auf 7 verweisend wird als ein Ergebnis des Bewegens des Knotens 603 die Verbindung 701 so transformiert, dass "Höcker" 702 und 703 der Kurve stark erweitert sind. Dies ist das Ergebnis, wenn der Nenner eine kleine Bruchzahl ist. Ein anderer Weg zum Umformen der Verbindung könnte daher benutzt werden, um dieses Problem zu lösen.
  • Um besser zu verstehen, wie eine Kurventransformation vonstatten geht, muss man verstehen, wie eine Kurve dargestellt wird. Die einfachste Weise, eine Kurve darzustellen, ist durch ihren Satz von Probenpunkten. Diese sind durch ihre Eingabefolge natürlich geordnet. Einige Systeme stellen eine Kurve direkt durch eine Bitmap oder eine Bitmap dar, die durch Anpassen einer Kurve (Spline) durch die Probenpunkte erzeugt wird. Bei der gegenwärtig bevorzugten Ausführung wird eine Kurve durch ihren Startpunkt und ihren Satz von Segmenten dargestellt, wo ein Segment der durch zwei aufeinanderfolgende Pobenpunkte bestimmte Vektor <dx, dy> ist. Dies wird in 8 veranschaulicht. Auf 8 verweisend erscheint eine Kurve 801 auf einer Arbeitsfläche. Die Kurve 801 wird durch die Abtastungen erfasst, die an Punkten 810820 stattfanden. Der Abstand zwischen Probenpunkten wird ein Segment genannt. Zum Beispiel ist ein Segment 831 zwischen Probenpunkten 810 und 811 definiert, wo der Probenpunkt 811 der Endprobenpunkt ist. Zur Bequemlichkeit wird die Kurve normalisiert, indem sie so ausgerichtet wird, dass der feste Befestigungspunkt der Startpunkt ist und der bewegte Befestigungspunkt der Endpunkt der Kurve ist.
  • Das Kurventransformationsverfahren der veranschaulichten Ausführungen nimmt die Differenz zwischen den Vorher- und Nachher-Befestigungspunkten und verteilt diese auf die Segmente der Kurve. Mit anderen Worten, die Punkte, die die Verbindung ausmachen, werden zu neuen Stellen so transformiert, dass die Form der ursrünglichen Verbindung beibehalten wird. Das Verfahren wird mit Verweis auf das Flussdiagramm von 9 und die in 5 beschriebenen Koordinatenpunkte beschrieben. Auf 9 verweisend ist der Schritt, Gesamt-X- und Y-Verschiebungen zu berechnen, Schritt 901. (x1, y1) und (x2, y2) seien die Vorher- bzw. Nachher-Position des bewegten Befestigungspunktes der Verbindung. Dann: xDisp = x2 – x1, yDisp = y2 – y1.
  • Die restlichen Schritte werden dann für jedes Segment der Verbindung durchgeführt. Für das i-te Segment <dx[i], dy[i]> wird die Transformation wie in Schritten 902904 beschrieben berechnet, die in einem neuen i-ten Segment <Tdx[i], Tdy[i]> resultiert. Dies erfolgt durch die folgende Berechnung:
  • Zuerst werden die x- und y-Bogenlängen der Kurve berechnet, Schritt 902: x-arclength = Σ|dx[i]|, y-arclength = Σ|dy[i]|,wo |x| die Länge oder den Absolutwert von x bezeichnet.
  • Dann werden die Transformationsfaktoren cx[i] und cy[i] basierend auf den x- und y-Längen des i-ten Segments berechnet, Schritt 903: cx[i] = |dx[i]|/(x-arclength), cy[i] = |dy[i]|/(y-arclength).
  • Nun sind die Beitragungen der Verschiebung, die zu dem i-ten Segment zu addieren sind, gegeben durch cx[i]*xDisp und cy[i]*yDisp, sodass das neue i-te Segment berechnet wird, Schritt 904: Tdx[i] = cx[i]*xDisp + dx[i], Tdy[i] = cy[i]*yDisp + dy[i].
  • Man beachte, dass in den Beispielen in 3 und 5 die Befestigungspunkte A1 und A2 in dem gleichen Quadranten des Koordinatensystems definiert sind, wo der Befestigungspunkt A der Ursprung ist. In einer Ausführung kann, wenn A2 in einem anderen Quadranten als A1 liegt, die Verbindungsform um die x-Achse, die y-Achse oder beide geschnippt (umgekehrt gespiegelt) werden. Dieses Schnippen ist ein erwünschtes sichtbares Merkmal, da es das ist, was der Benutzer eigentlich erwartet. 10 zeigt diese drei Fälle des Schnippens. Würde A1 vom Quadranten 1001 zum Quadranten 1002 bewegt werden, würde das Ergebnis A4 1007 sein. Das Schnippen würde um die y-Achse 1006 stattfinden. Würde A1 vom Quadranten 1001 zum Quadranten 1003 bewegt werden, würde das Ergebnis A5 1008 sein. Das Schnippen würde um die y-Achse 1006 und die x-Achse 1005 stattfinden. Würde schließlich A1 zum Quadranten 1004 bewegt werden, würde das Ergebnis A3 1009 sein. Das Schnippen würde um die x-Achse 1005 stattfinden.
  • Wenn eine Bewegung aus dem Quadranten stattfindet, findet zuerst das Schnippen der Verbindung zu dem Zielquadranten statt. Das Schnippen der Verbindungsform wird durch eine einfache geometrische Transformation zu dem gewünschten Quadranten durchgeführt. Dem folgt das oben beschriebene Verbindungs-Umformen, das bezüglich der geschnippten Verbindung durchgeführt wird.
  • Nachdem die Form der Verbindung transformiert ist, muss in dem einfachen Fall in 3 nichts anderes mehr getan werden. 11 und 12 zeigen aber einen Fall, wo das Umformen und Schnippen unerwünschte Ergebnisse erzeugt haben. Gemäß 11 wird Knoten N1 1101 mit Befestigungspunkt A1 1102 zu einer Position bezeichnet als N2 1103 mit Befesti gungspunkt 1104 bewegt. Der Feste Knoten N 1105 hat den Befestigungspunkt A 1106. Die Verbindung L1 1107 verbindet den Knoten N 1105 mit dem Knoten N1 1101. 13 zeigt das Ergebnis davon nach Umformen und Schnippen. Die Verbindung L1 1107 ist in die Verbindung L2 1201 umgeformt worden, und L2 1201 kreuzt den Knoten N 1101 und den Knoten N2 1103. Das ist sicher nicht das, was der Benutzer erwartet. Daher werden Verfahren zum Justieren der Befestigungspunkte benötigt, um zufriedenstellende Ergebnisse zu erhalten.
  • Ein erster Schritt beim Korrigieren einer Knotenkreuzung ist, einfach die Befestigungspunkte der Verbindung zu schnippen. Es gibt zwei Fälle des Schnippens, über einen Knoten oder entlang einer Kante. Beim Schnippen einer Befestigung über einen Knoten findet das Schnippen zu der entgegengesetzten Seite des Knotens statt. Die Ergebnisse der Anwendung dieses Verfahrens auf das Beispiel in 1112 wird in 13 gezeigt, wo Befestigungspunkte A und A2 in 13 nach A' 1301 und A2' 1302 bewegt werden. Bezüglich des Beibehaltens der Topologie und sichtbarer Ergebnisse liefert dies recht ordentliche Ergebnisse. Es ist jedoch zu erkennen, dass in einigen Fällen die Knotenform eine Bedeutung hat, sodass eine Beziehung zwischen Knoten verschieden interpretiert wird, abhängig davon, wo eine Verbindung befestigt ist. Zum Beispiel gibt die Befestigung auf einer Seite eine Eingabe an, und die Befestigung auf der entgegengesetzten Seite gibt eine Ausgabe an. Interne Knotendarstellungen werden einen Indikator enthalten, z. B. ein Kennzeichen oder einen Knotentyp, der benutzt werden kann, um anzugeben, ob das Schnippen von Befestigungspunkten erlaubt ist oder nicht.
  • Das Schnippen von Befestigungspunkten ist einfach in dem Fall, wo die Knotenform fast symmetrisch um die Schnippachse ist. So sei der asymmetrische Fall betrachtet. Nur der Fall des Links-Rechts-Schnippens um die Vertikalachse wird betrachtet; die anderen Fälle sind ähnlich. Der asymmetrische Fall wird in 14 gezeigt. 14 zeigt einen asymmetrische geformten Knoten 1405. Um einen Punkt A1 1401 von rechts nach links zu schnippen, wird eine horizontale Linie von A1 1401 zu der anderen Seite des Knotens 1405 gezogen, bis sie den Knoten bei A1' 1403 kreuzt, der der neue Befestigungspunkt ist. Man beachte, dass in einem asymmetrischen Fall die geschnippten Punkte recht verschieden sein können. Zum Beispiel liegen sowohl A1 1401 als auch A2 1402 weit rechts von dem Knoten, und der geschnippte Punkt A2' 1401 liegt weit links vom dem Knoten 1405, aber der geschnippte Punkt A1' 1403 liegt in der Mitte des Knotens 1405.
  • Ein anderer zu betrachtender Fall ist, wo die horizontale Linie die Knotenumhüllung an mehr als zwei Stellen kreuzt. Dann ist es wichtig, den entsprechenden Punkt zu nehmen, um zu ihm zu schnippen. Diesen Fall zeigt 15. Gemäß 15 entsprechen sich Punkte A1 1501 und A1' 1501 als Schnipppunkte, und Punkte A2 1503 und A2' 1504 entsprechen sich als Schnipppunkte. Um den entsprechenden Schnipppunkt zu identifizieren, nummeriere die Kreuzungspunkte von links nach rechts. Bestimme die Nummer I des momentanen Befestigungspunktes (d. h. der Befestigungspunkt ist der I-te von links). Nun nummeriere die Punkte von rechts nach links. Der entsprechende Punkt ist der i-te Punkt von rechts.
  • Schnippen eines Befestigungspunktes entlang der Kante eines Knotens findet statt, wenn die Bewegung des Knotens parallel zu der Knotenkante mit der Befestigung ist. Ferner müssen die Anfangs- und Endstellen der Knoten so sein, dass es keine Überschneidung gibt. Das Schnippen eines Befestigungspunktes über die Kante eines Knotens wird in 16 und 17 veranschaulicht. Das Schnippen eines Befestigungspunktes über eine Kante kann auf einem Knoten stattfinden, während das Schnippen über den Knoten über dem anderen Knoten stattfinden kann. Gemäß 16 sind Knoten 1601 und 1602 über Verbindungen 1603 und 1604 verbunden. Die Verbindung 1603 ist am Knoten 1601 am Befestigungspunkt 1605 und am Knoten 1602 am Befestigungspunkt 1606 befestigt. Die Verbindung 1604 ist am Knoten 1601 am Befestigungspunkt 1607 und am Knoten 1602 am Befestigungspunkt 1608 befestigt. Nun auf 17 verweisend ist der Knoten zu einer neuen Position bewegt worden, wobei die Befestigungspunkte 1606 und 1607 über die Knoten 1602 bzw. 1601 zu Befestigungspunkten 1606' und 1607' geschnippt werden. Unterdessen sind die Befestigungspunkte 1605 und 1608 über die Kante ihrer jeweiligen Knoten 1601 und 1602 zu Befestigungspunkten 1605' und 1608' geschnippt worden. Man beachte, dass die Verbindungen 1603 und 1604 in Verbindungen 1603' und 1604' umgeformt wurden und ihre Grundformmerkmale beibehalten.
  • Das Schnippen eines Befestigungspunktes entlang einer Kante wird durchgeführt, indem ein Mittelpunkt der Kante gefunden wird, eine Entfernung X zwischen dem Mittelpunkt und dem Befestigungspunkt gefunden wird und der Befestigungspunkt zu einer Stelle in einer Entfernung X auf der entgegengesetzten Seite des Mittelpunkts geschnippt wird.
  • Selbst wenn diese Verfahren angewandt werden, kann die Verbindung noch immer einen Knoten kreuzen. Dies wird in 1819 veranschaulicht. Gemäß 18 ist Knoten 1801 mit Knoten 1802 über die Verbindung 1803 verbunden. Die Verbindung 1803 ist am Knoten 1801 am Befestigungspunkt 1804 und am Knoten 1802 am Befestigungspunkt 1805 befestigt. 19 zeigt die Ergebnisse des Bewegens des Knotens 1802. Gemäß 19 ist die Verbindung 1803 umgeformt worden und ist als 1803' dargestellt. Es wird angemerkt, dass die Verbindung 1803' den Knoten 1802 am Punkt 1901 kreuzt. Punkt 1805' gibt an, wo der Befestigungspunkt 1805 geschnippt werden würde. Es ist jedoch klar, dass selbst das Schnippen des Knotens die kreuzende Verbindung nicht korrigieren würde (wie durch die punktierte Linie 1902 veranschaulicht, die den Effekt des Schnippens von Befestigungspunkten anzeigt). Ein weiters "Entkreuzungs"-Verfahren wird daher benötigt.
  • Um eine Verbindung von einem Knoten zu beschneiden, finde einfach, wo die Verbindung den Knoten kreuzt, und mache diesen zum Befestigungspunkt. Wenn eine Verbindung beschnitten wird, ändert sich die Gesamtform der Verbindung, weil die abgeschnittenen Teile weggeworfen werden. In der gegenwärtig bevorzugten Ausführung wird die Verbindung 1803' am Kreuzungspunkt 1901 abgeschnitten, um das Segment der Verbindung vom Kreuzungspunkt 901 zum Befestigungspunkt 1805 zu löschen. Das Ergebnis wird in 20 gezeigt, wo die umgeformte Verbindung als Verbindung 2001 dargestellt wird.
  • Man beachte, dass in Fällen, wo es mehrfache Kreuzungspunkte einer Verbindung auf einem Knoten gibt, der Kreuzungspunkt gewählt wird, der am nächsten bei dem Befestigungspunkt des festen Knotens liegt. Man beachte weiter, dass eine Alternative zum Beschneiden der Verbindung sein würde, die Verbindung an dem Punkt, wo die Verbindung den Knoten kreuzte, der Kurventransformation zu unterziehen.
  • Verbindungs-Umleiten wird durchgeführt, wenn ein Befestigungspunkt nicht zu bewegen (zu schnippen) ist und eine Knotenkreuzung auftritt. 21 zeigt ein Beispiel des Verbingungs-Umleitens. 21 veranschaulicht ein Verbindungs-Umleiten, das benutzt werden kann, um die knotenkreuzende Verbindung von 12 zu korrigieren. Gemäß 21 ist die umgeleitete Verbindung 2101 umgeleitet worden, um die Kreuzung mit dem Knoten zu vermeiden. Die gestrichelte Linie 2102 gibt an, wo die Verbindung ursprünglich nach dem Umformen war. Die umgeleitete Verbindung 2101 folgt der Form des Knotens 1105 von dem Befestigungspunkt 1106 zu einem Punkt 2103, wo sie sich mit der kreuzenden Verbindung 2102 trifft. Dann folgt die Umleitung der Form der Verbindung 2102 bis dahin, wo sie den Knoten 1103 kreuzen würde (d. h. Punkt 2104). Von dort folgt die Route der Form von Knoten 1103 zu dem Befestigungspunkt 1104.
  • 22 ist ein Flussdiagramm, das die Schritte eines einfachen Verfahrens zum Umleiten einer Verbindung veranschaulicht. Es wird angenommen, dass eine kreuzende Verbindung erzeugt wurde. Zuerst wird ein Umriss jedes Knotens erzeugt, Schritt 2201. Eine Beschreibung, wie Umrisse erzeugt werden, wird unten mit Verweis auf 2930 bereitgestellt. In jedem Fall wird dies in 23 veranschaulicht, wo Umrisse 2301 und 2302 von Knoten 1103 bzw. 1150 veranschaulicht sind. Außerdem zeigt 23 eine kreuzende Verbindung 2303.
  • Als Nächstes wird beginnend von dem Befestigungspunkt des festen Knotens eine Route gewählt, die dem Umriss folgt und die kürzeste Entfernung zu der kreuzenden Verbindung hat, Schritt 2202. Dies wird in 24 veranschaulicht. Man beachte, dass die Teile des Umrisses 2302 und der kreuzenden Verbindung 2303, die nicht benutzt worden sind, weggeworfen wurden.
  • Die Route folgt dann der kreuzenden Verbindung, bis sie den Punkt erreicht, wo der Umriss des bewegten Knotens gekreuzt und der Rest der kreuzenden Verbindung weggeworfen wird, Schritt 2203. Dies wird in 25 gezeigt, wo der Teil der Verbindung 2303, der den Knoten 1103 kreuzt, weggeworfen wird.
  • An diesem Punkt folgt die Route der Form des bewegten Knotens in der Richtung so, dass der Befestigungspunkt des bewegten Knotens in der kürzesten Entfernung erreicht wird, Schritt 2204. Dies wird in 26 veranschaulicht, worin die Teile des Umrisses, die nicht benutzt werden, weggeworfen werden.
  • Das Finden des Umrisses der Genze eines willkürlich geformten Knotens ist eine nicht triviale Aufgabe. Für eine beliebig gestaltete, geschlossene Kurve, die die Grenze darstellt, gibt es eine Schwierigkeit beim Bestimmen, ob ein Punkt innerhalb oder außerhalb der Kurve liegt. Das Verfahren zum Finden eines Umrisses wird mit dem Flussdiagramm von 27 beschrieben. Auf 27 verweisend wird ein erster Umriss von einem Startpunkt auf einer Seite einer Grenze gezogen, und ein zweiter Umriss wird von dem Startpunkt auf der entgegengesetzten Seite der Grenze gezogen, Schritt 2701. Es ist erforderlich, Umrisse auf beiden Seiten der Grenze zu ziehen, da nicht ohne weiteres zu erkennen ist, wo die Kurve begann, und so ist unklar, welches der "Innen"- oder "Außen"-Umriss ist. In jedem Fall wird jeder der Umrisse im gleichen vorbestimmten Abstand von der Grenze gezogen. Dies wird in 28 veranschaulicht, wo ein Außenumriss 2801 und ein Innenumriss 2802 gezeigt werden. Man sollte beachten, dass das, was effektiv geschieht, das Ziehen von Umrissen auf der Innenseite und der Außenseite der Knotengrenze ist.
  • Als Nächstes werden die Umrisse in einfache, geschlossene Kurven umgewandelt, Schritt 2702. Dies wird für jeden der Umrisse druch Trimmen kleiner Stücke am Ende der resultierenden Kurven durchgeführt. Solche kleineren Kurven werden in 28 durch die Kurve 2803 von Umriss 2801 und die Kurve 2804 von Umriss 2802 veranschaulicht. Diese Kurven entstehen durch den Umreißungsprozess. Das Wegwerfen dieser kleineren Kurven wird in 29 als Umrisse 2801' und 2802' veranschaulicht.
  • Schließlich wird der längere der Umrisse als der Umriss für den Knoten ausgewählt, Schritt 2703. Das Bestimmen des längeren Umrisses wird durchgeführt, indem einfach die Strecken der verschiedenen Segmente der zwei Umrisse summiert und dann die Summen verglichen werden. Der längere der Umrisse wird eindeutig der "Außen"-Umriss für den Knoten sein. Dies wird in 30 veranschaulicht.
  • Man sollte zur Kenntnis nehmen, dass der oben beschriebene Umreißungsprozess für mehr als Verbindungs-Umleitung benutzt werden kann. In einer Ausführung wird der gleiche Umreißungsprozess verwendet, um die Auswahl eines Knotens anzuzeigen. Dies erfolgt durch Hervorheben oder Färben der Umrisskurve, um dem Benutzer eine visuelle Rückmeldung zu geben, dass der durch den Umriss umschlossene Knoten ausgewählt ist.
  • Somit sind Verfahren und Vorrichtungen zum Modifizieren eines Knoten-Verbindung-Diagramms offenbart worden.
  • Ein Schreibstift-basiertes System mit einem Wandtafel-Emulationsprogramm und einer grafischen Benutzerschnittstelle, mit der über eine Berührungsplatte zusammengearbeitet wird, ist beschrieben worden. Die Erfindung könnte in anderen Arten von Systemen, die andere Arten von Programmen fahren, und mit anderen Arten von Benutzereingabeeinrichtungen implementiert werden.
  • Ein Kriterium zur Berührung wurde beschrieben, das verlangt, dass sich ein Verbindungsendpunkt innerhalb einer vorbestimmten Entfernung von einer Knotengrenze befindet. Die Erfindung könnte jedoch mit anderen Kriterien implementiert werden, mit Verbindungen, deren Enden keine Punkte sind, und mit Knoten, die keine definierten Grenzen haben.
  • Automatische Verbindungs-Umpositionierungs- und Umgestaltungsverfahren für einzelne Verbindungen als Reaktion auf Anforderungen zum Bewegen von Knoten sind beschrieben worden, aber die Verfahren der Erfindung könnten als Reaktion auf andere Anforderungen zum Modifizieren eines Knoten-Verbindung-Diagramms angewandt werden, z. B. eine Anforderung, einen Befestigungspunkt zu bewegen, wie oben beschrieben. Ferner könnten die Verfahren gleichzeitig auf alle Verbindungen angewandt werden, die einen bewegten Knoten berühren oder durch eine Modifikation des Knoten-Verbindung-Diagramms beeinflusst werden.
  • Verbindungsschnippverfahren wurden beschrieben, die Spiegelumkehrungen über den x- und y-Achsen zwischen Quadranten durchführen, aber Schnippverfahren, die Spiegelumkehrungen über jede geeignete Achse durchführen, könnten verwendet werden.

Claims (10)

  1. Verfahren zum Modifizieren eines Knoten-Verbindung-Diagramms, wobei das Knoten-Verbindung-Diagramm einen Knoten (303; 603) und eine Verbindung (301; 801; 1107; 1603; 1803) aufweist, die an dem Knoten an einem Befestigungspunkt befestigt ist, und die Verbindung durch einen Satz von Segmenten dargestellt wird, wobei das Verfahren umfasst: (a) Empfangen einer Anforderung, dass das Knoten-Verbindung-Diagramm zu modifizieren ist; (b) als Reaktion, Modifizieren des Knoten-Verbindung-Diagramms durch Modifizieren der Verbindung, wobei die Modifikation der Verbindung eines oder beides des Folgenden umfasst: (b1) Transformieren jedes von zwei oder mehr Segmenten (831) der Verbindung (801) und (b2) Schnippen der Verbindung um eine oder mehr Achsen (1005; 1006) zwischen einer ersten Position und einer zweiten Position, gekennzeichnet durch (b3) Bestimmen, ob die modifizierte Verbindung einen Knoten kreuzt, und, wenn die modifizierte Verbindung (1201; 1803'; 2102) einen Knoten (1103, 1105, 1802) kreuzt, weiter Modifizieren der Verbindung, um die Kreuzung mit dem Knoten zu beseitigen, wobei das Beseitigen der Kreuzung mit dem Knoten das Schnippen des Befestigungspunktes oder das Beschneiden der Verbindung oder beides umfasst.
  2. Verfahren nach Anspruch 1, wobei die Verbindung (301; 801; 1107; 1603; 1803) an einem ersten Knoten (302; 1105; 1602; 1801) an einem ersten Befestigungspunkt (306; 810; 1106; 1606, 1608, 1804) und an einem zweiten Knoten (303; 1101; 1601; 1802) an einem zweiten Befestigungspunkt (307; 820; 1102; 1605, 1607; 1805) befestigt ist, wobei die Anforderung ist, den zweiten Knoten zu bewegen, wobei das Verfahren umfasst, vor (a): (c) Speichern von Verbindungsforminformation, wobei die Verbindungsforminformation Ver bindungssegmentinformation umfasst, wobei (b) umfasst: (b4) Identifizieren eines dritten Befestigungspunktes (308; 1104; 1605', 1607'; 1805') für den bewegten zweiten Knoten (304; 1103; 1601), wobei sich der dritte Befestigungspunkt an der gleichen Stelle auf dem bewegten zweiten Knoten wie der zweite Befestigungspunkt befindet, und (b5) Erzeugen von Verbindungs-Verschiebungsdaten für die Verbindung basierend auf der gespeicherten Verbindungsforminformation, und wobei (b1) umfasst: (b1a) Transformieren jedes Segments (831) der Verbindung, wodurch die Verbindung kurventransformiert wird, wobei das Transformieren jedes Segments umfasst: (b1a1) Bestimmen einer Bogenlänge für jedes Segment; (b1a2) Bestimmen von Transformationsfaktoren basierend auf der Länge des Segments und der Bogenlänge für das Segment; (b1a3) Bestimmen einer transformierten Segmentstelle und -Länge basierend auf den Transformationsfaktoren, Verbindungs-Verschiebungsdaten und der ursprünglichen Segment-Endpunktstelle (811820), und (b1a4) Anzeigen des transformierten Segments zwischen der Endpunktstelle des transformierten Segments und einem vorhergehenden Endpunkt des transformierten Segments.
  3. Verfahren nach Anspruch 2, wobei (b5) weiter umfasst: (b5a) Definieren eines X-Y-Koordinatensystems mit dem ersten Befestigungspunkt (306; 810; 1106; 1606, 1608; 1804) als einem Ursprung, und (b5b) Bestimmen von Verschiebungswerten in X- und Y-Dimensionen basierend auf dem zweiten (307; 820; 1102; 1605, 1607; 1805) und dritten (308; 1104; 1605', 1607'; 1805') Befestigungspunkt.
  4. Verfahren nach Anspruch 3, wobei (b1a2) weiter umfasst: (b1a2a) Bestimmen der Länge des Segments (831) in der X-Dimension; (b1a2b) Bestimmen des X-Bogenlänge des Segments als die Länge der Verbindung (301; 801; 1107; 1603; 1803) bis zu dem Segment in der X-Dimension; (b1a2c) Berechnen eines X-Dimensions-Transformationsfaktors basierend auf dem Verhältnis zwischen der Länge des Segments in der X-Dimension und der Bogenlänge des Segments in der X-Dimension; (b1a2d) Bestimmen der Länge des Segments in der Y-Dimension; (b1a2e) Bestimmen der Y-Bogenlänge des Segments als die Länge der Verbindung bis zu dem Segment in der Y-Dimension, und (b1a2f) Berechnen eines Y-Dimensions-Transformationsfaktors basierend auf dem Verhältnis zwischen der Länge des Segments in der Y-Dimension und der Bogenlänge des Segments in der Y-Dimension;
  5. Verfahren nach Anspruch 1, wobei die Verbindung (301; 801; 1107; 1603; 1803) an einem ersten Knoten (302; 1105; 1602; 1801) an einem ersten Befestigungspunkt (306; 810; 1106; 1606, 1608, 1804) und an einem zweiten Knoten (303; 1101; 1601; 1802) an einem zweiten Befestigungspunkt (307; 820; 1102; 1605, 1607; 1805) befestigt ist, wobei die Anforderung ist, den zweiten Knoten zu bewegen, und wobei (b) umfasst: (b6) Definieren des ersten Befestigungspunktes als einen Ursprungspunkt für ein Koordinatensystem zum Umgestalten der Verbindung; (b7) Bestimmen eines dritten Befestigungspunktes (308; 1104; 1605', 1607'; 1805') basierend auf dem bewegten zweiten Knoten (304; 1103; 1601); (b8) Bestimmen der Quadranten für den zweiten Befestigungspunkt und den dritten Befestigungspunkt, und (b9) wenn der Quadrant für den zweiten Befestigungspunkt und den dritten Befestigungspunkt der gleiche ist, Kurventransformieren der Verbindung als Reaktion auf das Bewegen des zweiten Knotens basierend auf den Formmerkmalen der ursprünglichen Verbindung; (b10) wenn der Quadrant für den zweiten Befestigungspunkt und den dritten Befestigungspunkt verschieden ist, Umgestalten der Verbindung, Durchführen von (b2), umfassend: (b2a) Schnippen der Verbindung in den Quadranten des dritten Befestigungspunktes, und (b2b) Kurventransformieren der Verbindung basierend auf den Formmerkmalen der geschnippten Verbindung.
  6. Verfahren nach Anspruch 5, wobei (b3) umfasst: (b3a) Erfassen, dass eine kurventransformierte Verbindung (1201) entweder den ersten Knoten (1105) oder den zweiten Knoten (1103) kreuzt; (b3b) Bestimmen, dass der erste Knoten und der zweite Knoten Befestigungspunkte schnippen können; (b3c) Bestimmen von entsprechenden Schnipp-Befestigungspunkten (1301, 1302) für den ersten Befestigungspunkt (1106) und den dritten Befestigungspunkt (1104), und (b3d) Modifizieren der Verbindung (1201), um an dem Schnipp-Befestigungspunkt für den ersten Befestigungspunkt und dem Schnipp-Befestigungspunkt für den dritten Befestigungspunkt zu haften.
  7. Verfahren nach Anspruch 5, wobei (b3) umfasst: (b3e) Erfassen, dass eine kurventransformierte Verbindung (1803') entweder den ersten Knoten (1801) oder den zweiten Knoten (1802) kreuzt; (b3f) Identifizieren eines Kreuzungspunktes (1901), und (b3g) Modifizieren der kurventransformierten Verbindung, um an dem bewegten zweiten Knoten an dem Kreuzungspunkt zu haften, durch Beschneiden der kurventransformierten Verbindung.
  8. Verfahren nach Anspruch 5, wobei (b3) umfasst: (b3h) Erfassen, dass eine kurventransformierte Verbindung (2102) entweder den ersten Knoten (1105) oder den zweiten Knoten (1103) kreuzt; (b3i) Bestimmen, dass der erste Knoten und der zweite Knoten Befestigungspunkte nicht schnippen können, und (b3j) Umleiten der kurventransformierten Verbindung, sodass weder der erste Knoten noch der zweite Knoten gekreuzt wird.
  9. Verfahren nach Anspruch 8, wobei (b3j) umfasst: (b3j1) Zeichnen eines Umrisses (2302, 2301) des ersten Knotens (1105) und des zweiten Knotens 1103), (b3j2) Bestimmen eines ersten Streckenteils von dem ersten Befestigungspunkt (1106) nach der kurventransformierten Verbindung (2102) basierend auf dem Umriss (2302) des ersten Knotens; (b3j3) Bestimmen eines zweiten Streckenteils von dem dritten Befestigungspunkt (1104) nach der kurventransformierten Verbindung basierend auf einem Kreuzungspunkt (2104) der kurventransformierten Verbindung und dem Umriss des zweiten Knotens, und (b3j4) Bereitstellen der umgeleiteten Verbindung als der erste Streckenteil, wobei der zweite Streckenteil und ein Abschnitt (2303) der kurventransformierten Verbindung den ersten Streckenteil und den zweiten Streckenteil verbinden.
  10. System, das eingerichtet ist, ein Verfahren, wie in einem der Ansprüche 1 bis 9 beansprucht, durchzuführen, wobei das System umfasst: eine Eingabeeinrichtung (105) zum Bereitstellen von Anforderungen für Modifikationen in Knoten-Verbindung-Diagrammen; eine Verarbeitungseinrichtung (102) zum Reagieren auf die Anforderungen durch Modifizieren von Knoten-Verbindung-Diagrammen; wobei die Verarbeitungseinrichtung als Reaktion auf eine Anforderung zum Modifizieren eines Knoten-Verbindung-Diagramms mit einem Knoten und einer Verbindung (301; 801; 1107; 1603; 1803), die an dem Knoten an einem Befestigungspunkt befestigt ist, wobei die Verbindung durch einen Satz von Segmenten dargestellt wird, das Knoten-Verbindung-Diagramm durch Modifizieren der Verbindung modifiziert, wobei die Verarbeitungseinrichtung beim Modifizieren der Verbindung eines oder beides des Folgenden durchführt: (A) Transformieren jedes von zwei oder mehr Segmenten (831) der Verbindung (801) und (B) Schnippen der Verbindung um eine oder mehr Achsen (1005; 1006) zwischen einer ersten Position und einer zweiten Position, gekennzeichnet durch (C) Bestimmen, ob die modifizierte Verbindung einen Knoten kreuzt, und, wenn die anfänglich modifizierte Verbindung (1201; 1803'; 2102) einen Knoten (1103, 1105; 1802) kreuzt, weiter Modifizieren der Verbindung, um die Kreuzung mit dem Knoten zu beseitigen, wobei das Beseitigen der Kreuzung mit dem Knoten das Schnippen des Befestigungspunktes oder das Beschneiden der Verbindung oder beides umfasst.
DE69731434T 1996-08-15 1997-08-13 Verfahren und Gerät zur Modifizierung eines Node-Linkdiagramms Expired - Lifetime DE69731434T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US698741 1996-08-15
US08/698,741 US5798769A (en) 1996-08-15 1996-08-15 Method and apparatus for maintaining links between graphic objects in a free-form graphics display system

Publications (2)

Publication Number Publication Date
DE69731434D1 DE69731434D1 (de) 2004-12-09
DE69731434T2 true DE69731434T2 (de) 2005-03-24

Family

ID=24806479

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69731434T Expired - Lifetime DE69731434T2 (de) 1996-08-15 1997-08-13 Verfahren und Gerät zur Modifizierung eines Node-Linkdiagramms

Country Status (4)

Country Link
US (1) US5798769A (de)
EP (1) EP0825559B1 (de)
JP (1) JP4028031B2 (de)
DE (1) DE69731434T2 (de)

Families Citing this family (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067094A (en) * 1998-04-07 2000-05-23 Adobe Systems Incorporated Brushstroke envelopes
GB2340006A (en) * 1998-07-20 2000-02-09 Sony Uk Ltd Digital image processing
US6377259B2 (en) 1998-07-29 2002-04-23 Inxight Software, Inc. Presenting node-link structures with modification
US8232995B2 (en) 1998-07-29 2012-07-31 SAP America, Inc. Local relative layout of node-link structures in space with negative curvature
EP0977151B1 (de) * 1998-07-31 2007-11-07 Canon Kabushiki Kaisha Bildverarbeitungsvorrichtung und -Verfahren und Speichermedium
US20030214553A1 (en) * 2002-05-14 2003-11-20 Microsoft Corporation Ink regions in an overlay control
US7925987B2 (en) * 2002-05-14 2011-04-12 Microsoft Corporation Entry and editing of electronic ink
US7158675B2 (en) * 2002-05-14 2007-01-02 Microsoft Corporation Interfacing with ink
US20040001113A1 (en) * 2002-06-28 2004-01-01 John Zipperer Method and apparatus for spline-based trajectory classification, gesture detection and localization
JP4213052B2 (ja) * 2004-01-28 2009-01-21 任天堂株式会社 タッチパネル入力を用いたゲームシステム
JP4159491B2 (ja) * 2004-02-23 2008-10-01 任天堂株式会社 ゲームプログラムおよびゲーム装置
JP2005346467A (ja) * 2004-06-03 2005-12-15 Nintendo Co Ltd 図形認識プログラム
JP4717489B2 (ja) * 2005-04-07 2011-07-06 任天堂株式会社 ゲームプログラム
US8930331B2 (en) 2007-02-21 2015-01-06 Palantir Technologies Providing unique views of data based on changes or rules
US8014607B2 (en) * 2007-03-23 2011-09-06 Palo Alto Research Center Incorporated Method and apparatus for creating and editing node-link diagrams in pen computing systems
US7907141B2 (en) * 2007-03-23 2011-03-15 Palo Alto Research Center Incorporated Methods and processes for recognition of electronic ink strokes
US8429194B2 (en) 2008-09-15 2013-04-23 Palantir Technologies, Inc. Document-based workflows
US8466879B2 (en) * 2008-10-26 2013-06-18 Microsoft Corporation Multi-touch manipulation of application objects
US8477103B2 (en) 2008-10-26 2013-07-02 Microsoft Corporation Multi-touch object inertia simulation
US8423916B2 (en) * 2008-11-20 2013-04-16 Canon Kabushiki Kaisha Information processing apparatus, processing method thereof, and computer-readable storage medium
US8190710B2 (en) 2009-06-23 2012-05-29 Oracle International Corporation System and method for providing user context support in a native transaction platform
US8326913B2 (en) * 2009-06-25 2012-12-04 Oracle International Corporation Method and system for service contract discovery
US8863029B2 (en) 2009-09-01 2014-10-14 Oracle International Corporation Method and system for providing graphical user interface having filtering capability
US8161413B2 (en) * 2009-09-01 2012-04-17 Oracle International Corporation Method and system for providing user interface representing organization hierarchy
US8806379B2 (en) 2009-09-01 2014-08-12 Oracle International Corporation Method and system for displaying group relationships in a graphical user interface
US9552661B2 (en) 2010-08-09 2017-01-24 International Business Machines Corporation Distinguishing superimposed links to a node by spreading connection points of links to node according to coordinates of bend point or opposite end point of links
US8799240B2 (en) 2011-06-23 2014-08-05 Palantir Technologies, Inc. System and method for investigating large amounts of data
US9092482B2 (en) 2013-03-14 2015-07-28 Palantir Technologies, Inc. Fair scheduling for mixed-query loads
US9547693B1 (en) 2011-06-23 2017-01-17 Palantir Technologies Inc. Periodic database search manager for multiple data sources
US8732574B2 (en) 2011-08-25 2014-05-20 Palantir Technologies, Inc. System and method for parameterizing documents for automatic workflow generation
US8504542B2 (en) 2011-09-02 2013-08-06 Palantir Technologies, Inc. Multi-row transactions
US9396410B1 (en) * 2011-09-28 2016-07-19 Palantir Technologies Inc. Preserving angles of graph elbows
US9367201B2 (en) 2011-11-30 2016-06-14 Microsoft Technology Licensing, Llc Graphic flow having unlimited number of connections between shapes
US8832582B2 (en) 2012-03-15 2014-09-09 Microsoft Corporation Interactive control of the curvature of links
US9348677B2 (en) 2012-10-22 2016-05-24 Palantir Technologies Inc. System and method for batch evaluation programs
US9123086B1 (en) 2013-01-31 2015-09-01 Palantir Technologies, Inc. Automatically generating event objects from images
US20140223382A1 (en) * 2013-02-01 2014-08-07 Barnesandnoble.Com Llc Z-shaped gesture for touch sensitive ui undo, delete, and clear functions
US10037314B2 (en) 2013-03-14 2018-07-31 Palantir Technologies, Inc. Mobile reports
US10275778B1 (en) 2013-03-15 2019-04-30 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive investigation based on automatic malfeasance clustering of related data in various data structures
US8937619B2 (en) 2013-03-15 2015-01-20 Palantir Technologies Inc. Generating an object time series from data objects
US8818892B1 (en) 2013-03-15 2014-08-26 Palantir Technologies, Inc. Prioritizing data clusters with customizable scoring strategies
US8868486B2 (en) 2013-03-15 2014-10-21 Palantir Technologies Inc. Time-sensitive cube
US8917274B2 (en) 2013-03-15 2014-12-23 Palantir Technologies Inc. Event matrix based on integrated data
US9965937B2 (en) 2013-03-15 2018-05-08 Palantir Technologies Inc. External malware data item clustering and analysis
US8909656B2 (en) 2013-03-15 2014-12-09 Palantir Technologies Inc. Filter chains with associated multipath views for exploring large data sets
US8799799B1 (en) 2013-05-07 2014-08-05 Palantir Technologies Inc. Interactive geospatial map
US9223773B2 (en) 2013-08-08 2015-12-29 Palatir Technologies Inc. Template system for custom document generation
US8713467B1 (en) 2013-08-09 2014-04-29 Palantir Technologies, Inc. Context-sensitive views
US8938686B1 (en) 2013-10-03 2015-01-20 Palantir Technologies Inc. Systems and methods for analyzing performance of an entity
US8924872B1 (en) 2013-10-18 2014-12-30 Palantir Technologies Inc. Overview user interface of emergency call data of a law enforcement agency
US9116975B2 (en) 2013-10-18 2015-08-25 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive simultaneous querying of multiple data stores
US9021384B1 (en) 2013-11-04 2015-04-28 Palantir Technologies Inc. Interactive vehicle information map
US8868537B1 (en) 2013-11-11 2014-10-21 Palantir Technologies, Inc. Simple web search
US9105000B1 (en) 2013-12-10 2015-08-11 Palantir Technologies Inc. Aggregating data from a plurality of data sources
US9727622B2 (en) 2013-12-16 2017-08-08 Palantir Technologies, Inc. Methods and systems for analyzing entity performance
US9552615B2 (en) 2013-12-20 2017-01-24 Palantir Technologies Inc. Automated database analysis to detect malfeasance
US10356032B2 (en) 2013-12-26 2019-07-16 Palantir Technologies Inc. System and method for detecting confidential information emails
US8832832B1 (en) 2014-01-03 2014-09-09 Palantir Technologies Inc. IP reputation
US9043696B1 (en) 2014-01-03 2015-05-26 Palantir Technologies Inc. Systems and methods for visual definition of data associations
US9483162B2 (en) 2014-02-20 2016-11-01 Palantir Technologies Inc. Relationship visualizations
US9727376B1 (en) 2014-03-04 2017-08-08 Palantir Technologies, Inc. Mobile tasks
US8924429B1 (en) 2014-03-18 2014-12-30 Palantir Technologies Inc. Determining and extracting changed data from a data source
US9857958B2 (en) 2014-04-28 2018-01-02 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive access of, investigation of, and analysis of data objects stored in one or more databases
US9619557B2 (en) 2014-06-30 2017-04-11 Palantir Technologies, Inc. Systems and methods for key phrase characterization of documents
US9535974B1 (en) 2014-06-30 2017-01-03 Palantir Technologies Inc. Systems and methods for identifying key phrase clusters within documents
US9256664B2 (en) 2014-07-03 2016-02-09 Palantir Technologies Inc. System and method for news events detection and visualization
US9202249B1 (en) 2014-07-03 2015-12-01 Palantir Technologies Inc. Data item clustering and analysis
US9454281B2 (en) 2014-09-03 2016-09-27 Palantir Technologies Inc. System for providing dynamic linked panels in user interface
US9767172B2 (en) 2014-10-03 2017-09-19 Palantir Technologies Inc. Data aggregation and analysis system
US9501851B2 (en) 2014-10-03 2016-11-22 Palantir Technologies Inc. Time-series analysis system
US9984133B2 (en) 2014-10-16 2018-05-29 Palantir Technologies Inc. Schematic and database linking system
US9229952B1 (en) 2014-11-05 2016-01-05 Palantir Technologies, Inc. History preserving data pipeline system and method
US9043894B1 (en) 2014-11-06 2015-05-26 Palantir Technologies Inc. Malicious software detection in a computing system
US10362133B1 (en) 2014-12-22 2019-07-23 Palantir Technologies Inc. Communication data processing architecture
US9367872B1 (en) 2014-12-22 2016-06-14 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive investigation of bad actor behavior based on automatic clustering of related data in various data structures
US9348920B1 (en) 2014-12-22 2016-05-24 Palantir Technologies Inc. Concept indexing among database of documents using machine learning techniques
US10552994B2 (en) 2014-12-22 2020-02-04 Palantir Technologies Inc. Systems and interactive user interfaces for dynamic retrieval, analysis, and triage of data items
US9817563B1 (en) 2014-12-29 2017-11-14 Palantir Technologies Inc. System and method of generating data points from one or more data stores of data items for chart creation and manipulation
US9335911B1 (en) 2014-12-29 2016-05-10 Palantir Technologies Inc. Interactive user interface for dynamic data analysis exploration and query processing
US9870205B1 (en) 2014-12-29 2018-01-16 Palantir Technologies Inc. Storing logical units of program code generated using a dynamic programming notebook user interface
US10372879B2 (en) 2014-12-31 2019-08-06 Palantir Technologies Inc. Medical claims lead summary report generation
US9727560B2 (en) 2015-02-25 2017-08-08 Palantir Technologies Inc. Systems and methods for organizing and identifying documents via hierarchies and dimensions of tags
EP3611632A1 (de) 2015-03-16 2020-02-19 Palantir Technologies Inc. Anzeige von attribut- und ereignisdaten entlang von pfaden
US9886467B2 (en) 2015-03-19 2018-02-06 Plantir Technologies Inc. System and method for comparing and visualizing data entities and data entity series
US9454785B1 (en) 2015-07-30 2016-09-27 Palantir Technologies Inc. Systems and user interfaces for holistic, data-driven investigation of bad actor behavior based on clustering and scoring of related data
US9996595B2 (en) 2015-08-03 2018-06-12 Palantir Technologies, Inc. Providing full data provenance visualization for versioned datasets
US9456000B1 (en) 2015-08-06 2016-09-27 Palantir Technologies Inc. Systems, methods, user interfaces, and computer-readable media for investigating potential malicious communications
US9600146B2 (en) 2015-08-17 2017-03-21 Palantir Technologies Inc. Interactive geospatial map
US10489391B1 (en) 2015-08-17 2019-11-26 Palantir Technologies Inc. Systems and methods for grouping and enriching data items accessed from one or more databases for presentation in a user interface
US10853378B1 (en) 2015-08-25 2020-12-01 Palantir Technologies Inc. Electronic note management via a connected entity graph
US11150917B2 (en) 2015-08-26 2021-10-19 Palantir Technologies Inc. System for data aggregation and analysis of data from a plurality of data sources
US10176148B2 (en) * 2015-08-27 2019-01-08 Microsoft Technology Licensing, Llc Smart flip operation for grouped objects
US9485265B1 (en) 2015-08-28 2016-11-01 Palantir Technologies Inc. Malicious activity detection system capable of efficiently processing data accessed from databases and generating alerts for display in interactive user interfaces
US10706434B1 (en) 2015-09-01 2020-07-07 Palantir Technologies Inc. Methods and systems for determining location information
US9576015B1 (en) 2015-09-09 2017-02-21 Palantir Technologies, Inc. Domain-specific language for dataset transformations
US10296617B1 (en) 2015-10-05 2019-05-21 Palantir Technologies Inc. Searches of highly structured data
US9542446B1 (en) 2015-12-17 2017-01-10 Palantir Technologies, Inc. Automatic generation of composite datasets based on hierarchical fields
US9823818B1 (en) 2015-12-29 2017-11-21 Palantir Technologies Inc. Systems and interactive user interfaces for automatic generation of temporal representation of data objects
US9612723B1 (en) 2015-12-30 2017-04-04 Palantir Technologies Inc. Composite graphical interface with shareable data-objects
US10713304B2 (en) * 2016-01-26 2020-07-14 International Business Machines Corporation Entity arrangement by shape input
US10698938B2 (en) 2016-03-18 2020-06-30 Palantir Technologies Inc. Systems and methods for organizing and identifying documents via hierarchies and dimensions of tags
US10719188B2 (en) 2016-07-21 2020-07-21 Palantir Technologies Inc. Cached database and synchronization system for providing dynamic linked panels in user interface
US10324609B2 (en) 2016-07-21 2019-06-18 Palantir Technologies Inc. System for providing dynamic linked panels in user interface
US10437840B1 (en) 2016-08-19 2019-10-08 Palantir Technologies Inc. Focused probabilistic entity resolution from multiple data sources
US10318630B1 (en) 2016-11-21 2019-06-11 Palantir Technologies Inc. Analysis of large bodies of textual data
US10460602B1 (en) 2016-12-28 2019-10-29 Palantir Technologies Inc. Interactive vehicle information mapping system
US10956406B2 (en) 2017-06-12 2021-03-23 Palantir Technologies Inc. Propagated deletion of database records and derived data
US10403011B1 (en) 2017-07-18 2019-09-03 Palantir Technologies Inc. Passing system with an interactive user interface
US11599369B1 (en) 2018-03-08 2023-03-07 Palantir Technologies Inc. Graphical user interface configuration system
US10754822B1 (en) 2018-04-18 2020-08-25 Palantir Technologies Inc. Systems and methods for ontology migration
US10885021B1 (en) 2018-05-02 2021-01-05 Palantir Technologies Inc. Interactive interpreter and graphical user interface
US11119630B1 (en) 2018-06-19 2021-09-14 Palantir Technologies Inc. Artificial intelligence assisted evaluations and user interface for same

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8618665D0 (en) * 1986-07-31 1986-09-10 British Telecomm Graphical workstation
FR2646256A1 (fr) * 1989-04-24 1990-10-26 Digital Equipment Int Procede pour realiser des dessins a l'aide d'un ordinateur
US4953106A (en) * 1989-05-23 1990-08-28 At&T Bell Laboratories Technique for drawing directed graphs
US5617578A (en) * 1990-06-26 1997-04-01 Spss Corp. Computer-based workstation for generation of logic diagrams from natural language text structured by the insertion of script symbols
US5555357A (en) * 1994-06-03 1996-09-10 Claris Corporation Computer system and method for generating and manipulating charts and diagrams
US5680530A (en) * 1994-09-19 1997-10-21 Lucent Technologies Inc. Graphical environment for interactively specifying a target system
US5588108A (en) * 1994-09-27 1996-12-24 Micrografx, Inc. System and method for generating graphics charts
US5704028A (en) * 1994-12-21 1997-12-30 Micrografx, Inc. Graphics systems and method having data fields and shape placement control

Also Published As

Publication number Publication date
EP0825559A3 (de) 1999-08-25
US5798769A (en) 1998-08-25
JP4028031B2 (ja) 2007-12-26
DE69731434D1 (de) 2004-12-09
EP0825559A2 (de) 1998-02-25
EP0825559B1 (de) 2004-11-03
JPH10105728A (ja) 1998-04-24

Similar Documents

Publication Publication Date Title
DE69731434T2 (de) Verfahren und Gerät zur Modifizierung eines Node-Linkdiagramms
DE69534331T2 (de) Verfahren und Vorrichtung zur Hervorhebung der Einzelheit einer Baumstruktur
DE69732547T2 (de) Verfahren und Gerät zum Zusammenklappen und zur Ausdehnung auserwählter Bereiche von Arbeitsräumen auf einem von einem Rechner kontrollierten Anzeigesystem
DE69727200T2 (de) Verfahren und Program zur Erzeugung und Modifizierung von Kurven auf einen Rechnerbildschirm
DE69333096T2 (de) Vorrichtungen und Verfahren zum graphischen Zeichnen und Ausgabe
DE69631947T2 (de) Positionierung eines Eingabezeigers
DE2950712C2 (de) Einrichtung zur Erzeugung eines elektronischen Hintergrundrasters
DE69818383T2 (de) Interaktives System und Verfahren zur graphischen Darstellung
EP1272921B1 (de) Verfahren zum navigieren zwischen ausschnitten in einem darstellungsraum
DE2760260C2 (de) Vorrichtung zum Anzeigen eines gerasterten Bildes
DE69817634T2 (de) Vorrichtung und Verfahren zur Anzeige von Fenstern
DE112004000377B4 (de) Verfahren und Vorrichtung Bildsegmentierung in einer dreidimensionalen Arbeitsumgebung
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
DE10110943B4 (de) Positionieren von auf einer Benutzeroberfläche angezeigten Bereichen
DE4446139A1 (de) Verfahren und Einrichtung zum Hervorheben von Objekten in einem Konferenzsystem
DE10035428B4 (de) Anzeigen von interaktiven Bitmap-Bildern innerhalb eines Anzeigeraums
DE4033465C2 (de) Interaktives Computer-gesteuertes Displaysystem
DE19512185B4 (de) Verfahren und Vorrichtung zum Erzeugen von Fontdaten
DE112014006829T5 (de) Anzeigevorrichtung und Anzeigeverfahren
DE102014006549B4 (de) Technik zur Verarbeitung einer Zeichenfolge zur graphischen Darstellung an einer Mensch-Maschine-Schnittstelle
DE3914905C2 (de)
DE4105291C2 (de) Vorrichtung zum Überwachen und Planen von Funktionen einer Funkenerosionsmaschine
EP0524934B1 (de) Vorrichtung zum überwachen und planen von funktionen einer funkenerosionsmaschine
DE10242639A1 (de) Verfahren zur Analyse und Modifikation eines Footprints
DE102018005621A1 (de) Selektives Aktivieren einer Trackpadfunktionalität in Grafikschnittstellen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition