DE69927738T2 - Verfahren und Vorrichtung zum Editieren von skizzierten Kurven - Google Patents

Verfahren und Vorrichtung zum Editieren von skizzierten Kurven Download PDF

Info

Publication number
DE69927738T2
DE69927738T2 DE69927738T DE69927738T DE69927738T2 DE 69927738 T2 DE69927738 T2 DE 69927738T2 DE 69927738 T DE69927738 T DE 69927738T DE 69927738 T DE69927738 T DE 69927738T DE 69927738 T2 DE69927738 T2 DE 69927738T2
Authority
DE
Germany
Prior art keywords
curve
points
existing
replacement
point
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
DE69927738T
Other languages
English (en)
Other versions
DE69927738D1 (de
Inventor
Michael Redwood City Schuster
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.)
Adobe Inc
Original Assignee
Adobe Systems 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 Adobe Systems Inc filed Critical Adobe Systems Inc
Application granted granted Critical
Publication of DE69927738D1 publication Critical patent/DE69927738D1/de
Publication of DE69927738T2 publication Critical patent/DE69927738T2/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/001Texturing; Colouring; Generation of texture or colour
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Description

  • Diese Erfindung bezieht sich auf interaktive Computergraphiksysteme.
  • Kurven werden häufig als Graphiken in Computergraphiksystemen angezeigt bzw. gezeichnet. Jedoch sind Kurven typischerweise schwierig mit freihändigen Gesten unter Verwendung von Eingabevorrichtungen, wie einer Maus oder einem Graphiktablett zu zeichnen. Unerwünschte Ausbuchtungen oder ebene bzw. flache Abschnitte resultieren häufig.
  • Wenn ein Künstler mit Stift und Papier zeichnet, kann der Künstler eine Kurve durch ein Zeichnen einer weiteren Linie oder Kurve in einem Bereich, welcher unerwünscht ist, modifizieren, wobei der unerwünschte Abschnitt abgedeckt wird. Das wiederholte Hinzufügen von Linien und Kurven wird manchmal als "Skizzieren" bezeichnet. In einem Computergraphiksystem, wo Kurven durch mathematische Formeln dargestellt bzw. repräsentiert sind, kann es unerwünscht sein, eine Kurve über eine andere zu legen, um das Aussehen einer einzigen gewünschten Kurve zu erzielen.
  • Konventionelle Graphiksysteme bieten häufig eine gewisse Kurveneditierfunktionalität. Eine Näherung bzw. ein Zugang ist es, die Kurve neu zu zeichnen. Eine andere ist es, "Steuer- bzw. Regel-Handgriffe" zu manipulieren, welche die Kurve definieren. Beide dieser Näherungen sind häufig zeitaufwendig und unbequem.
  • Ähnliche Probleme existieren beim Editieren von Bürstenstrichen in Computergraphiksystemen. Wiederum ist ein Hinzufügen von Schichten bzw. Lagen von Kurven oder Bürsten- bzw. Pinselstrichen über einen unerwünschten Abschnitt langsam und anfällig für dieselben Fehler, welche den unerwünschten Abschnitt an erster Stelle bewirkt haben.
  • Baudel T.: "A mark based interaction paradigm for free-hand drawing", Symposium on User Interface Software and Technology, 2. November 1994, Seiten 185–192 offenbart eine Wechselwirkungs- bzw. Interaktionstechnik zum Editieren von Splines, in welchen Kurven mittels Markierungen editiert werden können.
  • Jenkins D.L. et al.: "Applying constraints to enforce user's intentions in free-hand 2-D sketches", Intelligent Systems Engineering, Institution of Electrical Engineers, Stevenage, GB, Band 1, Nr. 1, 1992, Seiten 31–49 offenbart ein System, welches Skizzen analysieren und ordnen bzw. aufräumen kann, wie ein Designer sie zeichnet.
  • US 5 640 499 offenbart ein Verfahren eines Editierens einer Zeichnung, die auf einer Anzeigeeinheit eines Computers angezeigt ist, durch ein simultanes bzw. gleichzeitiges Bewegen von mehreren Elementen, die in einem Editierbereich enthalten sind.
  • US 5 594 853 offenbart ein Verfahren und ein System zum Editieren des allgemeinen Bogens und eines Details einer Figur mit einer Kurve.
  • Es ist ein Ziel bzw. Gegenstand der vorliegenden Erfindung, ein Computer-implementiertes Verfahren zum Editieren einer Kurve und eine Vorrichtung zur Verfügung zu stellen, welche ein einfaches und angenehmes bzw. geeignetes Editieren von Kurven ermöglichen.
  • Dieses Ziel wird gemäß der vorliegenden Erfindung durch ein Verfahren, das die in Anspruch 1 geoffenbarten Merkmale aufweist, und eine Vorrichtung gelöst, die die in Anspruch 13 geoffenbarten Merkmale aufweist. Bevorzugte Ausbildungen sind in den abhängigen Unteransprüchen definiert.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung stellt Verfahren und Vorrichtungen zum Editieren einer Kurve oder eines Bürstenstrichs in einem elektronischen Dokument zur Verfügung.
  • Allgemein liefert in einem Aspekt die Erfindung ein Verfahren zum Editieren einer Kurve in einem elektronischen Dokument und eine Vorrichtung zum Implementieren der Verfahren. Das Verfahren umfaßt ein Erhalten einer skizzierten Kurve als Eingabe von einem Benutzer, wobei die skizzierte Kurve zwei Endpunkte hat; ein Identifizieren eines Zielabschnitts einer existierenden Kurve durch ein Finden eines Punkts in der existierenden Kurve, der am nächsten jedem der Endpunkte der skizzierten Kurve ist, wobei der Zielbereich bzw. -abschnitt das Teil der existierenden Kurve zwischen den gefundenen Punkten ist; ein Entfernen des Zielabschnitts von der bestehenden Kurve, wodurch zwei innere Endpunkte in der existierenden bzw. bestehenden Kurve zurückgelassen werden; ein Ausbilden einer Ersatzkurve, wobei die Ersatzkurve zwei Endpunkte aufweist; ein Einsetzen der Ersatzkurve in die bestehende Kurve anstelle des Zielabschnitts; und ein Verbinden bzw. Verkleiden der existierenden Kurve und der Er satzkurve an ihren entsprechenden benachbarten Endpunkten, um einen Spalt an jedem Endpunkt zwischen der existierenden Kurve und der Ersatzkurve zu schließen.
  • Vorteilhafte Implementierungen der Erfindung umfassen bzw. beinhalten eines oder mehrere der folgenden Merkmale. Der Abstand zwischen Punkten wird durch euklidische Abstände gemessen. Ein Verbinden der bestehenden Kurve und der Ersatzkurve beinhaltet ein Verkürzen der Ersatzkurve an jedem Endpunkt der Ersatzkurve; ein Verkürzen der bestehenden Kurve an jedem inneren Endpunkt; und ein Ausbilden von Füll- bzw. Übergangskurven, um die verkürzte Ersatzkurve und die verkürzte bestehende bzw. existierende Kurve zu verbinden. Jedes Ende von jedem Paar von benachbarten verkürzten Enden der bestehenden Kurve und der Ersatzkurve wird um denselben Betrag verkürzt. Jedes der verkürzten Enden wird um einen Betrag verkürzt, der aus der Größe des Spalts berechnet wird, der dem verkürzten Ende benachbart ist. Die Ersatzkurve ist die skizzierte Kurve. Ein Ausbilden bzw. Erzeugen der Ersatzkurve umfaßt bzw. beinhaltet ein Glätten des Zielabschnitts, um die Ersatzkurve auszubilden. Ein Glätten des Zielabschnitts beinhaltet ein Ausbilden einer geordneten Sequenz von Punkten, die den Zielabschnitt darstellen; ein Gruppieren der Punkte der geordneten Sequenz von Punkten in ein oder mehrere aufeinanderfolgende(s) Segment(e) von Punkten; ein Glätten der Punkte von jedem Segment, um ein Segment von geglätteten Punkten zu generieren bzw. zu erzeugen; und ein Einpassen von einer oder mehreren mathematischen Kurve(n) auf jedes Segment von geglätteten Punkten, wobei die eine oder mehreren mathematische(n) Kurve(n) gemeinsam die Ersatzkurve ausbilden. Ein Ausbilden einer geordneten Sequenz von Punkten beinhaltet ein Auswählen von Punkten, so daß ein beabstandeter Abstand zwischen Punkten in der geordneten Sequenz von Punkten nicht einen maximalen Abstand übersteigt, und ein Flachheits- bzw. Ebenheitsabstand zwischen einer geraden Linie, die zwischen zwei aufeinanderfolgenden Punkten in der geordneten Sequenz von Punkten ausgebildet wird, und dem Abschnitt bzw. Querschnitt nicht eine Ebenheitstoleranz übersteigt. Die existierende bzw. bestehende Kurve ist eine Trajektorienkurve eines Pinselstrichs, der eine Um- bzw. Einhüllende aufweist, und das Verfahren beinhaltet weiters ein Berechnen einer neuen Einhüllenden für einen neuen Pinselstrich unter Verwendung der editierten Trajektorienkurve und der Einhüllenden-Information des bestehenden Pinselstrichs.
  • Weiters beinhaltet das Verfahren ein Anzeigen einer Kurve auf einer Anzeigevorrichtung; ein Versehen eines Benutzers mit einem Glättungswerkzeug, das unter Steuerung bzw. Regelung des Benutzers durch ein graphisches Benutzerinterface betätigbar ist; ein Empfangen einer Geste bzw. Bewegung von dem Benutzer, der das Glättungswerkzeug über ein Teil der bestehenden Kurve bewegt, um eine Auswahl des Teils der Kurve anzuzeigen; und ein Glätten des gewählten Teils der Kurve durch ein Anwenden eines Glättungsfilters auf das gewählte Teil der Kurve.
  • Vorteilhafte Implementierungen der Erfindung beinhalten eines oder mehrere der folgenden Merkmale. Das Verfahren stellt dem Benutzer ein Glättungswerkzeug zur Verfügung, das unter einer Steuerung bzw. Regelung des Benutzers durch ein graphisches Benutzer-Interface betätigbar ist, um eine Probe der Kurve auszuwählen, um die gewählte Probe als eine gesonderte bzw. getrennte Kurve zu glätten, und um die geglättete Probe in die Kurve wieder einzupassen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm eines Computers und von Computerelementen.
  • 2 ist ein Flußdiagramm eines Verfahrens zum Generieren bzw. Erzeugen einer ausgefüllten Einhüllenden aus einem von einem Benutzer gezeichneten Strich.
  • 3 ist ein Diagramm eines polygonalen Pinsels.
  • 4A ist eine Seitenansicht einer Zeichnungstafel und eines Stifts.
  • 4B ist eine Draufsicht auf eine Zeichnungstafel und einen Stift.
  • 5 ist ein Diagramm einer polygonalen Näherung an eine Trajektorie.
  • 6 ist ein Flußdiagramm eines Verfahrens zum Generieren einer diskreten Näherung der Einhüllenden eines Strichs.
  • 7 ist ein Flußdiagramm eines Verfahren zum Identifizieren von Punkten auf Pinselbeispielen bzw. Pinselgegenständen, welche am weitesten von einer Seite eines Liniensegments entfernt sind.
  • 8 ist ein Blockdiagramm von Linien, die von einem Liniensegment zu einem Pinsel bzw. Pinselgegenstand gezogen sind.
  • 9 ist ein Flußdiagramm eines Verfahrens zum Verbinden von Punkten, um eine Seite einer Einhüllenden-Näherung auszubilden.
  • 10 und 11 sind Diagramme von polygonalen Näherungen an eine Trajektorie.
  • 12 ist ein Diagramm einer Näherung einer Einhüllenden.
  • 13A und 13B sind Diagramme von Näherungen einer Einhüllenden, die fähig sind, eine Optimierung abzukürzen.
  • 14A, 14B und 14C zeigen eine Technik eines Kurvenglättens, das an einer offenen Sequenz von Punkten angewandt ist bzw. wird.
  • 14D, 14E und 14F zeigen die Technik eines Kurvenglättens, das auf eine geschlossene Sequenz von Punkten angewandt ist.
  • 15 ist ein Flußdiagramm einer Technik eines Kurvenglättens.
  • 16 ist ein Flußdiagramm eines Verfahrens zum Finden von Eckpunkten.
  • 17A ist ein Flußdiagramm eines Verfahrens zum Glätten eines Segments, wenn die ursprüngliche Sequenz von Punkten eine geschlossene Sequenz ist.
  • 17B ist ein Flußdiagramm eines Verfahrens zum Glätten eines Segments, wenn die ursprüngliche Sequenz von Punkten eine offene Sequenz ist.
  • 18 ist ein Flußdiagramm eines Verfahrens zum Fitten bzw. Anpassen von Kurven an geglättete Segmente.
  • 19 illustriert ein Berechnen eines Wiedergabetreue- bzw. Echtheitskriteriums für einen Punkt.
  • 20A illustriert eine Implementierung des Computersystems von 1.
  • 20B bis 20G illustrieren eine Kurve, die modifiziert ist.
  • 21 ist ein Flußdiagramm einer Technik zum Editieren einer Kurve.
  • 22 zeigt ein Verbinden bzw. Verkleiden zwischen einer bestehenden bzw. existierenden Kurve und einer Ersatzkurve aus.
  • 23 ist ein Flußdiagramm einer Technik zum Editieren eines Pinselstrichs.
  • DETAILIERTE BESCHREIBUNG
  • Einhüllende des Pinselstrichs
  • In dem Pinsel-Trajektorien-Modell wird ein Strich durch ein Ziehen eines Pinsels (d.h. einer geschlossenen Form bzw. Gestalt) entlang einer zentralen Trajektorie (d.h. einer Sequenz von Punkten) gebaut. Die Form bzw. Gestalt eines derartigen Strichs ist mathematisch als eine Einhüllende definiert, die den Pfad des Pinsels entlang der Trajektorie einschließt.
  • Bezugnehmend auf 1 umfaßt bzw. beinhaltet ein Computersystem 10 einen Computer 11 für allgemeine Zwecke, beinhaltend ein Pinselstrichverfahren 14 zum Berechnen einer diskreten Näherung bzw. Annäherung einer Näherung 17 einer Einhüllende für einen polygonalen Pinsel 15, welche entsprechend einer beliebigen affinen Transformation entlang einer Trajektorie 60 variiert. Das Pinselstrichverfahren 14 kann beispielsweise als ein Merkmal einer Zeichenanwendung 12 implementiert sein, wie Adobe Illustrator®, erhältlich von Adobe Systems Incorporated in San Jose, CA. Das Computersystem 10 beinhaltet auch einen Monitor 18 zum visuellen Anzeigen einer Ausgabe des Computers 11 und einen Festplattenantrieb 28, um Daten dauerhaft zu speichern. Eingabevorrichtungen beinhalten eine Tastatur 20, eine Maus 22 und eine Zeichentafel 24 in Kombination mit einem Stift 26.
  • Bezugnehmend auf 2 und 3 wählt innerhalb der Zeichenanwendung 12 der Benutzer 10a einen Pinsel 15, mit welchem zu zeichnen ist. Der Pinsel 15 ist eine Datenstruktur, die eine Sequenz bj von J Punkten speichert, wobei j = 1, 2 ... J, und wobei b0 ein Punkt am Ursprung ist. Wie dies in 3 gezeigt ist, ist der Pinsel 15 pentagonförmig mit fünf Punkten 52a–e. Der Punkt 52f befindet sich am Ursprung. Der Benutzer kann mit dem Pinsel 15 unter Verwendung einer Eingabevorrichtung, wie einer Maus 22 oder einer Zeichentafel 24 zeichnen. Die folgende Diskussion nimmt an, daß der Benutzer unter Verwendung eines Stifts 26 auf dem Zeichentablett bzw. der Zeichentafel 24 zeichnet.
  • Wenn der Benutzer den Stift 26 auf die Zeichentafel 24 preßt 40b, was anzeigt, daß der Benutzer dabei ist, einen neuen Strich zu zeichnen, löscht 40c die Zeichenanwendung 12 die Trajektorie 60. Wenn der Benutzer den Stift 26 bewegt, während er den Stift 26 auf die Zeichentafel 24 drückt bzw. preßt, sendet die Zeichentafel 24 periodisch an die Zeichenanwendung bzw. Paint-Anwendung 12 Proben des Orts (d.h. x- und y-Koordinaten), einen Druck (d.h. wie fest der Benutzer den Stift 26 auf die Zeichentafel 24 preßt), und Neigungs- und Azimuth-Winkel des Stifts 26 in bezug auf die Zeichentafel 24 aus. Wie dies in 4A gezeichnet ist, ist die Neigung des Stifts 26 (auch als der Höhen- bzw. Aufrißwinkel bezeichnet) der Winkel 54 aus der Ebene zwischen dem Stift 26 und der Ebene der Zeichentafel 24. Wie dies in 4B gezeigt ist, stellt eine Linie 27 einen "Schatten" des Stifts 26 dar, der auf die Zeichentafel 24 geworfen ist. Der Azimuth-Winkel des Stifts 26 ist der Winkel 56 in der Ebene zwischen einer Ebene senkrecht zu der Ebene der Zeichentafel 24 und der Linie 27.
  • Typische Probennahme- bzw. Abtastgeschwindigkeiten bzw. -raten von Zeichnungstafeln sind im Bereich von 100 Mal pro Sekunde. Jedesmal, wenn eine Probe genommen wird, wird Probeninformation (d.h. Ort, Druck, Neigung und Azimut) zu der Paint- bzw. Zeichenanwendung 12 übermittelt, welche die Probeninformation in eine Trajektorienmatrix umwandelt bzw. transformiert, die eine affine Transformation darstellt bzw. repräsentiert, die auf die Pinseldatenstruktur 15 anzuwenden ist. Die Zeichenanwendung 12 hängt 40d die Trajektorienmatrix an der Trajektorie 60 an, um eine Sequenz von Trajektorienmatrizen auszubilden. Wenn der Benutzer den Stift 26 von der Zeichentafel 24 löst bzw. entfernt 40e, bestimmt die Zeichenanwendung 12, daß der Benutzer das Zeichnen des Strichs beendet hat. Die wiederaufgenommene Trajektorie 60 ist eine Sequenz von Trajektorienmatrizen tk, k = 1, 2 ... K, wo K die Anzahl von Proben ist, die von der Zeichentafel 24 erhalten sind.
  • Eine Trajektorienmatrix tk enthält horizontale und vertikale Skalen bzw. Maßstäbe sx und sy, horizontale und vertikale Offsets bzw. Versetzungen tx und ty und horizontale und vertikale Drehungen bzw. Rotationen rx und ry. Die Form des Pinsels 15 an jedem Punkt entlang der Trajektorie 60 ist definiert als bk,j = tk·bj, wo · eine Matrixmultiplikation bezeichnet. Für ein gegebenes k und für j = 1, 2 ... J definieren daher die Punkte bk,j die Größe und die Form des Pinsels 15 an dem Punkt in der Trajektorie 60, der tk entspricht. Mit anderen Worten ist bk,j das Ergebnis eines Anwendens der affinen Transformation, die durch tk definiert ist, auf die Bürste bzw. den Pinsel 15.
  • Eine Trajektorienmatrix kann von der Probeninformation, die durch die Zeichnungstafel 24 zur Verfügung gestellt ist, auf zahlreiche Weisen abgeleitet werden. Typischerweise werden tx und ty in der Trajektorienmatrix die Werte von x- und y-Koordinaten in der Probeninformation zugewiesen. Den Komponenten sx bzw. sy können zugewiesene Werte proportional der Druckinformation zugewiesen werden, die in der Probeninformation enthalten ist, was es effizient dem Benutzer ermöglicht, die Größe des Pinsels 15 entlang der Trajektorie 60 zu erhöhen oder abzusenken, indem der Druck auf den Stift 26 variiert wird. Die Werte von rx bzw. ry können eine Funktion des Neigungs- und Azimut-Winkels des Stifts sein, was es dem Benutzer effektiv ermöglicht, den Pinsel 1 entlang der Trajektorie 60 zu drehen, indem der Neigungs- und Azimut-Winkel des Stifts 26 verändert werden.
  • Nachdem die Zeichenanwendung 12 ein Generieren bzw. Erzeugen der Trajektorie 60 beendet, ruft 40f die Zeichenanwendung 112 das Pinselstrichverfahren 14 auf, um eine Näherung 17 einer Einhüllenden des Pinsels 15 entlang der Trajektorie 60 zu generieren. Die Zeichenanwendung 12 füllt 112 das Innere der Näherung 17 der Einhüllenden mit einer Farbe oder Textur.
  • Bezugnehmend auf 5 stellt das Pinselstrichverfahren 14 die Trajektorie 60 graphisch als einen Pfad 70 dar. Die Trajektorie 60 hat drei Trajektoriematrizen t1, t2 und t3, die graphisch als Punkte 72a, 72b bzw. 72c dargestellt sind. Die x-y-Koordinaten der Punkte 72a–c entsprechen den t und t Komponenten der Trajektorienmatrizen t1, t2 bzw. t3. Liniensegmente 74a und 74b verbinden aufeinanderfolgende Punkte 72a–c. Die Ergebnisse eines Anwendens der affinen Transformationen, die durch die Trajektorienmatrizen t1, t2, t3 der Trajektorie 60 definiert sind, auf den Pinsel 15 sind graphisch als Pinselbeispiele bzw. -fälle bzw. -instanzen bzw. Pinsel 76a–c dargestellt bzw. repräsentiert. Obwohl das Pinselstrichverfahren 14 nicht den Pfad 70 oder die Pinselbeispiele 76a–c rendern muß, um die Näherung 17 der Einhüllenden zu berechnen, sind der Pfad 70 und die Pinselbeispiele 76a–c hier für Illustrationszwecke gezeigt.
  • Bezugnehmend auf 6 generiert 40f das Pinselstrichverfahren 14 die Näherung 17 der Einhüllenden wie folgt. Das Pinselstrichverfahren 14 findet die Punkte auf den Pinselbeispielen 76a–c, welche am weitesten von der linken Seite des Pfads 70 entfernt sind. Einer variablen Seite wird ein Wert LEFT bzw. LINKS zugewiesen 42a, der anzeigt, daß das Pinselstrichverfahren 14 nach links des Pfads 70 schauen sollte. Das Pinselstrichverfahren 14 initialisiert 42b eine indexierende bzw. Indexiervariable k auf einen Wert von 1. Das Pinselstrichverfahren 14 identifiziert 42c das Liniensegment in dem Pfad 70, das den Punkt, der die Trajektorienmatrix tk-1 repräsentiert, mit dem Punkt verbindet, der die Trajektorienmatrix tk darstellt bzw. repräsentiert, und das Liniensegment in dem Pfad 70, das den Punkt, der die Trajektorienmatrix tk darstellt, mit dem Punkt verbindet, der die Trajektorienmatrix tk+1 darstellt. Für das Beispiel von 5 sind Liniensegmente 74a und 74b identifiziert.
  • Das Pinselstrichverfahren 14 identifiziert 42e die Pinselbeispiele enthaltend die Punkte entsprechend tk-1, tk und tk+1. In dem Fall von 5 sind bzw. werden die Pinselbeispiele 76a, 76b und 76c identifiziert. Für jedes identifizierte Liniensegment findet 42f das Pinselstrichverfahren 14 die Punkte auf den Grenzen der Pinselbeispiele, enthaltend das Liniensegment, welche am weitesten von der Seite des Liniensegments entfernt sind, das durch den Wert der variablen Seite angezeigt ist. Beispielsweise ist in 5 der Punkt 80a der Punkt in dem Pinselbeispiel 76a, der am weitesten nach links von dem Liniensegment 74a entfernt ist, und der Punkt 80b ist der Punkt in dem Pinselbeispiel 76b, welcher am weitesten nach links von dem Liniensegment 71a entfernt ist. Details eines Verfahrens bzw. Prozesses zum Finden von Punkten der Pinselbeispiel 76a–c, die am weitesten von einer Seite des identifizierten Liniensegments entfernt sind, werden in 7 beschrieben. Das Ausbildungsverfahren 40f für eine Einhüllende verbindet 42g Punkte, die in 42f identifiziert sind, wie dies in weiterem Detail unter Bezugnahme auf 9 beschrieben werden wird.
  • Nach einem Verbinden 42g von Punkten wird, wenn die Indexiervariable K nicht K – 1 ist, k inkrementiert bzw. erhöht 42i, und die Steuerung bzw. Regelung kehrt zu dem Verfahren 42c42g zurück, welches wiederholt wird, um ein Generieren des Rests auf einer Seite der Näherung 17 einer Einhüllenden fortzusetzen. Nachdem die linke Seite der Näherung 17 einer Einhüllenden generiert wurde, wird der variablen Seite ein Wert von RIGHT bzw. RECHTS zugewiesen 42k und die rechte Seite der Näherung 17 der Einhüllenden wird entsprechend dem Verfahren 42b42i generiert. Nachdem die rechte Seite der Näherung 17 der Einhüllenden generiert wurde 40f, kehrt das Pinselstrichverfahren 14 zurück, an welchem Punkt die Zeichenanwendung 12 beispielsweise eine Näherung 17 einer Einhüllenden mit einer Farbe oder einem Muster füllen kann.
  • Bezugnehmend auf 7 identifiziert das Pinselstrichverfahren 14 die Punkte in einem Paar von aufeinanderfolgenden Pinselbeispielen, welche am weitesten von einer spezifizierten Seite eines spezifizierten Liniensegments entfernt sind wie folgt. Das Pinselstrichverfahren 14 zeichnet 44a senkrechte Linien von der spezifizierten Seite des Liniensegments zu der Grenze des ersten Pinselbeispiels. Wie dies in 8 gezeigt ist, sind bzw. werden Liniensegmente 78 senkrecht zu der linken Seite des Liniensegments 74a gezeichnet. Das Pinselstrichverfahren 14 wählt 44b als einen ersten Kandidatenpunkt den Punkt auf dem ersten Pinselbei spiel, der mit dem längsten der senkrechten Liniensegmente 78 verbunden ist. Wie dies in 8 gezeigt ist, ist der Liniensegment-Berührungspunkt 80a das längste der Liniensegmente 78, und daher wird der Punkt 80a als der erste Kandidatenpunkt ausgewählt.
  • Das Pinselstrichverfahren 14 zeichnet 44c eine zweite Linie und wählt 44d einen zweiten Kandidatenpunkt auf dem zweiten Pinsel- bzw. Bürstenbeispiel in derselben Weise wie jener aus, die oben beschrieben ist. Das Pinselstrichverfahren 14 zeichnet 44e ein neues Liniensegment zwischen dem ersten und zweiten Kandidatenpunkt und wiederholt die Verfahren 44a44d unter Verwendung des neuen Liniensegments, um einen neuen ersten Kandidatenpunkt und einen neuen zweiten Kandidatenpunkt zu identifizieren 44f. Der neue erste Kandidatenpunkt und der vorherige Kandidatenpunkt werden verglichen 44g. Wenn der neue erste Kandidatenpunkt von dem ersten Kandidatenpunkt abweicht oder der neue zweite Kandidatenpunkt von dem zweiten Kandidatenpunkt abweicht bzw. sich unterscheidet, dann weist 44i das Verfahren 42f den neuen ersten Kandidatenpunkt als den ersten Kandidatenpunkt und den neuen zweiten Kandidatenpunkt als den zweiten Kandidatenpunkt zu, und die Verfahren 44e44g werden wiederholt.
  • Wenn der neue erste und zweite Kandidatenpunkt dieselben wie der erste und zweite Kandidatenpunkte sind, identifiziert 44h das Pinselstrichverfahren 14 den ersten und zweiten Kandidatenpunkt als die Punkte, die am weitesten von der angezeigten Seite des Liniensegments entfernt sind. Wie dies in 5 gezeigt ist, sind bzw. werden die Punkte 80a und 80b als am weitesten nach links von dem Liniensegment 74a entfernt identifiziert, und die Punkte 80b und 80c wer den als am weitesten nach links von dem Liniensegment 74b entfernt identifiziert.
  • Es ist möglich, daß sich die Sequenz der Verfahren 44e44i wiederholen wird, ohne natürlich beendet zu werden. Um diese Möglichkeit zu vermeiden, kann das Pinselstrichverfahren 14 die Schleife beenden, nachdem sie sich mehr als eine vorbestimmte Anzahl von Malen wiederholt hat, und einen der Endpunkte des Liniensegments von der Trajektorie 60 entfernen.
  • Bezugnehmend auf 9 verbindet 42g das Pinselstrichverfahren die Punkte, die in 42f identifiziert sind, um eine Seite der Näherung der Einhüllenden wie folgt auszubilden. Es seien bk-1,w und bk,x die Punkte von bk-1,j bzw. bk,j, welche am weitesten nach links von der Linie (bk-1,w, bk,x) liegen. Beispielsweise ist, wie dies in 5 gezeigt ist, Punkt bk-1,w ein Punkt 80a und Punkt bk,x ist ein Punkt 80b, da die Punkte 80a und 80b die Punkte der Pinselbeispiele 76a bzw. 76b sind, die am weitesten nach links von dem Liniensegment 74a liegen. In gleicher Weise ist Punkt bk,y Punkt 80b und Punkt bk+1,z ist Punkt 80c, da die Punkte 80b und 80c die Punkte von Pinselbeispielen 76b bzw. 76c sind, die am weitesten nach links von dem Liniensegment 74b entfernt liegen.
  • Wenn bei 46a der Punkt bk,x derselbe ist wie Punkt bk,y, dann verbindet 46b das Pinselstrichverfahren 14 den Punkt bk-1,w mit dem Punkt bk,x und verbindet 46c den Punkt bk,x mit dem Punkt bk+1,z. 5 ist ein Beispiel einer Situation, in welcher bk,x derselbe Punkt wie bk,y ist, was in den Liniensegmenten 82a und 82b resultiert.
  • Wenn bei 46d der Punkt bk,x nicht derselbe Punkt wie bk,y ist, jedoch die Pinselbeispiele 76a, 76b und 76c ähnliche relative Ausrichtungen besitzen, dann verbindet 46e das Pinselstrichverfahren 14 Punkt bk-1,w mit Punkt bk,x, verbindet 46f einschließlich alle Punkte zwischen Punkt bk,x und bk,y, und verbindet 46g Punkt bk,y mit Punkt bk+1,z 10 ist ein Beispiel einer Situation, in welcher Punkt bk,x nicht derselbe Punkt wie bk,y ist, jedoch die Pinselbeispiele 84a–c ähnliche Drehausrichtungen besitzen, was in den Liniensegmenten 86a–c resultiert. Wenn zusätzliche Punkte auf dem Bürstenbeispiel 84b zwischen den Punkten bk,x und bk,y vorliegen, dann würden diese Punkte verbunden.
  • Das Pinselstrichverfahren 14 nimmt an, daß drei Pinselbeispiele ähnliche relative Ausrichtungen bei tk aufweisen, wenn und nur wenn: Winkel (bk,x – bk-1,w, bk+1,z – bk,y) < 0 Gleichung 1
  • Für Vektoren a und b ist die Funktion Winkel (a, b) als der bezeichnete Winkel zwischen a und b: Winkel (a, b) = sign(cross (a, b))·arccos(dot(a, b)/(|a||b|)) Gleichung 2
  • Die Funktion cross(a, b) in Gleichung 2 berechnet das Kreuzprodukt der Vektoren a und b. Die Funktion sign(cross(a, b)) in Gleichung 2 berechnet das Vorzeichen des Kreuzprodukts von a und b, was in einem skalaren Wert von entweder +1 oder –1 resultiert. Die Funktion dot(a, b) in Gleichung 2 berechnet das innere Produkt bzw. dot-Pro dukt der Vektoren a und b, welches ein skalarer Wert ist.
  • Die Werte |a| und b in Gleichung 2 stellen die Größen der Vektoren a bzw. b dar. Die Funktion arccos in Gleichung 2 berechnet den arcus cosinus seines Arguments. Das Ergebnis von Gleichung 1 ist, einen skalaren Wert mit Vorzeichen zu erzeugen, der den Winkel mit Vorzeichen zwischen den Vektoren a und b darstellt bzw. repräsentiert.
  • Wenn weder das Kriterium von 46a noch von 46d erfüllt ist, dann verbindet 46h das Pinselstrichverfahren 14 Punkt bk-1,w mit Punkt bk,x, verbindet 46i Punkt bk,x mit Punkt bk,y und verbindet 46j Punkt bk,y mit Punkt bk+1,z. 11 zeigt einen derartigen Fall. Jegliche Punkte zwischen bk,x und bk,y sind bzw. werden nicht verbunden, da sie im Inneren der Einhüllenden liegen und daher überflüssig sind. Punkte bk,x und bk,y sind bzw. werden als Bruchpunkte markiert 46k. Die Liniensegmente, die durch ein Verbinden von Punkten in dem Verfahren 46a258 ausgebildet sind, werden zu der Näherung 17 der Einhüllenden addiert 262.
  • Bezugnehmend auf 12 beinhaltet die resultierende Näherung 17 der Einhüllenden, die dem Pinsel 15 und der Trajektorie 60 entspricht, die in 5 dargestellt ist, Liniensegmente 82a, 82b, 82c und 82d.
  • Gewisse Zeichenanwendungen 12 können eine Kurvenfit-Technik an der Näherung 17 für die Einhüllende anwenden, um eine glatte bzw. stetige Kurve zu erzeugen, die der Näherung 17 der Einhüllenden entspricht. Eine bevorzugte Technik ist unten im Zusammenhang mit 14A19 beschrieben. In derartigen Fällen kann das Pinselstrichverfahren 14 Punkte von der Einhüllenden, welche innerhalb von weniger als einem vorbestimmten Abstand von der Näherung 17 der Einhüllenden liegen, unter Verwendung eines Verfahrens entfernen, das als "abgekürzte bzw. Verkürzungsoptimierung" bezeichnet ist. Beispielsweise wird, indem auf 13A Bezug genommen wird, der Punkt bk,y von der Näherung 17 der Einhüllenden entfernt, wenn der Abstand d2 kleiner als ein vorbestimmter Schwellwert ist, und der Punkt bk,x wird von der Näherung 17 der Einhüllenden gelöscht bzw. entfernt, wenn der Abschnitt d1 geringer als ein vorbestimmter Schwellwert ist. Wenn ein Punkt von der Näherung 17 der Einhüllenden gelöscht bzw. entfernt wird, wird der Punkt, der dem gelöschten Punkt vorhergeht, mit dem Punkt verbunden, der dem gelöschten Punkt folgt. Beispielsweise wird, wenn der Punkt bk,y von der Näherung 17 der Einhüllenden gelöscht wird, dann der Punkt bk-1,w mit dem Punkt bk,x verbunden. Wenn beide Punkte bk,y und bk,x von der Näherung 17 der Einhüllenden entfernt werden, dann wird der Punkt bk-1,w mit dem Punkt bk+1,z verbunden. Wie dies in 13B gezeigt ist, beinhaltet eine lange Trajektorie 90 eine scharfe Ecke 96. Eine der zwei Seiten 92a–b der Näherung der Einhüllenden entsprechend der Trajektorie 90 enthält ein Liniensegment 94, welches für eine Löschung durch eine abgekürzte bzw. Verkürzungsoptimierung anfällig ist.
  • Wenn die Zeichenanwendung 12 eine Kurvenfit-Technik an der Näherung 17 der Einhüllenden anwendet, kann das Pinselstrichverfahren 14 in der Näherung 17 der Einhüllenden die Neigung von jedem Liniensegment in der Einhüllenden speichern, um das Kurvenfit-Verfahren zu unterstützen. Wenn die Verkürzungsoptimierung an der Näherung 17 der Einhüllenden angewandt wird, wie dies oben beschrieben ist, tritt ein Speichern von Neigungen bzw. Abschrägungen auf, nachdem die Verkürzungsoptimierung ausgeführt wurde.
  • Kurvenglätten
  • Bezugnehmend auf 14A bis 14C ist eine Anwendung eines Kurvenglättens an einer ursprünglich offenen Sequenz von Punkten gezeigt. Eine Quelle der ursprünglichen Sequenz von Punkte könnte aus dem Einhüllenden-Bildungsverfahren zur Verfügung gestellt werden, das oben erwähnt ist. In 14A ist die ursprüngliche Sequenz von Punkten 100 eine geordnete Sequenz von Punkten, die als eine Eingabe in einem interaktiven System in Antwort auf Zeichenbewegungen durch einen Benutzer empfangen sind bzw. werden. Ein Rauschfilter kann an der ursprünglichen Sequenz 100 angelegt sein bzw. angewandt werden, um ein Hochfrequenzrauschen zu entfernen, wobei eine Filtersequenz von Punkten 105 generiert bzw. erzeugt. Das Rauschfilter entfernt Hochfrequenzvariationen (d.h. Rauschen), während Kurvenmerkmale niedriger Frequenz beibehalten werden. Die gefilterte Sequenz 105 wird in ein oder mehrere Segment(e) unterteilt. Durch ein Evaluieren der Krümmung an jedem gefilterten Punkt werden Eckpunkte in der gefilterten Sequenz gefunden. In 14A ist ein Eckpunkt 110 in der gefilterten Sequenz 103 vorhanden. Ein erstes Segment von gefilterten Punkten 115 erstreckt sich von einem Endpunkt 120 der Sequenz 100 zu dem Eckpunkt 110. Ein zweites Segment 125 erstreckt sich von den Eckpunkten 110 zu dem zweiten Eckpunkt 130. In den Figuren sind die Punkte von Sequenzen 100 und 105 und von anderen Sequenzen von Punkten durch Liniensegmente verbunden gezeigt. Dies wird nur zur Deutlichkeit der Illustration durchgeführt: die Liniensegmente sind nicht Elemente der Sequenzen von Punkten.
  • Jedes Segment wird geglättet, wie dies in 14B gezeigt ist. Das erste Segment von gefilterten Punkten 115 wird geglättet, um ein erstes geglättetes Segment von Punkten 135 zu generieren. Das zweite Segment von gefilterten Punkten 125 ist bzw. wird geglättet, um ein zweites geglättetes Segment 140 auszubilden bzw. zu generieren. Die geglätteten Segmente 133, 140 sind glatter als die gefilterte Sequenz 105.
  • Kurven werden an die geglätteten Segmente angepaßt bzw. gefittet, wie dies in 14C gezeigt ist. Eine Versuchs- bzw. Testkurve wird erzeugt und die Genauigkeit bzw. Wiedergabetreue der Testkurve mit dem geglätteten Segment wird evaluiert. Wenn die Testkurve nicht ausreichend treu zu bzw. übereinstimmend mit dem geglätteten Segment ist, wird das geglättete Segment in Unter- bzw. Subsegmente unterteilt und das Kurvenpaßverfahren wird für jedes Subsegment wiederholt. So wird das erste geglättete Segment 135 in vier Kurven 145, 150, 155 und 160 unterteilt, die durch Bruchpunkte 147, 152 und 157 getrennt sind. Das zweite geglättete Segment 140 ist einfacher als das erste geglättete Segment 135, so daß eine einzige Kurve 165 fähig war, mit dem zweiten geglätteten Segment 140 übereinzustimmen bzw. sich an dieses anzupassen. Die Kurven 145, 150, 155, 160 und 165 gemeinsam stellen die ursprüngliche Sequenz von Punkten 100 dar.
  • Bezugnehmend auf 14D, 14E und 14F ist das Verfahren für eine geschlossene Sequenz von Punkten gezeigt. Das Gesamtverfahren ist nicht unterschiedlich bzw. verschieden von jenem der offenen Sequenz. Die Details eines Glättens sind unterschiedlich für geschlossene Sequenzen ohne Ecken, wie dies unten beschrieben werden wird. 14D zeigt eine ursprüngliche Sequenz von Punkten 170 und eine gefilterte Sequenz von Punkten 175, die durch Anwenden eines Rauschfilters an die ursprüngliche Sequenz 170 generiert wurde.
  • Es gibt keine Eckpunkte in der gefilterten Sequenz 175. Somit gibt es nur ein Segment von Punkten. Das Segment ist eine geschlossene Sequenz von Punkten. Der Einfachheit halber wird ein Punkt 180, wo die ursprüngliche Sequenz 170 beginnt, sowohl als ein erster als auch ein zweiter Endpunkt des Segments behandelt. 14E zeigt die gefilterte Sequenz von Punkten 175 und ein geglättetes Segment von Punkten 185, das durch ein Glätten des Segments von Punkten 180 generiert wurde, die in 14D gezeigt sind. 14F zeigt das geglättete Segment von Punkten 185, das in zwei Kurven 190, 195 unterteilt ist, getrennt durch einen Bruchpunkt 192 und einen Bruchpunkt 194, der von einem Glätten des Endpunkts 130 abgeleitet wurde. Die zwei Kurven 190, 195 bilden eine Darstellung der ursprünglichen Sequenz von Punkten 170.
  • Bezugnehmend auf 15 beinhaltet ein Verfahren 200 eines Anpassens bzw. Fittens einer Kurve an eine Sequenz von Punkten ein System, welches eine ursprüngliche Sequenz von Punkten 202 erhält bzw. empfängt. Die ursprüngliche Sequenz von Punkten 202 ist eine geordnete Sequenz von Punkten. Das System kann die ursprüngliche Sequenz als eine Eingabe von einer Benutzereingabevorrichtung, wie einer Maus oder einer Graphiktafel in Antwort auf Freihandzeichnungen eines Benutzers erhalten. Alternativ kann die ursprüngliche Sequenz von Punkten 202 von derartigen Quellen, wie einem Datenfile, einer Computer-Softwareanwendung oder einem Signalverarbeitungssystem zugeführt werden.
  • Das System wendet gegebenenfalls ein Rauschfilter auf die ursprüngliche Sequenz von Punkten 200 an, um eine Sequenz von gefilterten Punkten zu generieren (welche auch als eine gefilterte Sequenz bezeichnet werden kann) (Schritt 205).
  • Ein Vorteil eines Rauschfilterns ist, das es große abrupte, isolierte Variationen bzw. Änderungen unter Punkten, wie eine Spitze, isoliert. Diese extremen Änderungen sind sehr wahrscheinlich das Ergebnis eines Benutzerfehlers beim Eingeben der ursprünglichen Sequenz von Punkten oder fehlerhafte oder Rauschdaten, und so ist es allgemein nicht wünschenswert, sie für ein Kurvenfitten beizubehalten.
  • Ein geeignetes und vorteilhaftes Rauschfilter basiert auf einem Tiefpaß-λ-μ-Filter, das in "Optimal Surface Smoothing as Filter Design" durch G. Taubin, T. Zhang, und G. Golub in Technical Report RC-20404, IBM Research, März 1996 eingeführt wurde. Eine Implementierung dieses Rauschfilters ist ein Grad d λ-μ-Filter mit einer Transferfunktion fd(k), die gegeben ist durch fd(k) = ((1 – λk)(1 – μk))d/2 für Frequenzen k, 0 ≤ k ≤ 2,0 < λ < –μ, und d gerade, wobei λ und μ so definiert sind, daß f2(p) = 1 f2(2) = hfür eine Paßbandfrequenz p, 0 < p < 1, und Hochfrequenztoleranz h, 0 ≤ h < 1 gilt. Das Paßband erstreckt sich von k = 0 bis k = p, wo fd(k) ≈ 1. Wenn k von k ≈ p ansteigt auf k = 2, sinkt fd(k) monoton auf hd/2. Somit ist
    Figure 00220001
    Figure 00230001
  • Werte für p, h und d können mit dem erwarteten Rauschspektrum variieren. Für ursprüngliche Sequenzen von Punkten, die als Eingabe von digitalisierten Mäusen und Graphiktafeln bzw. -tableaus erhalten sind, erzeugen p ≈ 1/10, h ≈ < 1/10 und d ≈ 4 gute Ergebnisse mit einem geringem Verlust an Wiedergabetreue.
  • Ein Rauschfiltern wird in mehreren Durchgängen bzw. Schritten an der ursprünglichen Sequenz ausgeführt. Die ursprüngliche Sequenz hat n Punkte und wird als s bezeichnet und jeder Punkt wird als si bezeichnet, wo i = 1, ..., n – 1. Eine Anzahl von Durchgängen gleich dem Grad d der Transfer- bzw. Übertragungsfunktion fd(k) wird für j = 1, ..., d wie folgt ausgeführt s0i = si sji = sj-1i – λΔsj-1i , wo j ungerade ist sji = sj-1i – μΔsj-1i , wo j gerade ist.
  • Das diskrete Laplace Δs der ursprünglichen Sequenz s ist definiert als
    Figure 00230002
  • Wenn die ursprüngliche Sequenz s eine geschlossene Sequenz von Punkten ist, sind bzw. werden die Indizes i, j Modulo n in den Rauschfiltergleichungen oben inkrementiert bzw. erhöht und dekrementiert bzw. verringert. Wenn die ursprüngliche Sequenz s eine offene Sequenz ist, Δsn-1 = 0 Δs0 = 0so daß die Positionen der Endpunkte der ursprünglichen Sequenz invariant bzw. unveränderlich bleiben.
  • Das System dividiert bzw. unterteilt die Sequenz von Punkten (welche in bezug auf ein Rauschen, wie oben beschrieben, gefiltert sein können oder nicht) in ein oder mehrere Segment(e) (Schritt 210). Um dies auszuführen, findet das System Bruchpunkte bzw. Unstetigkeitspunkte in der Sequenz von Punkten. Jeder Endpunkt der Sequenz ist ein Bruchpunkt. Eckpunkte sind ebenfalls Bruchpunkte.
  • Eckpunkte sind Punkte in der Sequenz von Punkten, welche eine hohe erwartete Krümmung aufweisen. Wie dies in 16 gezeigt ist, berechnet beim Ausführen eines Verfahrens 300 zum Finden von Eckpunkten in einer Sequenz von Punkten ein System einen mittleren bzw. durchschnittlichen Winkel für Punkte innerhalb eines bestimmten bzw. gewissen Abstands von einem Punkt 302, welcher dem Punkt 302 in der geordneten Sequenz vorhergeht, und einen mittleren Winkel für Punkte innerhalb desselben Abstands, welche dem Punkt 302 in der geordneten Sequenz nachfolgen (Schritt 305). Alternativ kann der Abstand für vorhergehende und nachfolgende Punkte unterschiedlich sein. Der mittlere Winkel für eine Gruppe von Punkten wird durch ein Mitteln des Winkels von jedem Punkt relativ zu einer Bezugslinie durch den ursprünglichen Punkt 302 berechnet. Die erwartete bzw. abgeschätzte Krümmung des Punkts 302 wird durch Vergleichen dieser durchschnittlichen Winkel (Schritt 310) berechnet. Das System vergleicht die abgeschätzte Krümmung für den Punkt 302 mit einer Krümmungstoleranz (Schritt 315). Punkte, welche eine abgeschätzte Krümmung größer oder gleich der Krümmungstoleranz aufweisen, sind Eckpunkte (Schritt 320). Punkte, welche eine abgeschätzte Krümmung von weniger als der Krümmungstoleranz aufweisen, sind nicht Eckpunkte (Schritt 325).
  • Eine Implementierung eines Eckenfindens basiert auf einem Verfahren in "A Curve Fitting Algorithm for Character Fonts" von K. Itoh und Y. Ohno, in Electronic Publishing, 6(3): 195–206, September 1993. In dieser Implementierung ist die abgeschätzte Krümmung ci –1 ≤ ci ≤ 1 an jedem Punkt si in der ursprünglichen Sequenz definiert als
    Figure 00250001
    wo Vektoren ai und bi Summen von normalisierten Vektordifferenzen zwischen dem Punkt si und vorgehenden und nachfolgenden Punkten sx und sy in einer begrenzten Sehnenlänge von si liegen. Wenn die ursprüngliche Sequenz von Punkten si eine offene Sequenz ist, sind ai und bi definiert als
    Figure 00250002
    wo 0 ≤ x < i derart ist, daß lx+1 > li – l und i < y ≤ n-1, so daß ly-1 < li + l für eine Ecksehnenlängentoleranz l ist. Die Sehnenlänge li für jeden Punkt si ist definiert als li = li-1 + |si – si-1| l0 = 0
  • Wenn die ursprüngliche Sequenz eine geschlossene Sequenz ist, reichen ai und bi über ähnliche durch Sehnenlängen gebundene Indizes x, y Modulo n.
  • Somit sind ursprüngliche Punkte si, wo ci ≥ c, als Eckpunkte für eine Eckwinkeltoleranz c definiert. Werte von l > ≈ f und c ≈ cos(2π/3) bilden allgemein gute Ergebnisse, wobei f eine Wiedergabetreue- bzw. Gütetoleranz ist, die unten unter Bezugnahme auf ein Kurvenfitten beschrieben wird.
  • Das System glättet jedes Segment (Schritt 215). Die Glättungstechnik ist unterschiedlich in Abhängigkeit davon, ob das Segment eine geschlossene Sequenz oder eine offene Sequenz von Punkten ist. Ein Glätten eines Segments entfernt Variationen bzw. Änderungen einer Krümmung einer moderaten und höheren Frequenz, während Variationen niedriger Frequenz beibehalten werden. Das resultierende geglättete Segment kann mit einer oder mehreren Kurven effizient übereinstimmen bzw. zusammenpassen.
  • Ein Segment, welches eine geschlossene Sequenz aufweist, tritt auf, wenn die ursprüngliche Sequenz eine geschlossene Sequenz ist und es keine Eckpunkte in der ursprünglichen Sequenz gibt (siehe 14D bis 14F).
  • Bezugnehmend auf 17A berechnet beim Durchführen eines Verfahrens 400 zum Glätten eines Segments, welches ein geschlossenes Segment von Punkten 402 ist, ein System eine Frequenzraumdarstellung des Segments (Schritt 405). Die Frequenzraumdarstellung wird durch ein Heranziehen einer diskreten Fourier-Transformation des Segments berechnet. Das System glättet die Frequenzraumdarstellung des Segments (Schritt 410). Die Frequenzraumdarstellung ist bzw. wird durch ein Anwenden eines Tiefpaßfilters an die Frequenzraumdarstellung geglättet. Das System invertiert bzw. kehrt die geglättete Frequenzraumdarstellung um (Schritt 415). Die geglättete Frequenzraumdarstellung wird durch Heranziehen einer inversen, diskreten Fourier-Transformation der geglätteten Frequenzraumdarstellung umgekehrt bzw. invertiert. Die invertierte, geglättete Frequenzraumdarstellung ist ein geglättetes Segment 420.
  • Bezugnehmend auf 17B subtrahiert beim Ausführen eines Verfahrens 450 zum Glätten eines Segments, welches ein offenes Segment von Punkten 452 ist, ein System einen linearen Trend von dem Segment 452 (Schritt 455). Das System berechnet eine Frequenzraumdarstellung des subtrahierten Segments (Schritt 460). Die Frequenzraumdarstellung wird berechnet, indem eine diskrete Sinus-Tansformation des Segments herangezogen wird. Die Endpunkte des subtrahierten Segments werden invariant bzw. unveränderlich gehalten und so bildet eine diskrete Sinus-Transformation wünschenswerte Ergebnisse. Das System glättet die Frequenzraumdarstellung des subtrahierten Segments (Schritt 465). Die Frequenzraumdarstellung wird durch ein Anwenden bzw. Anlegen eines Tiefpaßfilters an die Frequenzraumdarstellung geglättet. Das System invertiert die geglättete Frequenzraumdarstellung (Schritt 475). Die geglättete Frequenzraumdarstellung wird durch ein Heranziehen einer inversen, diskreten Sinus-Transformation der geglätteten Frequenzraumdarstellung invertiert. Das System addiert den linearen Trend, welcher vorher subtrahiert wurde, zu der invertierten bzw. umgekehrten, geglätteten Frequenzraumdarstellung hinzu, um ein geglättetes Segment 480 auszubilden (Schritt 475).
  • Eine Implementierung eines Glättens eines Segments von Punkten basiert auf einem Verfahren, das in "Local Reproducible Smoothing Without Shrinkage" von J. Oliensis, in IEEE Transactions of Pattern Analyses and Machine Intelligence, 15(3):307–3232, März 1993 beschrieben ist. Zusätzlich ist die Glättungstechnik in einer Weise beschränkt, die durch Taubin in "Optimal Surface Smoothing as Filter Design", oben erwähnt, vorgeschlagen ist. In dieser Implementierung ist die Reduktion der gesamten spektralen Leistung des Segments durch eine Glättungstoleranz S begrenzt, wo S eine kleine Zahl ist.
  • Für ein geschlossenes Segment tz von m Punkten z = 0, ..., m-1, wird eine diskrete Fourier-Transformation des Segments tz genommen, um die Frequenzraumdarstellung t ^z des Segments zu bilden. Die Frequenzraumdarstellung t ^z ist definiert als
    Figure 00280001
    wo z ungerade ist,
    Figure 00290001
    wo z gerade ist.
  • Diese Darstellung drückt das Segment tz in Termen einer linearen Kombination der Eigenvektoren des Laplace-Operators aus, der oben definiert ist. Für jede Probe t ^z sei vz der entsprechende Eigenwert des Eigenvektors, der mit t ^z in dieser Zerlegung assoziiert ist. vz ist definiert als
    Figure 00290002
  • Die Frequenzraumdarstellung u ^z eines geglätteten Segments uz wird durch Anwenden eines Glättungsfilters berechnet wie folgt u ^z = g(vz)t ^z
  • Eine Tiefpaß-Transferfunktion g ist derart definiert, daß g(v) = 1 wenn v < vw g(v) = g0 wenn v = vw g(v) = 0 wenn v > vw für Frequenzen 0 ≤ v ≤ 2, wobei Konstante w und g0 derart gewählt sind, daß 1 ≤ w ≤ m – 1 und 0 < g0 ≤ 1. Werte von w und g0 sind so gewählt, daß g die gesamte Nicht-DC (d.h. Nicht-Gleichstrom-) -Spektralleistung, die in t ^z vorhanden ist, durch die Glättungstoleranz S so reduziert, so daß das Folgende gilt
    Figure 00300001
  • Die inverse, diskrete Fourier-Transformation der Frequenzraumdarstellung u ^z des geglätteten Segments wird genommen, um das geglättete Segment uz auszubilden.
  • Für ein offenes Segment tz von m Punkten, z = 0, ..., m – 1 wird ein linearer Trend in dem Segment tz subtrahiert, um ein subtrahiertes Segment t'z wie folgt auszubilden
    Figure 00300002
  • Eine diskrete Sinus-Transformation des subtrahierten Segments t'z wird genommen, um die Frequenzraumdarstellung t ^'z des subtrahierten Segments zu bilden. Die Frequenzraumdarstellung t ^'z ist definiert als
    Figure 00300003
  • Diese Darstellung drückt das Segment t'z in bezug auf eine lineare Kombination der Eigenvektoren des Laplace-Operators aus, der oben definiert ist. Für jede Probe t ^'z sei vz der entsprechende Eigenwert des Eigenvektors, der mit t ^'z in dieser Zerlegung assoziiert ist. vz ist definiert als
    Figure 00310001
    vm- 1 = 0
  • Eine Frequenzraumdarstellung u ^'z eines geglätteten Segments u'z wird berechnet, indem ein Glättungsfilter angewandt wird wie folgt u ^'z = g(v)zt ^'z
  • Eine Tiefpaß-Transferfunktion g ist derart definiert, daß g(v) = 1 wenn v < vw g(v) = g0 wenn v = vw g(v) = 0 wenn v > vw für Frequenzen 0 ≤ v ≤ 2, wobei Konstante w und g0 derart gewählt sind, daß 1 ≤ w ≤ m – 1 und 0 < g0 ≤ 1. Werte von w und g0 werden bzw. sind so gewählt, daß g die gesamte Spektralleistung, die in t ^'z vorhanden ist, durch die Glättungstoleranz S reduziert ist, so daß das Folgende gilt
    Figure 00310002
  • Eine inverse, diskrete Sinus-Transformation der Frequenzraumdarstellung des geglätteten Segments uu ^''z wird genommen, um ein subtrahiertes Segment u'z auszubilden. Ein linearer Trend, der zuvor subtrahiert wurde, wird zu u'z addiert, um das geglättete Segment uz auszubilden.
  • In einer Implementierung werden, um von 0(n log n) schnelle Fourier- und Sinus-Transformations-Algorithmen zu nutzen, Segmente durch eine lineare Interpolation zwischen einer ausreichenden Anzahl von benachbarten Punkten aufgesammelt, um eine Anzahl von Punkten gleich einer Potenz von zwei zu besitzen.
  • Das System paßt bzw. fittet eine oder mehrere Kurven an jedes geglättete Segment an (Schritt 220 in 15). Bezugnehmend auf 18 berechnet in einem Verfahren 500 zum Fitten einer Kurve an ein geglättetes Segment 500 ein System eine Testkurve für das geglättete Segment 505 (Schritt 510). Die Testkurve ist eine mathematisch definierte Kurve statt einer Sequenz von Punkten. In einer Implementierung ist die Testkurve eine parametrische Kurve oder eine Bezier-Kurve. Das System berechnet ein Wiedergabetreuekriterium der Testkurve für das geglättete Segment 500 (Schritt 515). Das Güte- bzw. Wiedergabetreuekriterium wird erfüllt, wenn für alle Punkte in dem geglätteten Segment ein Punkt auf der Testkurve vorliegt, der innerhalb eines Abstands von weniger oder gleich einer Wiedergabetreuetoleranz liegt. Wenn das Wiedergabetreuekriterium erfüllt ist, ist die Testkurve ausreichend, zuverlässig bzw. treu für das geglättete Segment 505 und das System speichert die Testkurve als eine Darstellung des geglätteten Segments 505 (Schritt 520). Wenn das Wiedergabetreuekriterium nicht erfüllt ist, unterteilt das System das geglättete Segment 505 in zwei oder mehrere Subsegmente (Schritt 525). Das System wendet dann ein Kurvenpaßverfahren an jedes Subsegment an (Schritt 530).
  • Bezugnehmend auf 19 generiert in einem Verfahren 600 zum Berechnen des Wiedergabetreuekriteriums für eine Testkurve 605 und einen Punkt 610 auf dem geglätteten Segment 612 ein System eine Sequenz von Testpunkten durch ein Abtasten der Testkurve 605. Die Testkurve wird so abgetastet, daß der sagitale Abstand von einer Sehne zwischen aufeinanderfolgenden Punkten zu der Testkurve 605 nicht eine Ebenheitstoleranz übersteigt. Das System findet den normalisierten Abstand des Punkts 610 von dem ersten, nicht gezeigten Endpunkt des geglätteten Segments 612. Der normalisierte Abstand des Punkts 610 repräsentiert den Ort bzw. die Stelle des Punkts 610 auf dem geglätteten Segment 612 relativ zu den Endpunkten des geglätteten Segments, wie 10%, 50% usw. In ähnlicher Weise stellt der normalisierte Abstand eines Testpunkts auf der Testkurve den relativen Ort dieses Testpunkts auf der Testkurve dar. Das System findet dann einen Testpunkt, welcher sich in demselben normalisierten Abstand von einem ersten Endpunkt (nicht gezeigt) der Testkurve 605 befindet, wenn ein derartiger Testpunkt existiert. Wenn ein Testpunkt gefunden ist, wird, wenn der Abstand von dem Testpunkt zu dem Punkt 610 kleiner als die oder gleich der Wiedergabetreuetoleranz ist, das Wiedergabetreuekriterium erfüllt. Wenn kein derartiger Testpunkt gefunden wird, findet das System zwei aufeinanderfolgende Testpunkte 620, 625, welche normalisierte Abstände von dem ersten Endpunkt der Testkurve 605 jeweils kleiner als oder größer als der normalisierte Abstand des Punkts 610 in dem geglätteten Segment 612 sind. Beispielsweise findet, wenn der Punkt 610 einen normalisierten Abstand von 55% aufweist, (was repräsentiert, daß der Punkt 610 55% des Abstands von dem ersten Endpunkt des Segments 612 zu dem zweiten Endpunkt ist) das System zwei Testpunkte, wo ein Testpunkt einen normalisierten Abstand von kleiner 55% aufweist und ein Testpunkt einen normalisierten Abstand von größer 55% aufweist. Das System berechnet eine Sehne 635 zwischen den zwei Testpunkten 620, 625. Das System findet einen Sehnenpunkt 640 auf der Sehne 635, welcher am nächsten zu dem Punkt 610 in dem geglätteten Segment 612 ist. In einer alternativen Implementierung ist der Sehnenpunkt 640 ein Punkt auf der Sehne 635, welcher derselbe normalisierte Abstand von dem ersten Endpunkt der Testkurve 605 ist wie der normalisierte Abstand des Punkts 610 in dem geglätteten Segment 612. Das Wiedergabetreuekriterium ist bzw. wird erfüllt, wenn irgendeines der folgenden Merkmale gilt: (1) der Abstand von dem Punkt 610 in dem geglätteten Segment zu dem Testpunkt 620 ist kleiner als die oder gleich der Wiedergabetreuetoleranz: (2) der Abstand von dem Punkt 610 in dem geglätteten Segment zu dem Testpunkt 625 ist kleiner als die oder gleich der Wiedergabetreuetoleranz: (3) der Abstand von dem Sehnenpunkt 640 ist kleiner als die oder gleich einem Bruchteil der Wiedergabetoleranz, wo der Bruchteil auf der Ebenheitstoleranz basiert.
  • Eine Implementierung eines Kurvenfittens basiert auf einem Verfahren, das in "Real Time Fitting of Hand-Sketched Pressure Brushstrokes" von T. Pudet, in Eurographics Proceedings, 13(3)205–220, 1994 beschrieben ist. In dieser Implementierung berechnet das System Abschätzungen von Tangentenvektoren an Endpunkten des geglätteten Segments unter Verwendung einer lokalen quadratischen Interpolierung über alle Punkte in dem geglätteten Segment innerhalb einer Sehnenlänge θ ≈ 2f der Endpunkte, für eine Wiedergabetreueto leranz f. Das System fittet ein Bezier-Segment als eine Testkurve mit beschränkten bzw. eingespannten Endpunkten und Tangenten an das geglättete Segment unter Verwendung von kleinsten Quadraten mit einer normalisierten Sehnenlängen-Parameterisierung. Die Tangenten-Kontinuitätsbeschränkungen werden durch ein Fitten von sowohl x- als auch y-Komponenten gleichzeitig ausgeführt, indem ein Verfahren verwendet wird, das in "Curve-Fitting with Piecewise Parametric Curves" von M. Plass und M. Stone, Graphics Proceedings, Annual Conferences Series, 17(3):229–239, Juli 1983, beschrieben ist.
  • In dieser Implementierung evaluiert das System die Echtheit bzw. Wiedergabetreue des Fits bzw. der Anpassung unter Verwendung der folgenden Technik. Wie oben beschrieben, wird, wenn der Fit nicht zuverlässig genug ist, das geglättete Segment in zwei Teile unterteilt und die Technik wird rekursiv auf beiden Subsegmenten wiederholt, bis das gesamte geglättete Segment erfolgreich gefittet wurde.
  • Somit ist, wenn das geglättete Segment ϕψ von γ Punkten gegeben ist, ψ = 0, ..., γ-1 mit einer Sehnenlänge ϕψ, und der Testkurve b(T), der Fit echt bzw. zuverlässig genug, wenn für alle ϕψ, ein Ti, 0 ≤ Ti ≤ 1 derart existiert, daß |ϕψ – b(Ti)| ≤ f für die Wiedergabetreuetoleranz f gilt. Spezifisch wird dieser Test wie folgt implementiert.
  • Das System berechnet eine polygonale Näherung bzw. Annäherung der Testkurve b(T) mit einer Flach- bzw. Ebenheit ∊ f, wo 0 < ∊ < 1. Die polygonale Näherung besteht aus a Punkten Φω mit einer Sehnenlänge Θω, wo ω = 0, ..., α – 1 ist. Für jeden Punkt ϕψ in der geglätteten Sequenz Φω ist ein einziger bzw. einzigartiger Punkt in der polygonalen Näherung derart, daß
    Figure 00360001
    Figure 00360002
    ist ein Punkt auf einer Linie durch
    Figure 00360003
    und
    Figure 00360004
    am nächsten zu dem Punkt ϕψ.
  • Durch die Definition der polygonalen Näherung und der Dreiecksungleichung ist b(T) zuverlässig, wobei das Wiedergabetreuekriterium erfüllt ist, das oben beschrieben ist, wenn für alle Punkte ϕψ des geglätteten Segments irgendeine der folgenden Bedingungen gilt bzw. zutrifft
    Figure 00360005
    wo
    Figure 00360006
    auf einer Sehne zwischen
    Figure 00360007
    und
    Figure 00360008
    liegt.
  • Ähnlich zu dem Beendigungstest, der durch Pudet beschrieben ist, kann diese Technik effizient für alle Punkte ϕψ in dem geglätteten Segment in einem Durchgang ausgeführt werden, indem die Punkte ϕω der polygonalen Näherung und die Punkte Φψ des geglätteten Segments parallel gequert werden, wobei dies endet, sobald das Wiedergabekriterium nicht für irgendeinen Punkt Φψ erfüllt ist.
  • Die Länge der polygonalen Näherung variiert umgekehrt mit der √∊. Indem der Wert von ∊ reduziert wird, wird der zusätzliche Aufwand eines Berechnens einer längeren polygonalen Näherung mit der geringeren Wahrscheinlichkeit eines Schließens angeglichen, daß die Kurve nicht zuverlässig genug ist, wenn tatsächlich die Testkurve zufriedenstellend sein kann. Folglich ist ein Wert ∊ = 1/16 zum Erzeugen von allgemein gewünschten Ergebnissen bevorzugt.
  • Editieren von Kurven
  • Bezugnehmend auf 20A bis 20G sind unterschiedliche Aspekte eines Editierens auf Basis von Skizzen in einem Computergraphiksystem gezeigt. Eine Technik eines Editierens auf Basis von Skizzen ersetzt ein Teil einer Kurve mit einer Substitutionskurve. Eine andere Technik glättet einen Abschnitt einer Kurve in Antwort auf eine Zeichnungsgeste eines Benutzers. Eine dritte Technik wendet ein Editieren basierend auf Skizzen an, um Pinselstriche zu editieren. Die Techniken des Kurveneditierens werden unten in dem Kontext einer Computergraphiksystem-Implementierung beschrieben, wo durch eine Kombination von Software und Hardware das System auf eine Benutzereingabe antwortet, um die geeignete bzw. entsprechende Technik auszuführen. In einer vorteilhaften Implementierung stellt das Computergraphiksystem ein Graphikbenutzer-Interface bzw. eine -Schnittstelle ("GUT") zur Verfügung, welche Editierwerkzeuge präsentiert, welche die Technik eines Kurveneditierens ausführen können, wenn sie durch den Benutzer gewählt und angewandt werden.
  • Bezugnehmend auf 20A ist eine Implementierung 700 des Computersystems 10 (1) gezeigt. Das System 10 beinhaltet die Anzeige 18, welche eine Kurve 708 rendert bzw. wiedergibt, welche durch einen Benutzer mit einer Eingabevorrichtung, wie einer Zeichentafel 24 und einem Stift 26 eingegeben wurde (1). Das System 700 stellt verschiedene Editierwerkzeuge zur Verfügung, die durch einen Benutzer durch ein GUI verwendbar sind. Die Werkzeuge beinhalten ein Kurveneditierwerkzeug und ein Kurvenglättungswerkzeug. Die Werkzeuge können Pinselstricheditier- und Pinselstrichglättungswerkzeuge beinhalten oder die Kurveneditier- und -glättungswerkzeuge können auf Pinselstriche angewandt wer den, um die Ergebnisse der Technik für Pinselstriche, die unten beschrieben ist, zu erzielen.
  • Bezugnehmend auf 20B ist eine Kurve 710 gezeigt. Die Kurve 710 (ebenso wie die Darstellungen bzw. Illustrationen in 20C bis 20G) ist auf der Anzeigevorrichtung 18 der Implementierung 700 angezeigt, die in 20A gezeigt ist. Der Benutzer, ein Künstler, kann es wünschen, einen Abschnitt 712 der Kurve 710 zu editieren. Der Künstler zeichnet eine skizzierte bzw. Skizzenkurve 714 nahe dem Abschnitt 712 der Kurve 710, welche der Künstler unter Verwendung eines Kurveneditierwerkzeugs zu verändern wünscht. Wie dies in 20C gezeigt ist, ersetzt durch eine Betätigung des Systems, welches unten beschrieben werden wird, die Skizzenkurve 714 den unerwünschten Abschnitt 712 und eine neue Kurve 716 resultiert.
  • Bezugnehmend auf 20D ist eine weitere bzw. andere Kurve 720 gezeigt. Wiederum kann der Künstler wünschen, einen Abschnitt 725 der Kurve 720 zu verändern. Der Künstler zeichnet eine Skizzenkurve 730 nahe dem unerwünschten Abschnitt 725 der Kurve 720 unter Verwendung eines Glättungswerkzeugs. Wie dies in 20E gezeigt ist, wird der unerwünschte Abschnitt 725 der Kurve 720 geglättet, was in einer neuen Kurve 735 resultiert, welche vorzugsweise glatter als die ursprüngliche Kurve 720 ist.
  • Bezugnehmend auf 20F ist ein Pinselstrich 740 gezeigt. Der Pinselstrich 740 hat eine Trajektorienkurve 745 und eine Einhüllenden-Kurve 750. Die Trajektorienkurve definiert eine Mittellinie, welcher der Pinselstrich 740 folgt. Die Einhüllenden-Kurve 750 wird aus einer oder mehreren Kurve(n) gebildet und ist von einer Modellbürstenform ge bildet, die möglicherweise durch verschiedene eingegebene bzw. Eingabeparameter durch eine Benutzereingabevorrichtung modifiziert ist. Ein Künstler kann wünschen, einen Abschnitt 755 des Pinselstrichs 740 zu verändert. Der Künstler zeichnet eine Skizzenkurve 760 mit einem Pinselstrich-Editierwerkzeug nahe dem Pinselstrich 740. Wie dies in 20G gezeigt ist, ersetzt die Skizzenkurve 760 den Abschnitt 755 der Trajektorienkurve 745 durch eine Betätigung des Systems, welches unten beschrieben werden wird. Das System bildet einen neuen Pinselstrich 765 unter Verwendung einer neuen Trajektorienkurve 770 und einer neuen Einhüllenden-Kurve 775 basierend auf der neuen Trajektorienkurve 770 und Information betreffend die Einhüllende von dem ursprünglichen Pinselstrich 740. Alternativ kann der Abschnitt 755 der Trajektorienkurve 745 geglättet werden, wie dies oben unter Bezugnahme auf 20D und 20E beschrieben ist.
  • Wie dies in 21 gezeigt ist, besitzt ein Editieren, das auf einer Skizze basiert, einer existierenden Kurve sechs allgemeine Schritte. In erster Linie bzw. vorab findet die Benutzerwechselwirkung bzw. -interaktion in dem Kontext einer bestehenden Kurve oder eines Pinselstrichs statt, der zur Ansicht für den Artisten bzw. Künstler dargestellt bzw. angezeigt ist (Schritt 800). Der Künstler macht eine Zeichnungsgeste, welche durch eine Benutzereingabevorrichtung, wie eine Maus oder eine Graphiktafel, aufzeichnet wird. Das Computergraphiksystem interpretiert diese Geste, um eine Skizzenkurve zu generieren bzw. zu erzeugen (Schritt 305). Vorzugsweise ist bzw. wird die Skizzenkurve in dem System angezeigt, wenn der Künstler gestikuliert, um eine dynamische, sichtbare Rückmeldung an den Artisten zur Verfügung zu stellen. Die Skizzenkurve kann in dem System als eine mathematische Kurve, ein geordneter Satz von Punkten oder irgendeine andere Form dargestellt sein, welche den Inhalt der Geste des Künstlers anzeigt.
  • Das System findet einen Zielabschnitt in der existierenden bzw. bestehenden Kurve (Schritt 810). Die Skizzenkurve hat zwei Endpunkte. Das System findet zwei Zielpunkte auf der bestehenden Kurve. Die Zielpunkte sind die Punkte, die am nächsten zu jedem der entsprechenden Endpunkte der Skizzenkurve liegen. Vorzugsweise sind die Zielpunkte die am nächsten liegenden Punkte zu den Modifikations-Endpunkten in einem euklidischen Abstand. Der Abschnitt der existierenden Kurve zwischen den Zielpunkten ist der Zielabschnitt. Die Skizzenkurve kann gegebenenfalls editiert werden (z.B. um einen Haken von einem Ende zu entfernen), bevor das System die Skizzenkurve verwendet. Wenn ein Künstler eine Skizzenkurve nahe mehr als einer existierenden Kurve zeichnet, wählt das System vorzugsweise als die bestehende Kurve die Kurve aus, welche am nächsten zur Skizzenkurve liegt. Alternativ kann der Künstler eine bestehende Kurve durch das Benutzer-Interface des Systems auswählen. Das System bestimmt dann die Zielfunktion für diese gewählte Kurve, trotz möglicherweise anderer existierender Kurven, welche näher zu der Skizzenkurve liegen können.
  • Das System entfernt den Zielabschnitt der bestehenden Kurve (Schritt 815). In einer tatsächlichen Implementierung muß der Zielabschnitt nicht sichtbar von der Anzeige oder irgendwelchen Datenstrukturen entfernt oder gelöscht werden, die die Information der bestehenden Kurve enthalten. Der Zielabschnitt muß nur so markiert werden, daß das System erkennt, daß der Zielabschnitt der bestehenden Kurve in einem späteren Schritt ersetzt werden wird.
  • Das System erzeugt eine Ersatzkurve (Schritt 820). Wenn der Künstler das Kurveneditierwerkzeug gewählt und verwendet hat, ist die Ersatzkurve die Skizzenkurve ohne eine zusätzliche Änderung des Zielabschnitts. Alternativ glättet, wenn der Künstler das Glättungswerkzeug gewählt und verwendet hat, das System den Zielabschnitt und der resultierende, geglättete Zielabschnitt ist die Ersatzkurve.
  • Eine Vielzahl von Glättungsverfahren kann verwendet werden, um den Zielabschnitt zu glätten. Ein Beispiel einer bevorzugten Glättungstechnik ist oben im Zusammenhang mit 14A19 beschrieben. Jedoch können andere bzw. abgewandelte Glättungstechniken verwendet werden, wie ein Anwenden eines Filters an den Zielabschnitt.
  • Die bevorzugte Technik eines Glättens glättet eine geordnete Sequenz von Punkten und fittet eine Kurve an die geglättete Sequenz von Punkten an. Das System generiert eine geordnete Sequenz von Punkten, um den Zielabschnitt darzustellen. Das System wählt eine Anzahl von Punkten für die geordnete Sequenz, die vorzugsweise ein Unter- oder Übersammeln bzw. -abtasten verhindert. Um diese Anzahl zu wählen, wählt das System eine Kandidatennummeranzahl. Das System berechnet eine Kandidatensequenz von Punkten mit einer Anzahl von Punkten gleich der Kandidatenzahl bzw. -anzahl. Wenn der Abstand zwischen Punkten in dieser Kandidatensequenz eine maximale Abstandstoleranz bzw. Toleranz eines maximalen Abstands übersteigt, ist die Kandidatenanzahl zu niedrig und das Verfahren wiederholt mit einer größeren Kandidatenanzahl. Wenn der Abstand akzeptabel ist, berechnet das System Linien zwischen aufeinanderfolgenden Punkten in der Kandidatensequenz. Wenn der Abstand zwischen jeder Linie und dem Zielabschnitt zwischen den zwei Punkten, die die Linie ausbilden, eine Ebenheitstoleranz übersteigen, ist die Kandidatenanzahl zu niedrig und das Verfahren wiederholt mit einer höheren Kandidatenanzahl. Sobald die geordnete Sequenz von Punkten gebildet wurde, bildet das System den geglätteten Zielabschnitt gemäß dem oben beschriebenen Glättungsverfahren bzw. -prozeß.
  • Das System setzt die Ersatzkurve in die bestehende bzw. existierende Kurve anstelle des Zielabschnitts ein (Schritt 825). Da die Ersatzkurve nicht exakt in den Ausschnitt in der bestehenden Kurve passen muß bzw. kann, die durch ein Entfernen des Zielabschnitts gebildet ist, können Spalte zwischen den Endpunkten der Ersatzkurve und der bestehenden Kurve verbleiben. Das System plaziert die Ersatzkurve so, daß der Abstand von den Endpunkten der Ersatzkurve zu den Zielpunkten auf der bestehenden Kurve minimiert wird. In einer Implementierung wird die Ersatzkurve nicht gedreht, wenn sie in den Ausschnitt eingepaßt bzw. gefittet wird, jedoch kann sie horizontal oder vertikal verlagert bzw. verschoben werden.
  • Die Spalte werden durch ein Verkleiden gefüllt (Schritt 830). Das System generiert Verkleidungs- bzw. Übergangskurven, um die Ersatzkurve und die bestehende Kurve glatt miteinander zu verbinden. Sobald das Auffüllen bzw. Verkleiden vollständig ist, ist das Editieren vollständig bzw. abgeschlossen. In einer Implementierung werden Überlagerungskurven unter Verwendung eines Verfahren generiert, das in "A Mark-based Interaction Paradigm for Free-Hand Drawing" von T. Baudel, Proceedings of the ACM Symposium on User Interface Software and Technology, Marina del Rey, Kalifornien, ACM Press, November 1994 beschrieben ist.
  • Bezugnehmend auf 22 ist ein Verkleiden illustriert. Wenn das System den Zielabschnitt berechnete, wurden erste und zweite Endpunkte 900, 902 für den Zielabschnitt auf der bestehenden Kurve 904 gefunden. Die Spalte sind zwischen den Zielendpunkten 900, 902 auf der bestehenden Kurve 904 und den Einsetzendpunkten 906, 908 der Erstatzkurve 910. Das System generiert überlappende bzw. Überlagerungskurven 912, 914, die die bestehende Kurve 904 und die Ersatzkurve 910 verbinden. Um glatte Überlappungen bzw. Überlagerungen auszubilden, entfernt das System kleine Abschnitte von der bestehenden Kurve 904 und der Ersatzkurve 910, was die Spalte aufweitet. Das System findet einen ersten Verkleidungspunkt 916 auf der bestehenden Kurve 904. Das System findet einen zweiten Verkleidungspunkt 918 auf der Ersatzkurve 910. Der erste und zweite Verkleidungspunkt 916, 918 sind Abstände von ihren entsprechenden Endpunkten 900, 906, die basierend auf dem Abstand zwischen den zwei Endpunkten 900, 906 bestimmt sind bzw. werden. Das System findet einen dritten Verkleidungspunkt 920 auf der Ersatzkurve 910. Das System findet einen vierten Verkleidungspunkt 922 auf der bestehenden Kurve 904. Ähnlich zu dem ersten und zweiten Verkleidungspunkt 916, 918 basieren die Abstände zwischen dem dritten und vierten Verkleidungspunkt 920, 922 und ihren entsprechenden Endpunkten 900, 902 auf dem Abstand zwischen diesen Endpunkt 900, 902. Die erste Überlagerungskurve 912 verbindet den ersten Verkleidungspunkt 916 und den zweiten Verkleidungspunkt 918. Die zweite Überlagerungskurve 914 verbindet den dritten Verkleidungspunkt 920 und den vierten Verkleidungspunkt 922. Jede Überlagerungskurve 912, 914 hat vorzugsweise eine Endpunkt-Tangenten-Kontinuität an jedem Endpunkt 916, 918, 920, 922.
  • Das Aufweiten bildet glatte Überlagerungskurven, indem die bestehende Kurve und die Ersatzkurve verkleidet bzw. verbunden werden. Zusätzlich werden Artefakte an einem Ende der Ersatzkurve, wie ein Haken 924, durch ein Aufweiten des Spalts eliminiert. Der Haken 924 kann durch nicht beabsichtigte Gesten bzw. Bewegungen des Künstlers bewirkt sein, wie wenn ein Stift von einer Graphikkarte an dem Ende eines Strichs abgehoben wird.
  • Bezugnehmend auf 23 ist eine Technik für ein Editieren, das auf einer Skizze basiert, eines bestehenden Pinselstrichs 1000 gezeigt. Eine Technik zum Zeichnen von Pinselstrichen ist oben im Zusammenhang mit 113 beschrieben. Ein Pinselstrich beinhaltet eine Trajektorienkurve und eine Einhüllenden-Kurve. Die Trajektorienkurve definiert die Mittellinie des Pinselstrichs. Die Einhüllenden-Kurve wird durch Anwenden einer Einhüllenden-Information auf die Trajektorienkurve ausgebildet. Die Einhüllenden-Information umfaßt bzw. beinhaltet eine oder mehrere affine Matrix (Matrizen) von Einhüllenden-Parametern. Die Einhüllenden-Parameter werden aus Daten berechnet, die vorzugsweise von einer Benutzereingabevorrichtung empfangen bzw. erhalten sind. Die Daten können derartige Information, wie Bewegungsgeschwindigkeit der Vorrichtung, angewandter bzw. aufgebrachter Druck auf die Vorrichtung, Rotation der Vorrichtung und Neigung der Vorrichtung beinhalten. Der Benutzer des Graphiksystems kann Parameter in dem System festlegen, um eine Umwandlung der Daten in die Einhüllenden-Parameter zu steuern bzw. zu regeln. Jede affine Matrix enthält einen oder mehrere Einhüllenden-Parameter. Die Einhüllenden-Parameter sind bzw. werden auf einem Modellpinselstrich für einen Pinselstrich angewandt, der durch den Benutzer gewählt ist, um realistische Pinseleffekte in der Pinselstrichgraphik auszubilden. Die Einhüllenden-Parameter beinhalten derartige Informationen, wie Skalierung bzw. Größe, Versetzung bzw. Offset und Rotation.
  • Das System erhält eine Skizzenkurve (Schritt 1005) und findet einen Zielabschnitt auf der bestehenden Trajektorienkurve (Schritt 1010). Wie oben, ist der Zielabschnitt ein Abschnitt der bestehenden Trajektorienkurve zwischen einem ersten Zielendpunkt und einem zweiten Zielendpunkt. Der erste Zielendpunkt ist ein Punkt auf der bestehenden Trajektorienkurve am nächsten zu dem ersten Endpunkt der Skizzenkurve. Der zweite Zielendpunkt ist ein Punkt auf der bestehenden Trajektorienkurve am nächsten zu dem zweiten Endpunkt der Skizzenkurve. Das System entfernt den Zielabschnitt von der bestehenden Trajektorienkurve (Schritt 1015) und erzeugt eine Ersatzkurve (Schritt 1020). In Abhängigkeit von einer Auswahl durch den Künstler kann die Ersatzkurve die Skizzenkurve sein oder kann ein geglätteter Zielabschnitt sein, der wie oben beschrieben geglättet wurde. Das System setzt die Ersatzkurve in die bestehende Trajektorienkurve anstelle des Zielabschnitts ein (Schritt 1025). Das System verkleidet die Ersatzkurve und die bestehende Trajektorienkurve (Schritt 1030), wie oben beschrieben. Nachdem das Verkleiden bzw. Auffüllen vollständig ist, wurde die bestehende Trajektorienkurve editiert, um eine editierte Trajektorienkurve auszubilden. Alternativ kann die editierte Trajektorienkurve unter Verwendung einer auf Skizzen basierenden Editiertechnik ausgebildet werden, die im Stand der Technik geoffenbart ist.
  • Das System editiert die Einhüllenden-Kurve, um mit der editierten Trajektorienkurve übereinzustimmen bzw. dieser zu entsprechen, was eine neue Einhüllende ausbildet. Das Sy stem bildet neue affine Matrizen durch ein lineares Interpolieren von existierenden affinen Matrizen unter Verwendung von Bogen-Längen des Zielabschnitts der bestehenden Trajektorienkurve und von der editierten Trajektorienkurve (Schritt 1035). Für eine neue affine Matrix auf einer Bogen- bzw. Arcus-Längen-Position auf der editierten Trajektorienkurve findet das System einen Matrixort auf dem Zielabschnitt, welcher mit der neuen Bogen-Längen-Position der affinen Matrix auf der editierten Trajektorienkurve übereinstimmt. Das System findet zwei neue Ziel-Bogen-Längen-Positionen auf dem Zielabschnitt, welche die nächstliegenden Bogen-Längen-Positionen zu dem Matrixort mit entsprechenden existierenden affinen Matrizen und auf gegenüberliegenden Seiten dieses Matrixorts sind. Das System interpoliert dann linear die bestehenden bzw. existierenden affinen Matrizen, welche jenen Ziel-Bogen-Längen-Positionen entsprechen, basierend auf den relativen Abständen von diesen zwei Zielpositionen zu dem Matrixort, um die neue affine Matrix zu generieren. Das System kann Daten von den Daten inkorporieren bzw. eingliedern, die von der Benutzereingabevorrichtung erhalten sind, falls dies notwendig ist, um sicherzustellen, daß die neue Einhüllenden-Kurve mit der ursprünglichen Absicht des Künstlers übereinstimmt, wenn der Pinselstrich zuerst eingegeben wurde.
  • Das System berechnet die neue Einhüllenden-Kurve, indem die neuen affinen Matrizen auf der editierten Trajektorienkurve in der Weise angewandt werden (Schritt 1040), die oben für ein Zeichnen von affinen Pinselstrichen beschrieben wurde. Eine Implementierung berechnet die neue Einhüllende insgesamt entlang der gesamten editierten Trajektorienkurve. Eine alternative Implementierung berechnet die neue Einhüllende für den Abschnitt der Einhüllenden, der der Skizzen kurve entspricht, wobei die Einhüllenden-Abschnitte, falls erforderlich, geglättet werden. Nach einem Berechnen der neuen Einhüllenden ist der editierte Pinselstrich 1045 vollständig.
  • Die Erfindung kann in einer digitalen, elektronischen Schaltung oder in Computer-Hardware, -Firmware, -Software oder Kombinationen davon implementiert sein bzw. werden. Eine Vorrichtung der Erfindung kann in einem Computerprogrammprodukt implementiert sein, das greifbar bzw. körperlich in einer Maschinen-lesbaren Speichervorrichtung zum Ausführen durch einen programmierbaren Prozessor verkörpert ist; und Verfahrensschritte der Erfindung können durch einen programmierbaren Prozessor ausgeführt werden, der ein Programm von Instruktionen ausführt, um Funktionen der Erfindung durch ein Arbeiten bzw. Einwirken auf eingegebene bzw. Eingabedaten und ein Generieren einer Ausgabe auszuführen. Die Erfindung kann vorteilhaft in einem oder mehreren Computerprogramm(en) implementiert sein bzw. werden, das bzw. die auf einem programmierbaren System ausführbar ist bzw. sind, beinhaltend wenigstens einen programmierbaren Prozessor, der gekoppelt ist, um Daten und Instruktionen von einem Datenspeichersystem, wenigstens einer Eingabevorrichtung und wenigstens einer Ausgabevorrichtung zu erhalten bzw. zu empfangen und Daten und Instruktionen zu diesen zu senden bzw. zu übertragen. Jedes Computerprogramm kann in einer Prozeß- oder Gegenstands-orientierten Programmiersprache auf hohem Niveau oder in einer Assemblier- oder Maschinensprache implementiert sein bzw. werden; falls dies gewünscht ist, und in jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein. Geeignete Prozessoren beinhalten in beispielhafter Weise sowohl Mikroprozessoren für allgemeine als auch spezielle Zwecke.
  • Allgemein wird ein Prozessor Instruktionen und Daten von einen Nur-Lesespeicher und/oder einem Direktzugriffsspeicher erhalten. Speichervorrichtungen, die für ein körperliches bzw. greifbares Verkörpern von Computerprogramminstruktionen und Daten geeignet sind, beinhalten alle Formen von nicht flüchtigen Speichern, beinhaltend in beispielhafter Weise Halbleiterspeichervorrichtungen, wie EPROM, EEPROM, und Flash-Speichervorrichtungen, Magnetdisketten, wie interne Festplatten und entfernbare Disketten; magnetooptische Disketten und CD-ROM-Disketten. Jegliche der vorhergehenden können durch ASICs (application-specific integrated circuits, anwendungsspezifische Schaltkreise) ergänzt oder in diese inkorporiert sein.
  • Um eine Wechselwirkung bzw. Interaktion mit einem Benutzer zur Verfügung zu stellen, kann die Erfindung auf einem Computersystem implementiert sein, das eine Anzeigevorrichtung, wie einen Monitor oder LCD-Schirm, um Information dem Benutzer anzuzeigen, und eine Tastatur oder eine Zeigevorrichtung, wie eine Maus oder einen Trackball, aufweist, durch welche der Benutzer eine Eingabe in das Computersystem zur Verfügung stellen kann. Das Computersystem kann programmiert sein bzw. werden, um ein graphisches Benutzer-Interface zur Verfügung zu stellen, durch welches Computerprogramme mit Benutzern wechselwirken. Ein Benutzer kann ein elektronisches Dokument durch das Graphik-Benutzer-Interface manipulieren bzw. bearbeiten, wo ein elektronisches Dokument jedes Stück von Arbeit beinhaltet, das durch ein Anwendungsprogramm ausgebildet bzw. erzeugt oder editiert wurde, und beinhaltet spezifisch ein selbst ausgeführtes Stück an Arbeit, welche, wenn sie in einem Datei- bzw. Filesystem gespeichert wurde, als ein gesondertes bzw. getrenntes File gespeichert wird.
  • Andere Ausbildungen sind innerhalb des Rahmens der folgenden Patentansprüche.

Claims (14)

  1. Computer-implementiertes Verfahren zum Editieren einer Kurve in einem elektronischen Dokument, umfassend: Anzeigen einer bestehenden Kurve (904) auf einer Anzeigevorrichtung; Erhalten einer skizzierten Kurve bzw. Entwurfkurve (910) als Eingabe von einem Benutzer, wo die skizzierte Kurve zwei Endpunkte hat; Identifizieren eines Zielabschnitts bzw. -ausschnitts bzw. -schnitts bzw. Schnittbildes bzw. Durchschreibung bzw. Profils der existierenden Kurve zum Finden eines Punkts auf der existierenden Kurve der am nächsten jedem der Endpunkte der skizzierten Kurve ist, wobei der Zielbereich bzw. -abschnitt der Teil der existierenden Kurve zwischen den gefundenen Punkten ist; Entfernen des Zielabschnitts von der bestehenden Kurve, Zurücklassen von zwei inneren Endpunkten (900, 902) der bestsehenden Kurve; Ausbilden einer Ersatzkurve, wobei die Ersatzkurve zwei Endpunkte aufweist; Einsetzen der Ersatzkurve in die bestehende Kurve anstelle des Zielabschnitts; und Verbinden bzw. Ausrichten bzw. Glätten der existierenden Kurve und der Ersatzkurve an ihren entsprechenden benachbarten Endpunkten, um einen Spalt an jedem Endpunkt zwischen der existierenden Kurve und der Ersatzkurve zu schließen.
  2. Verfahren nach Anspruch 1, wobei der Abstand zwischen Punkten durch euklidische Abstände gemessen wird.
  3. Verfahren nach Anspruch 1, wobei das Verbinden der bestehenden Kurve und der Ersatzkurve umfaßt: Verkürzen der Ersatzkurve an jedem Endpunkt der Ersatzkurve; Verkürzen der bestehenden Kurve an jedem inneren Endpunkt; und Ausbilden von Fillette- bzw. Füll- bzw. Abrundungskurven, um die verkürzte Ersatzkurve und die verkürzte bestehende Kurve zu verbinden.
  4. Verfahren nach Anspruch 3, wobei jedes Ende von jedem Paar von benachbarten verkürzten Enden der bestehenden Kurve der Ersatzkurve um denselben Betrag verkürzt wird.
  5. Verfahren nach Anspruch 3, wobei die verkürzten Enden um einen Betrag verkürzt werden, der von der Größe des Spalts bzw. Zwischenraum bzw. Lücke, der dem verkürzten Ende benachbart ist, berechnet wird.
  6. Verfahren nach Anspruch 1, wobei die Ersatzkurve die skizzierte Kurve ist.
  7. Verfahren nach Anspruch 1, wobei das Ausbilden der Ersatzkurve das Glätten des Zielabschnitts umfaßt, um die Ersatzkurve auszubilden.
  8. Verfahren nach Anspruch 7, wobei das Glätten des Zielabschnitts umfaßt: Ausbilden einer geordneten Sequenz von Punkten, die den Zielabschnitt darstellen; Gruppieren der Punkte der geordneten Sequenz von Punkten in eines oder mehrere aufeinanderfolgende bzw. benachbarte Segmente von Punkten; Glätten der Punkte von jedem Segment, um ein Segment von geglätteten Punkten zu generieren; und Einpassen bzw. Fitten von einer oder mehreren mathematischen Kurven auf jedes Segment von geglätteten Punkten zu einer oder mehreren mathematischen Kurven, die gemeinsam die Ersatzkurve ausbilden.
  9. Verfahren nach Anspruch 8, wobei das Ausbilden einer geordneten Sequenz von Punkten das Auswählen von Punkten derart umfaßt, daß: ein Abstand zwischen Punkten in der geordneten Sequenz von Punkten nicht einen maximalen Abstand übersteigt; und ein Flachheits- bzw. Ebenheitsabstand zwischen einer geraden Linie, die zwischen zwei aufeinanderfolgenden Punkten ausgebildet ist, in der geordneten Sequenz von Punkten und dem Zielabschnitt nicht eine Flachheits- bzw. Ebenheitstoleranz übersteigt.
  10. Verfahren nach Anspruch 1, wobei die bestehende Kurve eine Trajektoriekurve eines Pinselstrichs, der eine Einhüllende aufweist, ist, wobei das Verfahren weiters das Berechnen einer neuen Einhüllenden für einen neuen Pinselstrich unter Verwendung der editierten Trajektoriekurve und der einhüllenden Information des bestehenden Pinselstrichs umfaßt.
  11. Verfahren nach Anspruch 7, weiters umfassend: Bereitstellen eines Glättungswerkzeugs an den Benutzer, das unter Steuerung bzw. Regelung des Benutzers durch ein graphisches Benutzerinterface betätigbar ist, wobei der Schritt eines Erhaltens einer Skizzenkurve als eine Eingabe von einem Benutzer das Empfangen einer Handbewegung des Benutzers, der das Glättungswerkzeug über einen Teil der bestehenden Kurve bewegt, um eine Auswahl des Teils der Kurve anzuzeigen; und wobei der Schritt des Ausbildens einer Ersatzkurve umfasst das Anwenden eines Glättungsfilters auf das gewählte Teil der Kurve, um die Ersatzkurve auszubilden.
  12. Verfahren nach Anspruch 11, weiters umfassend: das Bereitstellen eines Glättungswerkzeugs an den Benutzer, das unter der Steuerung bzw. Regelung des Benutzers durch ein graphisches Benutzerinterface betätigbar ist, um eine Probe der Kurve auszuwählen, um die gewählte Probe als eine gesonderte Kurve zu glätten und um die geglättete Probe in die Kurve wieder einzupassen bzw. wieder einzufitten.
  13. Vorrichtung, umfassend ein Computer-lesbares Speichermedium, das greifbar Programminstruktionen zur Wechselwirkung mit einem Benutzer, der eine Graphik in einer Computerprogrammanwendung editiert, ausbildet, die Vorrichtung Instruktionen umfaßt, die betätigbar sind, um einen programmierbaren Prozessor zu veranlassen: Anzeigen einer bestehenden Kurve (904) auf einer Anzeigevorrichtung; Empfangen einer Skizzenkurve bzw. Entwurfskurve als eine Eingabe von einem Benutzer, wobei die Skizzenkurve zwei Endpunkte aufweist; Identifizieren eines Zielabschnitts bzw. -ausschnitts bzw. -schnitts bzw. Schnittbildes bzw. Durchschreibung bzw. Profils einer existierenden Kurve durch Finden eines Punkts in der bestehenden bzw. existierenden Kurve am nächsten zu jedem der Endpunkte der skizzierten Kurve, wobei der Zielabschnitt der Teil der bestehenden Kurve zwischen den gefundenen Punkten ist; Entfernen des Zielabschnitts von der bestehenden Kurve, Zurücklassen von zwei inneren Endpunkten der bestehenden Kurve; Ausbilden einer Ersatzkurve, wobei die Ersatzkurve zwei Endpunkte aufweist; Einsetzen der Ersatzkurve in der bestehenden Kurve anstelle des Zielabschnitts; und Verbinden bzw. Verbinden durch Ausrichten bzw. Glätten der bestehenden Kurve und der Ersatzkurve an ihren entsprechenden benachbarten Endpunkten durch Verbinden bzw. Zusammenfügen, um einen Spalt an jedem Endpunkt zwischen der bestehenden Kurve und der Ersatzkurve zu schließen.
  14. Vorrichtung nach Anspruch 13, weiters umfassend Instruktionen, die betätigbar sind, um einen programmierbaren Prozessor zu veranlassen: Bereitstellen eines Glättungswerkzeugs an den Benutzer, das unter der Steuerung bzw. Regelung des Benutzers durch ein graphisches Benutzerinterface betätigbar ist; Empfangen einer Geste bzw. Handbewegung von dem Benutzer, der das Glättungswerkzeug über einen Teil der Kurve bewegt, um eine Auswahl des Teils der Kurve anzuzeigen; und Glätten des gewählten Teils der Kurve durch Anwenden eines Glättungsfilters an das ausgewählte Teil der Kurve.
DE69927738T 1998-04-07 1999-03-29 Verfahren und Vorrichtung zum Editieren von skizzierten Kurven Expired - Lifetime DE69927738T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/056,567 US6208355B1 (en) 1998-04-07 1998-04-07 Sketch-based editing of curves
US56567 1998-04-07

Publications (2)

Publication Number Publication Date
DE69927738D1 DE69927738D1 (de) 2006-03-02
DE69927738T2 true DE69927738T2 (de) 2006-07-20

Family

ID=22005279

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69940445T Expired - Lifetime DE69940445D1 (de) 1998-04-07 1999-03-29 Verfahren und Vorrichtung zur Editierung von skizzierten Kurven
DE69927738T Expired - Lifetime DE69927738T2 (de) 1998-04-07 1999-03-29 Verfahren und Vorrichtung zum Editieren von skizzierten Kurven

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69940445T Expired - Lifetime DE69940445D1 (de) 1998-04-07 1999-03-29 Verfahren und Vorrichtung zur Editierung von skizzierten Kurven

Country Status (4)

Country Link
US (1) US6208355B1 (de)
EP (2) EP0953944B1 (de)
JP (1) JP4312295B2 (de)
DE (2) DE69940445D1 (de)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
JP3564371B2 (ja) 2000-09-01 2004-09-08 日本電気株式会社 図形編集装置及び方法
US6628295B2 (en) * 2001-01-31 2003-09-30 Adobe Systems Incorporated Modifying a stylistic property of a vector-based path
US7057615B2 (en) * 2001-06-28 2006-06-06 Microsoft Corporation Method and system for representing and displaying digital ink
US7339597B1 (en) 2002-06-21 2008-03-04 Adobe Systems Incorporated Creating and manipulating related vector objects in an image
US7123269B1 (en) * 2002-06-21 2006-10-17 Adobe Systems Incorporated Modifying vector objects
US8442331B2 (en) 2004-02-15 2013-05-14 Google Inc. Capturing text from rendered documents using supplemental information
US7707039B2 (en) 2004-02-15 2010-04-27 Exbiblio B.V. Automatic modification of web pages
EP1562130A1 (de) * 2004-02-06 2005-08-10 Dassault Systèmes Methode für das Modifizieren einer Kurve in einem CAD-System
US7812860B2 (en) 2004-04-01 2010-10-12 Exbiblio B.V. Handheld device for capturing text from both a document printed on paper and a document displayed on a dynamic display device
US10635723B2 (en) 2004-02-15 2020-04-28 Google Llc Search engines and systems with handheld document data capture devices
US20060098900A1 (en) 2004-09-27 2006-05-11 King Martin T Secure data gathering from rendered documents
US8146156B2 (en) 2004-04-01 2012-03-27 Google Inc. Archive of text captures from rendered documents
US9008447B2 (en) 2004-04-01 2015-04-14 Google Inc. Method and system for character recognition
US8081849B2 (en) 2004-12-03 2011-12-20 Google Inc. Portable scanning and memory device
US20060081714A1 (en) 2004-08-23 2006-04-20 King Martin T Portable scanning device
US7894670B2 (en) 2004-04-01 2011-02-22 Exbiblio B.V. Triggering actions in response to optically or acoustically capturing keywords from a rendered document
US9116890B2 (en) 2004-04-01 2015-08-25 Google Inc. Triggering actions in response to optically or acoustically capturing keywords from a rendered document
US9143638B2 (en) 2004-04-01 2015-09-22 Google Inc. Data capture from rendered documents using handheld device
US7990556B2 (en) 2004-12-03 2011-08-02 Google Inc. Association of a portable scanner with input/output and storage devices
US8713418B2 (en) 2004-04-12 2014-04-29 Google Inc. Adding value to a rendered document
US8489624B2 (en) 2004-05-17 2013-07-16 Google, Inc. Processing techniques for text capture from a rendered document
US8620083B2 (en) 2004-12-03 2013-12-31 Google Inc. Method and system for character recognition
US8874504B2 (en) 2004-12-03 2014-10-28 Google Inc. Processing techniques for visual capture data from a rendered document
US7057616B2 (en) * 2004-04-23 2006-06-06 Microsoft Corporation Using constrained optimization in curve editing
DE102004022320A1 (de) * 2004-05-06 2005-11-24 Daimlerchrysler Ag Elektronische Konstruktionsvorrichtung
US8346620B2 (en) 2004-07-19 2013-01-01 Google Inc. Automatic modification of web pages
EP2067119A2 (de) 2006-09-08 2009-06-10 Exbiblio B.V. Optische scanner, zum beispiel tragbare optische scanner
EP2164013B1 (de) * 2008-09-02 2017-03-01 F. Hoffmann-La Roche AG Verfahren und Vorrichtung zum Festlegen des Profils der Basalrate einer Insulinpumpe
EP2399385B1 (de) 2009-02-18 2019-11-06 Google LLC Automatische informationserfassung wie etwa informationserfassung anhand einer dokumentbewussten vorrichtung
US8447066B2 (en) 2009-03-12 2013-05-21 Google Inc. Performing actions based on capturing information from rendered documents, such as documents under copyright
WO2010105246A2 (en) 2009-03-12 2010-09-16 Exbiblio B.V. Accessing resources based on capturing information from a rendered document
US9081799B2 (en) 2009-12-04 2015-07-14 Google Inc. Using gestalt information to identify locations in printed information
US9323784B2 (en) 2009-12-09 2016-04-26 Google Inc. Image search using text-based elements within the contents of images
USD642587S1 (en) 2010-04-30 2011-08-02 American Teleconferencing Services, Ltd. Animated graphical user interface for a portion of a display screen
US10372315B2 (en) 2010-04-30 2019-08-06 American Teleconferencing Services, Ltd Location-aware conferencing with calendar functions
US8626847B2 (en) 2010-04-30 2014-01-07 American Teleconferencing Services, Ltd. Transferring a conference session between client devices
US9082106B2 (en) 2010-04-30 2015-07-14 American Teleconferencing Services, Ltd. Conferencing system with graphical interface for participant survey
USD656507S1 (en) 2010-04-30 2012-03-27 American Teleconferencing Services, Ltd. Display screen portion with an animated image
USD656506S1 (en) 2010-04-30 2012-03-27 American Teleconferencing Services, Ltd. Display screen portion with an animated image
US9189143B2 (en) 2010-04-30 2015-11-17 American Teleconferencing Services, Ltd. Sharing social networking content in a conference user interface
US9419810B2 (en) 2010-04-30 2016-08-16 American Teleconference Services, Ltd. Location aware conferencing with graphical representations that enable licensing and advertising
USD642586S1 (en) 2010-04-30 2011-08-02 American Teleconferencing Services, Ltd. Portion of a display screen with a user interface
USD656504S1 (en) 2010-04-30 2012-03-27 American Teleconferencing Services, Ltd. Display screen portion with an animated image
US9106794B2 (en) 2010-04-30 2015-08-11 American Teleconferencing Services, Ltd Record and playback in a conference
US9560206B2 (en) 2010-04-30 2017-01-31 American Teleconferencing Services, Ltd. Real-time speech-to-text conversion in an audio conference session
USD656505S1 (en) 2010-04-30 2012-03-27 American Teleconferencing Services, Ltd. Display screen portion with animated image
USD656941S1 (en) 2010-04-30 2012-04-03 American Teleconferencing Services, Ltd. Display screen portion with an animated image
US10268360B2 (en) 2010-04-30 2019-04-23 American Teleconferencing Service, Ltd. Participant profiling in a conferencing system
USD656942S1 (en) 2010-04-30 2012-04-03 American Teleconferencing Services, Ltd. Display screen portion with an animated image
CN103384898A (zh) * 2010-06-21 2013-11-06 约翰·吉利斯 计算机实现的工具箱系统和方法
CN102332173B (zh) * 2011-09-13 2013-03-27 浙江万朋网络技术有限公司 一种基于向量代数的简明软笔效果生成方法
JP2015043159A (ja) * 2013-08-26 2015-03-05 シャープ株式会社 タッチパネル装置及び表示装置
JP6472171B2 (ja) * 2013-08-27 2019-02-20 キヤノン株式会社 画像処理装置およびその方法
KR102255049B1 (ko) * 2013-11-19 2021-05-25 가부시키가이샤 와코무 잉크 데이터의 생성, 잉크 데이터의 렌더링, 잉크 데이터의 조작, 및 잉크 데이터의 전달을 위한 방법 및 시스템
CN106462982B (zh) * 2014-05-30 2019-07-12 株式会社迅销 图像处理终端、图像处理系统及非临时存储介质
US10930045B2 (en) 2017-03-22 2021-02-23 Microsoft Technology Licensing, Llc Digital ink based visual components
US10380175B2 (en) 2017-06-06 2019-08-13 International Business Machines Corporation Sketch-based image retrieval using feedback and hierarchies
KR102197652B1 (ko) * 2018-12-14 2021-01-04 네이버웹툰 유한회사 선따기 훈련 데이터 생성 방법, 시스템 및 컴퓨터 프로그램
US20230419567A1 (en) * 2022-06-23 2023-12-28 Adobe Inc. Generating chain pull painting styles in digital applications

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4620287A (en) * 1983-01-20 1986-10-28 Dicomed Corporation Method and apparatus for representation of a curve of uniform width
GB2244892B (en) * 1990-06-08 1994-12-14 Electronic Graphics Ltd Computer graphics
US5594855A (en) * 1992-02-11 1997-01-14 Macromedia, Inc. System and method for generating real time calligraphic curves
US5367617A (en) * 1992-07-02 1994-11-22 Microsoft Corporation System and method of hybrid forward differencing to render Bezier splines
JPH06176122A (ja) * 1992-12-09 1994-06-24 Casio Comput Co Ltd 図形編集装置
US5594853A (en) * 1995-01-03 1997-01-14 University Of Washington Method and system for editing the general sweep and detail of a figure with a curve
US5940083A (en) * 1997-04-01 1999-08-17 Novell, Inc. Multi-curve rendering modification apparatus and method
US6100904A (en) * 1997-06-25 2000-08-08 Adobe Systems Incorporated Curvature smoothing

Also Published As

Publication number Publication date
JPH11328431A (ja) 1999-11-30
EP1612735B1 (de) 2009-02-18
US6208355B1 (en) 2001-03-27
EP0953944A2 (de) 1999-11-03
JP4312295B2 (ja) 2009-08-12
EP1612735A1 (de) 2006-01-04
DE69927738D1 (de) 2006-03-02
DE69940445D1 (de) 2009-04-02
EP0953944B1 (de) 2005-10-19
EP0953944A3 (de) 2003-07-09

Similar Documents

Publication Publication Date Title
DE69927738T2 (de) Verfahren und Vorrichtung zum Editieren von skizzierten Kurven
US6067094A (en) Brushstroke envelopes
DE69332286T2 (de) Verfahren und Vorrichtung zur Verarbeitung von Farbbildern
DE19837004C1 (de) Verfahren zum Erkennen von Objekten in digitalisierten Abbildungen
DE69312401T2 (de) Vorrichtung und verfahren zur erzeugung von linien von variabler breite
DE102007021711A1 (de) System und Verfahren zum Identifizieren von ursprünglichen Entwurfselementen unter Benutzung von 3D-Abtastdaten
DE102017009276A1 (de) Erzeugen eines dreidimensionalen modells aus einem gescannten gegenstand
DE69802802T2 (de) Verfahren und vorrichtung zum ändern der farbe eines bildes
DE102019001695A1 (de) Generieren von verbesserten Digitalbildern durch selektives Transformieren von Rasterbildern in Vektorzeichnungssegmente
DE69521436T2 (de) Vorrichtung und verfahren für die wiedergabe von terrainmodellen
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
DE102006058016A1 (de) Verfahren zur reversen Modellbildung unter Benutzung von Gitterdaten als Merkmal
DE69331419T2 (de) Bilddatenverarbeitung
DE69329316T2 (de) Gerät und Verfahren zur graphischer Darstellung von Flächen
DE69427809T2 (de) Vorrichtung und Verfahren zur graphischen Darstellung
DE69130302T2 (de) Verfahren und Einrichtung zur Verarbeitung von skalaren Daten
DE112022002952T5 (de) Füllen eines netzlochs
DE10132618A1 (de) Computergestütztes Verfahren zur Vektorisierung von Rasterbildern
DE602004001882T2 (de) Verfahren zur Unterteilung eines Maschengitters oder Polygonzuges
DE60305027T2 (de) Verfahren zur Bereitstellung eines Vektorbildes mit entfernten versteckten Linien
DE69525117T2 (de) Ecke-zu-Ecke-Mischung
EP0908056B1 (de) Verfahren und vorrichtung zur bearbeitung von bildpunkten eines bildsegments durch einen rechner
DE60204807T2 (de) Verfahren und System zur Erzeugung und Bearbeitung eines harmonisierten Netzes von Punkten
DE69323471T2 (de) Bilddatenverarbeitung
EP0960390B1 (de) Verfahren und anordnung zur kodierung eines digitalisierten bildes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition