DE69727200T2 - Verfahren und Program zur Erzeugung und Modifizierung von Kurven auf einen Rechnerbildschirm - Google Patents

Verfahren und Program zur Erzeugung und Modifizierung von Kurven auf einen Rechnerbildschirm Download PDF

Info

Publication number
DE69727200T2
DE69727200T2 DE69727200T DE69727200T DE69727200T2 DE 69727200 T2 DE69727200 T2 DE 69727200T2 DE 69727200 T DE69727200 T DE 69727200T DE 69727200 T DE69727200 T DE 69727200T DE 69727200 T2 DE69727200 T2 DE 69727200T2
Authority
DE
Germany
Prior art keywords
curve
point
points
offset
line
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
DE69727200T
Other languages
English (en)
Other versions
DE69727200D1 (de
Inventor
Martin E. Palo Alto Newell
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 DE69727200D1 publication Critical patent/DE69727200D1/de
Publication of DE69727200T2 publication Critical patent/DE69727200T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

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

Landscapes

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

Description

  • HINTERGRUND
  • Die Erfindung bezieht sich auf das Erzeugen und Modifizieren von Kurven auf einer Computeranzeige.
  • Kurven in Grafikprogrammen – wie beispielsweise das Programm Illustrator von Adobe Systems Incorporated, San Jose, Kalifornien – können von einem Benutzer unter Ausführung einer freihändigen Bewegung einer Maus auf einer Computeranzeige erzeugt werden. Im Allgemeinen werden derartige Kurven als Konstrukte von Steuerpunkten dargestellt. Beispielsweise werden für ein Bezier-Kurvensegment dritter Ordnung (wie in 12 gezeigt) vier Steuerpunkte verwendet, von welchen die zwei Steuerpunkte P0 und P3 Segmentendpunkte sind (durch welche das Kurvensegment verläuft), und die zwei Steuerpunkte P1 und P2 Anstiegspunkte sind, die den Anstieg des Kurvensegments bei den Segmentendpunkten P0 und P3 definieren.
  • Eine zusammengesetzte Kurve kann gebildet werden, indem mehrere Bezier-Kurvensegmente verknüpft werden. Bei einigen dem Stand der Technik entsprechenden Systemen, wie beispielsweise bei dem Illustrator-System von Adobe, kann ein Benutzer eine zusammengesetzte Kurve modifizieren, indem Steuerpunkte ausgewählt und gezogen werden. Die angefaßten Punkte bewegen sich dann um den Abstand, der vom Cursor festgelegt wird. Bei anderen Systemen, wie beispielsweise dem in US-Patent US-A-5,412,770 diskutierten, kann ein Punkt auf einer Kurve fixiert werden und ein Segment der Kurve kann neu gestaltet werden, indem ein Cursor auf einer Computeranzeige bewegt wird. Bei einem weiteren, dem Stand der Technik entsprechenden System kann eine zusammengesetzte Kurve modifiziert werden, indem ein Steuerpunkt gezogen wird, nachdem feststehende Punkte auf der zusammengesetzten Kurve spezifiziert worden sind.
  • ZUSAMMENFASSENDE DARSTELLUNG
  • Im Allgemeinen zeigt die Erfindung in einem Aspekt ein computerimplementiertes Verfahren zum Modifizieren einer Kurve als Reaktion auf eine Benutzeraktion über eine graphische Benutzerschnittstelle in einem Computersystem. Die Kurve wird durch eine Mehrzahl von Steuerpunkten definiert. Jeder der Steuerpunkte wird als Reaktion auf eine Benutzereingabe als ein feststehender Steuerpunkt, ein ausgewählter Steuerpunkt oder ein freier Steuerpunkt gekennzeichnet. Es wird eine Verschiebung einer Mehrzahl von ausgewählten Punkten erhalten. Ein freier Steuerpunkt der Kurve wird auf einen Punkt Tp auf einer Linie t abgebildet. Eine Interpolationskurve IC(t) wird auf der Linie t definiert. Der Punkt Tp wird auf den Wert der Interpolationskurve IC(t) bei t gleich Tp projiziert, um einen Skalierungsfaktor zu finden. Der Skalierungsfaktor wird mit der Verschiebung der ausgewählten Punkte multipliziert, um die Verschiebung des freien Steuerpunkts zu bestimmen.
  • Im Allgemeinen zeigt die Erfindung in einem weiteren Aspekt ein computerimplementiertes Verfahren zum Modifizieren einer Mehrzahl von Kurven als Reaktion auf eine Benutzeraktion über eine graphische Benutzerschnittstelle in einem Computersystem, wobei jede Kurve durch eine Mehrzahl von Steuerpunkten definiert wird. Jeder der Steuerpunkte wird als Reaktion auf eine Benutzereingabe als ein feststehender Steuerpunkt, ein ausgewählter Steuerpunkt oder ein freier Steuerpunkt gekennzeichnet. Es wird eine Verschiebung eines ausgewählten Punkts jeder Kurve erhalten. Ein freier Steuerpunkt jeder Kurve wird auf einen Punkt einer entsprechenden Linie einer Mehrzahl von Linien abgebildet. Auf jeder Linie wird eine Interpolationskurve definiert. Der Punkt auf jeder Linie wird auf die entsprechende Interpolationskurve projiziert, um für jeden freien Steuerpunkt einen Skalierungsfaktor zu finden. Die Skalierungsfaktoren werden mit der Verschiebung der ausgewählten Steuerpunkte multipliziert, um die Verschiebungen der freien Steuerpunkte zu bestimmen.
  • Im Allgemeinen zeigt die Erfindung in einem weiteren Aspekt ein computerimplementiertes grafisches Benutzerschnittstellenverfahren zum Erzeugen eines Bezier-Kurvensegments auf einer Anzeige in einem Computersystem. Es wird eine Auswahl eines ersten Segmentendpunkts über eine grafische Benutzer schnittstelle in dem Computersystem erhalten. Die Position eines Cursors auf der Computeranzeige wird als ein zweiter Segmentendpunkt erhalten. Der erste und der zweite Anstiegspunkt werden so berechnet, dass das Bezier-Segment, das durch den ersten und den zweiten Segmentendpunkt und den ersten und zweiten Anstiegspunkt definiert wird, sich einem Bogen annähert. Das berechnete Bezier-Kurvensegment wird auf einer Computeranzeige angezeigt.
  • Im Allgemeinen zeigt die Erfindung in einem weiteren Aspekt ein auf einem computerlesbaren Medium befindliches Computerprogramm zum Modifizieren einer Kurve als Reaktion auf eine Benutzeraktion über eine grafische Benutzerschnittstelle in einem Computersystem. Die Kurve wird durch eine Mehrzahl von Steuerpunkten definiert. Das Computerprogramm enthält Instruktionen, die das Computersystem veranlassen, als Reaktion auf eine Benutzereingabe jeden der Steuerpunkte als einen feststehenden Steuerpunkt, einen ausgewählten Steuerpunkt oder einen freien Steuerpunkt zu kennzeichnen. Die Instruktionen veranlassen das Computersystem ebenfalls, eine Verschiebung einer Mehrzahl von ausgewählten Punkten zu erhalten, einen freien Steuerpunkt der Kurve auf einen Punkt Tp auf einer Linie t abzubilden und eine Interpolationskurve IC(t) auf der Linie t zu definieren. Die Instruktionen veranlassen das Computersystem ferner, den Punkt Tp auf den Wert der Interpolationskurve IC(t) bei t gleich Tp zu projizieren, um einen Skalierungsfaktor zu finden, und der Skalierungsfaktor wird mit der Verschiebung der ausgewählten Punkte multipliziert, um die Verschiebung des freien Steuerpunkts zu bestimmen.
  • Im Allgemeinen zeigt die Erfindung in einem weiteren Aspekt ein auf einem computerlesbaren Medium befindliches Computerprogramm zum Modifizieren einer Mehrzahl von Kurven als Reaktion auf eine Benutzeraktion über eine grafische Benutzerschnittstelle in einem Computersystem. Jede Kurve wird durch eine Mehrzahl von Steuerpunkten definiert. Das Computersystem enthält Instruktionen, die das Computersystem veranlassen, als Reaktion auf eine Benutzereingabe jeden der Steuerpunkte als einen feststehenden Steuerpunkt, einen ausgewählten Steuer punkt oder einen freien Steuerpunkt zu kennzeichnen. Die Instruktionen veranlassen das Computersystem ebenfalls, eine Verschiebung eines ausgewählten Punkts jeder Kurve zu erhalten, einen freien Steuerpunkt jeder Kurve auf einen Punkt einer entsprechenden Linie einer Mehrzahl von Linien abzubilden und eine Interpolationskurve auf jeder Linie zu definieren. Die Instruktionen veranlassen das Computersystem ferner, den Punkt auf jeder Linie auf die entsprechende Interpolationskurve zu projizieren, um einen Skalierungsfaktor für jeden freien Steuerpunkt zu finden, und die Skalierungsfaktoren mit der Verschiebung der ausgewählten Steuerpunkte zu multiplizieren, um die Verschiebungen der freien Steuerpunkte zu bestimmen.
  • Im Allgemeinen zeigt die Erfindung in einem weiteren Aspekt ein auf einem computerlesbaren Medium befindliches Computerprogramm zum Erzeugen eines Bezier-Kurvensegments. Das Computerprogramm enthält Instruktionen, die das Computersystem veranlassen, eine Auswahl eines ersten Segmentendpunkts über eine grafische Benutzerschnittstelle in einem Computersystem zu erhalten und die Position eines Cursors auf einer Computeranzeige als einen zweiten Segmentendpunkt zu erhalten. Die Instruktionen veranlassen das Computersystem außerdem, einen ersten und einen zweiten Anstiegspunkt so zu berechnen, dass das Bezier-Segment, das durch den ersten und den zweiten Segmentendpunkt und den ersten und zweiten Anstiegspunkt definiert wird, sich einem Bogen annähert, und das berechnete Bezier-Kurvensegment auf einer Computeranzeige anzuzeigen.
  • Im Allgemeinen zeigt die Erfindung in einem weiteren Aspekt ein computerimplementiertes Verfahren zum Modifizieren einer Kurve als Reaktion auf eine Benutzeraktion über eine grafische Benutzerschnittstelle in einem Computersystem, wobei die Kurve durch eine Mehrzahl von Steuerpunkten definiert wird und zwei Kurvenendpunkte aufweist. Es wird ein Anstiegseinstellungspunkt definiert, und über die grafische Benutzerschnittstelle wird eine Verschiebung des Anstiegseinstellungspunkts erhalten. Ein Steuerpunkt der Kurve wird auf einen Punkt Tp auf einer Linie t abgebildet, eine Interpolationskurve IC(t) wird auf der Linie t definiert. Der Punkt Tp wird auf den Wert der Interpolationskurve IC(t) bei t gleich Tp projiziert, um einen Skalierungsfaktor zu finden, und der Skalierungsfaktor wird mit der Verschiebung der ausgewählten Punkte multipliziert, um die Verschiebung des freien Steuerpunkts zu bestimmen.
  • Im Allgemeinen zeigt die Erfindung in einem weiteren Aspekt ein auf einem computerlesbaren Medium befindliches Computerprogramm zum Modifizieren einer Kurve als Reaktion auf eine Benutzeraktion über eine grafische Benutzerschnittstelle in einem Computersystem, wobei die Kurve durch eine Mehrzahl von Steuerpunkten definiert wird. Das Computerprogramm enthält Instruktionen, die das Computersystem veranlassen, einen Anstiegseinstellungspunkt zu definieren und eine Verschiebung des Anstiegseinstellungspunkts über die grafische Benutzerschnittstelle zu erhalten. Die Instruktionen veranlassen das Computersystem ferner, einen Steuerpunkt der Kurve auf einen Punkt Tp auf einer Linie t abzubilden, eine Interpolationskurve IC(t) auf der Linie t zu definieren, den Punkt Tp auf den Wert der Interpolationskurve IC(t) bei t gleich Tp zu projizieren, um einen Skalierungsfaktor zu finden, und den Skalierungsfaktor mit der Verschiebung der ausgewählten Punkte zu multiplizieren, um die Verschiebung des freien Steuerpunkts zu bestimmen.
  • Zu den Vorteilen, die die Erfindung bietet, gehören einer oder mehrere der folgenden. Es können mehrere feststehende Punkte spezifiziert werden und es können mehrere ausgewählte Punkte ausgewählt werden und als eine Gruppe starr bewegt werden. Es können Punkte auf mehreren Kurven ausgewählt und bewegt werden. Die Punkte der Kurve werden so bewegt, dass die allgemeine Form und die Details der ursprünglichen Kurve und die Stetigkeit der Übergänge zwischen den Segmenten der Kurve erhalten bleiben. Ein Benutzer kann jeden beliebigen Abschnitt einer zu modifizierenden Kurve auswählen und die Gleichmäßigkeit der übrigen Kurve bleibt erhalten. Der Anstieg einer zusammengesetzten Kurve an den Endpunkten kann eingestellt werden.
  • Weitere Merkmale und Vorteile der Erfindung werden aus der folgenden Beschreibung und aus den Ansprüchen ersichtlich werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist eine grafische Darstellung, die die Veränderung einer zusammengesetzten Kurve auf einer Computeranzeige zeigt.
  • 2A ist eine grafische Darstellung, die ein Zwei-Schritt-Abbildungsmodell darstellt, das verwendet wird, um die Verschiebung der eine zusammengesetzte Kurve definierenden Steuerpunkte als Reaktion auf die Bewegung ausgewählter Segmentendpunkte definieren zu berechnen.
  • 2B ist ein Flußdiagramm des Zwei-Schritt-Abbildungsmodells.
  • 2C ist ein Flußdiagramm des Abstandsabbildungsverfahrens, das in dem Zwei-Schritt-Abbildungsmodell verwendet wird.
  • 2D ist eine grafische Darstellung eines Zwei-Schritt-Abbildungsmodells der Modifizierung des Anstiegs einer zusammengesetzten Kurve an einem Kurvenendpunkt.
  • 2E ist ein Flußdiagramm des Zwei-Schritt-Abbildungsmodells der Modifizierung des Anstiegs einer zusammengesetzten Kurve an einem Kurvenendpunkt.
  • 3 ist eine grafische Darstellung eines Projektionsabbildungsverfahrens zum Abbilden von Punkten auf einer zusammengesetzten Kurve auf eine orthogonale Linie.
  • 4 ist ein Flußdiagramm des Projektionsabbildungsverfahrens.
  • 5 ist eine grafische Darstellung, die die Bewegung einer zusammengesetzten Kurve zeigt, wobei mehrere Steuerpunkte ausgewählt und starr als eine Gruppe bewegt werden.
  • 6 ist eine grafische Darstellung, die die Bewegung einer Kurve mit geschlossenem Verlauf zeigt.
  • 7A ist eine grafische Darstellung, die die Bewegung einer zusammengesetzten Kurve mit disjunkten Gruppen bewegter Punkte zeigt.
  • 7B ist eine grafische Darstellung, die die Veränderung von zwei zusammengesetzten Kurven zeigt.
  • 8 ist eine grafische Darstellung, die die Modifizierung des Anstiegs einer zusammengesetzten Kurve an einem Kurvenendpunkt zeigt.
  • 9A ist ein Flussdiagramm eines Verfahrens zum Erzeugen eines Bezier-Kurvensegments.
  • 9B ist eine grafische Darstellung, die ein Bezier-Kurvensegment zeigt, das von einem Benutzer erzeugt wird.
  • 10A ist eine grafische Darstellung eines Bezier-Kurvensegments mit zugeordneten Steuerpunkten und Vektoren.
  • 10B ist eine grafische Darstellung einer zusammengesetzten Kurve mit mehreren Bezier-Kurvensegmenten.
  • 11 ist eine Blockdarstellung eines Computersystems.
  • 12 ist eine grafische Darstellung eines Bezier-Kurvensegments.
  • DETAILLIERTE BESCHREIBUNG
  • Wenn in einem Grafikprogramm, das die vorliegende Erfindung beinhaltet, ein Abschnitt einer zusammengesetzten Kurve ausgewählt wird, damit er auf eine von einem Benutzer festgelegte Art und Weise modifiziert oder verzerrt wird, werden andere Abschnitte der Kurve modifiziert, damit die allgemeine Form und die Details und die Stetigkeit der Übergänge zwischen den Segmenten der gesamten Kurve erhalten bleiben. Wenn beispielsweise eine zusammengesetzte Kurve hunderte Kurvensegmente enthält, die viele Details in der Kurve definieren, behält das Programm nach der Modifizierungsoperation die Details der ursprünglichen zusammengesetzten Kurve bei. Mit dem Programm muß der Benutzer die Segmente der zusammengesetzten Kurve nicht manuell einstellen, um die Details und die Stetigkeit der Kurve zu erhalten.
  • Außerdem gestattet das Programm einem Benutzer auch die Einstellung des Anstiegs einer zusammengesetzten Kurve an ihren Kurvenendpunkten. Es wird ein Anstiegseinstellungspunkt bereitgestellt, welchen der Benutzer auswählen kann, um den Anstieg um jeden beliebigen gewünschten Betrag zu modifizieren.
  • Es wird auf 1 Bezug genommen; eine zusammengesetzte Kurve besteht aus einer Anzahl von Kurvensegmenten, die an den Enden verbunden sind. Um die Konventionen darzustellen, die beim Kennzeichnen der Teile einer Kurve verwendet werden, weist die zusammengesetzte Bezier-Kurve 30 drei Bezier-Segmente 22, 23 und 24 auf. Die Endpunkte der Segmente werden mit dem Buchstaben E, dem eine Zahl folgt, gekennzeichnet: in diesem Beispiel sind dies die Segmentendpunkte E1 bis E4. Die Kurvenendpunkte sind E1 und E4. Ein Segmentendpunkt, der kein Kurvenendpunkt ist, wird von zwei Segmenten gemeinsam benutzt: in diesem Beispiel sind dies E2 und E3. Zusätzlich zu den Endpunkten weisen die Bezier-Segmente eine weitere Art eines Steuerpunkts, den Anstiegspunkt, auf. Jedem Endpunkt in einem Segment ist ein Anstiegspunkt zugeordnet. In dem in 12 gezeigten Bezier-Segment sind den Endpunkten P0 und P3 die Anstiegspunkte P1 beziehungsweise P2 zugeordnet. In der Kurve 30 von 1 werden die Anstiegspunkte, welchen ein Endpunkt En zugeordnet ist, als En+ und En– gekennzeichnet. Beispielsweise ist der Anstiegspunkt des Segments 22, der E2 zugeordnet ist, E2–, während der Anstiegspunkt des Segments 23, der E2 zugeordnet ist, E2+ ist. Wenn eine Kurve oder ein Abschnitt einer Kurve bewegt wird, werden Steuerpunkte bewegt. Die Steuerpunkte in ihrer neuen Position nach der Bewegung werden durch einen Apostroph gekennzeichnet. Wenn zwei Bewegungen gezeigt werden, werden die zweiten Positionen von zwei Apostrophen gekennzeichnet und so weiter. In 1 werden die neuen Steuerpunkte E3', E3+' und E4' gezeigt. Ein Segmentendpunkt kann ebenfalls allgemein als P gekennzeichnet werden, und seine zugeordneten Anstiegssteuerpunkte als P+ und P–. Ferner kann der Anstieg der zusammengesetzten Kurve an ihren Kurvenendpunkten ebenfalls vom Benutzer eingestellt werden, indem er etwas auswählt, was als „Pseudo"-Anstiegspunkte bezeichnet wird, welche nachstehend in Zusammenhang mit 2D, 2E und 8 beschrieben werden.
  • Wenn ein Benutzer eine Kurve bewegt, markiert der Benutzer jeden Steuerpunkt als einen der drei Typen: ausgewählt, frei und feststehend. Normalerweise sind alle Steuerpunkte gemäß Vorgabe frei, und Benutzeraktionen markieren (über die grafische Benutzerschnittstelle des Programms) explizit bestimmte Steuerpunkte als ausgewählt oder feststehend. Die Anstiegspunkte der Kurvensegmente sind für den Benutzer auf der grafischen Benutzerschnittstelle des Programms unsichtbar und können somit nicht als ausgewählt oder feststehend markiert werden. Alternativ können die Segmentendpunkte als feststehende Punkte vorgegeben sein (während Anstiegspunkte als freie Punkte vorgegeben sein können), wobei der Benutzer markieren muß, welche Segmentendpunkte frei oder ausgewählt sind.
  • Ausgewählte Punkte sind jene Punkte, die als starre Gruppe durch eine vom Benutzer spezifizierte Verschiebung bewegt werden. Feststehende Punkte sind jene Punkte, die sich nicht bewegen. Freie Punkte sind alle anderen Punkte, deren Verschiebungen berechnet werden, wie beschrieben werden wird. Jedoch die freien Punkte (einschließlich der Anstiegspunkte E1+ und E2–), die ausschließlich durch feststehende Punkte gebunden sind, bleiben an der Stelle. Außerdem bewegen sich freie Punkte, die ausschließlich durch ausgewählte Punkte gebunden sind, normalerweise mit den ausgewählten Punkten – in Abhängigkeit vom Charakter der Kurvenmodifizierung. Freie Segmentendpunkte werden so bewegt, dass die allgemeine Form der Kurve erhalten bleibt. Freie Anstiegspunkte werden so bewegt, dass die stetigen Übergänge zwischen den Kurvensegmenten erhalten bleiben.
  • Es wird auf 2A2C Bezug genommen; ein Programm bestimmt die Verschiebungen jedes freien Endpunkts P zusammen mit den zugeordneten Anstiegspunkten P– und P+ unter Verwendung eines Algorithmus, der eine Zwei-Schritt-Abbildungsfunktion ausführt. Es wird auf 2B Bezug genommen; bei Schritt 400 erhält das Programm eine Verschiebung V eines ausgewählten Endpunkts oder ausgewählter Endpunkte auf einer zusammengesetzten Kurve. Als Nächstes bestimmt das Programm bei Schritt 401, ob es zwei oder mehr disjunkte Gruppen von Punkten gibt. Bei einer Bewegungsoperation, die mehrere disjunkte, zu verändernde Gruppen von Punkten einbezieht, werden mehrere separate Abbildungen ausgeführt. Zwei Gruppen von ausgewählten Punkten werden als disjunkt betrachtet, wenn sie durch einen feststehenden Punkt getrennt sind. Ferner können disjunkte Gruppen von Steuerpunkten auch auftreten, wenn mehrere zusammengesetzte Kurven gleichzeitig bewegt werden. Im Falle mehrerer Kurven wird bei jeder zusammengesetzten Kurve davon ausgegangen, dass sie wenigstens eine disjunkte Gruppe von Steuerpunkten enthält.
  • Wenn nicht mehrere disjunkte Gruppen von Steuerpunkten vorhanden sind, dann werden bei Schritt 402 die Steuerpunkte auf der zusammengesetzten Kurve auf Punkte auf einem Einheitsliniensegment t [0, 1] abgebildet, wie in 2A gezeigt, indem entweder ein Abstandsabbildungsverfahren (2C) oder ein Projektionsabbildungsverfahren (3A und 3B) verwendet wird. Jeder Segmentendpunkt Ep (oder einfach P) auf der zusammengesetzten Kurve wird auf einen als Tp bezeichneten Punkt auf t abgebildet; jeder Anstiegspunkt Ep+ oder Ep– (oder einfach P+ oder P–) auf einen Parameter Tp+ oder Tp–.
  • Als Nächstes wird bei Schritt 403 eine Interpolationskurve IC auf t definiert. Die Punkte Tp werden bei Schritt 404 senkrecht von t auf die Interpolationskurve IC projiziert, um die Werte der Parameter Cp zu erhalten. Jeder wert Cp ist die Ordinate der Interpolationskurve IC, bewertet bei t = Tp.
  • Die Punkte Tp– und Tp+, die den Anstiegspunkten P– und P+ zugeordnet sind (das Präfix E für die Steuerpunkte wird zur Übersichtlichkeit weggelassen), werden bei Schritt 404 senkrecht von t zum Schneiden der Tangente auf IC bei t = Tp projiziert, um die Parameter Cp– und Cp+ zu erhalten. Cp– und Cp+ sind die Ordinaten der Tangente bei t = Tp– beziehungsweise Tp+.
  • Die Form der Interpolationskurve IC(t) bestimmt den Wert der Parameter Cp, Cp– und Cp+ und somit den Betrag der Verschiebung jedes der freien Punkte. Im Allgemeinen ist eine kubische Interpolationskurve IC(t) für die meisten Anwendungen optimal, die Bezier-Segmente dritter Ordnung einbeziehen. Eine anders geformte Interpolationskurve, wie beispielsweise ein Polynom fünften Grades oder sogar eine Sinuskurve, veranlassen die freien Punkte, sich anders zu bewegen. Die Auswahl der Form der Interpolationskurve IC(t) ist anwendungsspezifisch und wird normalerweise vom Hersteller des Grafikprogramms vorgenommen, um das optimale Verhalten der freien Punkte für die spezifische Anwendung zu erzeugen. Wenn die Interpolationskurve IC(t) festgelegt ist, dann wird dieselbe Interpolationskurve, die auf dem Liniensegment t definiert ist, für alle Kurvenverzerrungsoperationen verwendet.
  • 2A zeigt eine Interpolationskurve IC, die einem Abschnitt 300 einer zusammengesetzten Kurve zugeordnet ist, wobei Punkt Ee ein ausgewählter Punkt und Punkt Ea ein feststehender Punkt ist. Für weitere freie Punkte, die sich von dem ausgewählten Punkt Ee zu einem weiteren feststehenden Punkt erstrecken, wird die Interpolationskurve IC von Ce hinunter bis zu der Linie t auf der anderen Seite des Punkts Ee erweitert, damit im Allgemeinen eine glockenförmige Kurve gebildet wird.
  • Wenn mehrere (N) disjunkte Gruppen vorhanden sind, dann wird bei Schritt 405 jede Gruppe von Steuerpunkten auf die Punkte Tp, Tp– und Tp+ auf einem entsprechenden Einheitsliniensegment der Einheitsliniensegmente t1–tN abgebildet. Als Nächstes werden bei Schritt 406 auf der Linie t1–tN die Interpolationskurven IC(t1)–IC(tN) definiert, und bei Schritt 407 werden die Punkte auf den Liniensegmenten t1–N1 wiederum auf die Parameter Cp, Cp– und Cp+ auf den Interpolationskurven IC(t1)–IC(tN) abgebildet. Erneut wird in jedem Fall dieselbe Interpolationskurve IC verwendet, wie auf dem Liniensegment t [0, 1] definiert.
  • Ab Schritt 404 oder 407 berechnet das Programm die Verschiebungen für jeden freien Steuerpunkt P, P– und P+ unter Verwendung der Parameter Cp, Cp– und Cp+. Bei Schritt 412 bewegt dann das Programm die freien Punkte um die berechneten Verschiebungen.
  • Bei Schritt 410 werden die Verschiebungen mit Hilfe der neuen Positionen P–', P' und P+' ausgedrückt, wobei die Parameter Cp–, Cp oder Cp+ als Skalierungsfaktoren verwendet werden, um die Vektorverschiebung V zu skalieren. Jede skalierte Verschiebung wird dann zu dem entsprechenden Originalpunkt ad diert, um die neuen Punkte P–', P' und P+' abzuleiten, wie in den Gleichungen 1–3 gezeigt wird. P–' = P– + V*Cp– (Gl. 1) P' = P + V*Cp (Gl. 2) P+' = P+ + V*Cp+ (Gl. 3)
  • Eine Bedingung bei der Abbildung der Abfolge der Steuerpunkte, die die zusammengesetzte Kurve definieren, auf das Liniensegment t besteht darin, dass die Abbildung monoton und achsenunabhängig erfolgen muß. Somit muß für jeden gegebenen Segmentendpunkt P Gleichung 4 erfüllt sein. (Tp+ – Tp)/(Tp – Tp–) = |(P+ – P)|/|(P – P–)| (Gl. 4)
  • Gleichung 4 gewährleistet, dass dann, wenn die Vektoren (P+ – P) und (P – P–) in der ursprünglichen zusammengesetzten Kurve kollinear sind (wie es für eine gleichmäßige Bezier-Kurve erforderlich ist), die Vektoren in der verzerrten Kurve kollinear bleiben.
  • Es wird auf 2A Bezug genommen; der Prozeß von 2B wird nachstehend auf einen „krümmbaren" Abschnitt 300 einer zusammengesetzten Kurve angewendet, das heißt, den Abschnitt zwischen dem feststehenden Punkt Ea und dem ausgewählten Punkt Ee. Die anderen Segmentendpunkte Eb, Ec und Ed und die Anstiegspunkte Ea+, Eb–, Eb+, Ec–, Ec+, Ed–, Ed+ und Ee– sind freie Punkte, deren Verschiebungen berechnet werden. In dem ersten Abbildungsschritt (Schritt 402) werden der feststehende Segmentendpunkt Ea und der ausgewählte Segmentendpunkt Ee auf die Parameter Ta und Te abgebildet, und die freien Punkte Ea+, Eb–, Eb, Eb+, Ec–, Ec, Ec+, Ed–, Ed, Ed+ und Ee– werden auf die Parameter Ta+, Tb–, Tb, Tb+, Tc–, Tc, Tc+, Td–, Td, Td+ beziehungsweise Te– entlang der Linie t abgebildet.
  • In 2A wird die Abstandsabbildung verwendet, um die Steuerpunkte der Kurve 300 auf die Linie t abzubilden. Es wird ferner auf 2C Bezug genommen; bei Schritt 420 wird zuerst ein Polygon 302 definiert, welches Liniensegmente enthält, die durch die Steuerpunkte Ea, Ea+, Eb–, Eb, Eb+, Ec–, Ec, Ec+, Ed–, Ed, Ed+, Ee– und Ee verlaufen.
  • Als Nächstes wird bei Schritt 422 die Gesamtlänge L des Polygons 302 berechnet. Dann wird bei Schritt 424 für jeden Punkt P, P– oder P+ eine Länge Dp, Dp– oder Dp+ (die Länge des Polygons 302 von Punkt Ea bis Punkt Ep, Ep– oder Ep+) berechnet. Bei Schritt 426 wird der Parameter Tx (x = a, a+, b–, b, b+, c–, c, c+, d–, d, d+, e–, e) berechnet, indem ein Abstand Dx (Länge des Polygons 302 von Punkt Ea bis Punkt Ex) über die Gesamtlänge L des Polygons 302 dividiert wird. So hat beispielsweise der Parameter Ta den Wert Null, da die Länge von Punkt Ea zu sich selbst Null ist. Der Parameter Ta+ ist die Länge Da+ des Polygons 302 von Punkt Ea zu Punkt Ea+, dividiert durch die Gesamtlänge des Polygons 302. Der Parameter Tb– ist die Länge Db– des Polygons 302 von Punkt Ea bis Ea+ und von Ea+ bis Eb–, dividiert durch die Gesamtlänge L des Polygons 302. Die anderen Parameter Tb bis Te werden auf ähnliche Weise berechnet. Da das Liniensegment t zwischen 0 und 1 definiert ist, ist der Wert des Parameters Te1.
  • Tatsächlich veranlaßt die Abstandsabbildung, dass die Punkte Ea bis Ee auf der geraden Linie t gemäß dem euklidischen Abstand zwischen jedem Punkt abgebildet werden.
  • 2A zeigt die Abbildung auf das Liniensegment t zwischen den Werten 0 und 1. Alternativ könnte die Abbildung auf ein Liniensegment t zwischen jeglichen zwei beliebigen Werten erfolgen, solange die Abstandsverhältnisse zwischen den Steuerpunkten auf dem Polygon erhalten werden.
  • Obwohl ein Vorteil der Abstandsabbildung in ihrer Einfachheit besteht, hat sie auch ihre Grenzen. Eine Beschränkung der Abstandsabbildung besteht darin, dass die Verzerrung der zusammengesetzten Kurve nicht reversibel ist. Wenn somit beispielsweise dann ein ausgewählter Steuerpunkt zur Verzerrung der Kurve durch einen Vektor V bewegt wird, und der Punkt dann durch den entgegengesetzten Vektor –V bewegt wird, kehren die Kurvensteuerpunkte nicht immer an ihre ursprünglichen Orte zurück, wenn die Abstandsabbildung verwendet wird.
  • Die Projektionsabbildung, ein weiteres Abbildungsmodell zum Abbilden von Punkten auf die Linie t, vermeidet diese Beschränkung in bestimmten Fällen. Es wird auf 3 und 4 Bezug genommen; bei Schritt 450 erhält das Programm zuerst einen Vektor U, der die Bewegungsrichtung eines ausgewählten Punkts oder ausgewählter Punkte definiert. Somit zeigt der Vektor U in die Richtung der Bewegung des Segmentendpunkts Eh bei einer zusammengesetzten Kurve 304, die durch die Segmentendpunkte Ef, Eg, Eh, Ei und Ej (und die zugeordneten Anstiegspunkte Ef+, Eg–, Eg+, Eh–, Eh+, Ei+ und Ej–) definiert ist, wobei der Segmentendpunkt Eh der ausgewählte Punkt ist und die Punkte Ef und Ej die ersten benachbarten feststehenden Punkte sind.
  • Unter Verwendung der Projektionsabbildung zur Bestimmung der Parameter Tf, Tg, Th, Ti und Tj wird bei Schritt 452 definiert, dass die Linie t senkrecht zum Vektor U liegt. Als Nächstes wird bei Schritt 454 jeder der Steuerpunkte Ef, Ef+, Eg–, Eg, Eg+, Eh–, Eh, Eh+, Ei–, Ei, Ei+, Ej– und Ej auf die Linie t entlang einem Pfad projiziert, der parallel zum Vektor U verläuft, um einen entsprechenden Parameter Tf, Tf+, Tg–, Tg, Tg+, Th–, Th, Th+, Ti–, Ti, Ti+, Tj– und Tj zu erhalten.
  • Somit bildet die Projektionsabbildung Steuerpunkte entlang entsprechender paralleler Vektoren auf einer orthogonalen Linie t ab, während die Abstandsabbildung versucht, die Parameter Tp, Tp– und Tp+ gemäß den relativen Abständen der Steuerpunkte voneinander auf einer zusammengesetzten Kurve zu definieren.
  • Es kann ein weiteres Abbildungsmodell zum Abbilden auf die Linie t verwendet werden. Bei diesem dritten Modell werden unter der Annahme, dass es N + 1 Steuerpunkte gibt, die Steuerpunkte derart auf die gerade Linie abgebildet, dass der Abstand zwischen jedem Steuerpunkt gleich ist, das heißt, der Abstand zwischen jedem Steuerpunkt beträgt 1/N. Dieses dritte Abbildungsmodell hat den Vorteil, dass es vollständig reversibel ist. Jedoch ist die Form der zusammengesetzten Kurve, die aus einer Verzerrungsoperation resultiert, in hohem Maße von der Lage der Steuerpunkte abhängig. Wenn die Steuerpunkte im Allgemeinen über die gesamte zusammengesetzte Kurve gleich verteilt sind, dann ist die Verzerrung der Kurve über ihre gesamte Länge gleichmäßig. Wenn jedoch einige Steuerpunkte in Clustern zusammengebündelt sind, während andere Steuerpunkte weiter entfernt sind, dann könnte es abruptere Veränderungen in der Form der Kurve nach der Verzerrungsoperation geben.
  • Wenn die Parameter Ty ( y = f, f+, g–, g, g+, h–, h, h+, i–, i, i+, j– und j) für die Steuerpunkte der zusammengesetzten Kurve 304 abgeleitet sind, bestimmt das Programm bei Schritt 456, ob die Parameter entlang der Linie t monoton sind, das heißt, Tf ist kleiner als Tf+, Tf+ ist kleiner als Tg–, Tg– ist kleiner als Tg und so weiter. Wenn die Parameter Ty monoton sind, wird nichts weiter unternommen. Andernfalls werden die nicht-monotonen Punkte Tp, Tp– oder Tp+ bei Schritt 458 um dem Punkt Tp herum, an welchem die Projektionsabbildung nicht-monoton wurde, umgeklappt. So sind in 3A die Parameter Tf und Tf+ jeweils größer im Wert als der Parameter Tg für den Punkt Eg. Um die Abbildung monoton zu gestalten, werden die Parameter Tf und Tf+ um den Punkt herum „aufgefaltet", an welchem die Abbildung die Richtung (in diesem Fall Parameter Tg–) zu den neuen Parametern Tf' beziehungsweise Tf+' umkehrt. Nach dem Auffalten ist der Abstand zwischen Tg– und Tf' derselbe wie der Abstand zwischen Tg– und Tf, und der Abstand zwischen Tg– und Tf+' ist derselbe wie der Abstand zwischen Tg– und Tf+.
  • Die Projektionsabbildung ist reversibel, da für Verschiebungen in entgegengesetzte Richtungen die Linie t, auf welche die Punkte projiziert werden, dieselbe ist (das heißt, senkrecht zu den Vektoren, durch welche die ausgewählten Punkte gezogen werden), und daher sind die t-Werte dieselben. Folglich werden die Verzerrungen der Kurve genau umgekehrt, wenn eine Kurve zuerst durch einen Vektor U gezogen wird, gefolgt von einem Zug durch einen Vektor –U, ohne irgendeine dazwischenliegende Operation.
  • Die Projektionsabbildung ist rechenintensiver als die Abstandsabbildung. Bei einer typischen Benutzerinteraktion wird der Pfad, durch welchen die ausgewählten Punkte zur Verzerrung der zusammengesetzten Kurve gezogen werden, wahrscheinlich keiner geraden Linie folgen, sondern statt dessen wird der Pfad des Cursors bei einer einzelnen Zugoperation als eine Folge mehrerer Vektorverschiebungen V1, V2, ..., Vn von einem gemeinsamen Punkt aus approximiert. Wenn Zwischenpositionen der zusammengesetzten Kurve während der Kurvenverzerrungsoperation angezeigt werden sollen, müssen die Parameter Cp– Cp+ und Cp für jede Vektorverschiebung V1, V2, ..., Vn neu angewendet werden. Bei der Projektionsabbildung müssen die Parameter Tp und Cp für jede Vektorverschiebung V1, V2, ..., Vn neu berechnet werden, da das orthogonale Liniensegment t sich für jeden neuen Vektor verändert. Im Gegensatz dazu müssen bei Verwendung der Abstandsabbildung die Faktoren Cp–, Cp und Cp+ nur einmal am Anfang des Zuges (das heißt, wenn der Benutzer die Maustaste drückt) berechnet werden und dann für jeden neuen Wert der Vektorverschiebung V1, V2, ..., Vn angewendet werden, wenn der Pfad der Bewegungsoperation die Richtung wechselt, während die Maustaste gedrückt bleibt. Im Ergebnis dessen wird bei der Abstandsabbildung der Umfang der Berechnung für jede einzelne Veränderungsoperation minimiert.
  • Es wird erneut auf das Beispiel von 2A Bezug genommen; nachdem die Steuerpunkte der zusammengesetzten Kurve auf die gerade Linie t abgebildet worden sind, bildet der zweite Schritt des Abbildungsmodells (Schritt 404 von 2B) die Parameter Tp, Tp– und Tp+ auf die Skalierungsfaktoren Cp, Cp– und Cp+ ab, die aus der Interpolationskurve IC für die Steuerpunkte zwischen Ea und Ee abgeleitet wurden. Die Parameter Tb, Tc und Td, die den freien Segmentendpunkten zugeordnet sind, werden auf Punkte auf der Interpolationskurve IC abgebildet. Der Wert des Parameters Ce ist 1, da der Punkt Ee der ausgewählte Punkt ist, der mit dem Cursor durch eine Verschiebung V gezogen wird, und der Wert des Parameters Ca ist Null, da er dem feststehenden Punkt Ea zugeordnet ist.
  • Für die Parameter Ta+, Tb–, Tb+, Tc–, Tc+, Td–, Td+ und Te–, die den Anstiegspunkten zugeordnet sind, werden die Werte an den Linien Ya, Yb, Yc, Yd und Ye bewertet, welche die Interpolationskurve IC bei t = Ta, Tb, Tc, Td beziehungsweise Te berühren. Im Ergebnis dessen befinden sich die Werte Ca+, Cb–, Cb+, Cc–, Cc+, Cd–, Cd+ und Ce– nicht auf der Interpolationskurve IC.
  • Die Interpolationskurve IC von 2A erfüllt die folgenden Bedingungen: IC(0) = 0, IC(1) = 1, dIC(0)/dt = 0, und dIC(1)/dt = 0.
  • Die ersten zwei Bedingungen folgen aus der Tatsache, dass Punkt Ea feststehend ist (und sich folglich nicht bewegt) und Punkt Ee ausgewählt ist (und sich folglich um den vollen, vom Benutzer spezifizierten Betrag verändert). Die letzten beiden Bedingungen legen fest, dass der Anstieg der Interpolationskurve bei t = 0 und t = 1 Null ist, was außerdem tatsächlich festlegt, dass sich die Anstiege der zusammengesetzten Kurve an ihren Kurvenendpunkten nicht verändern. Die Lösung eines kubischen Polynoms der Interpolationskurve IC wird in Gl. 5 gegeben. Indem die Punkte Cp+ und Cp– entlang der Tangente Yp platziert werden, wird die Kollinearität der Linien (P– – P) und (P – P+) erhalten. IC(t) = t*t*(3,0 – 2,0*t) (Gl. 5)
  • Die Werte der Parameter Ca+ bis Ce– liegen jeweils zwischen dem Wert von Ca und Ce, das heißt, zwischen 0 und 1. Man beachte, dass, obwohl die Anstiegspunkte Ea+ und Ee– technisch freie Punkte sind, die Werte von Ca+ und Ce– durch die Bedingung beschränkt werden, dass die Anstiege der Interpolationskurve IC(t) bei t = 0, 1 Null sind. Somit ist der Wert von Ca+ Null und der Wert von Ce– ist 1.
  • Zusätzlich zu der Fähigkeit, eine Kurve durch Ziehen eines ausgewählten Segmentendpunkts oder von Endpunkten zu bewegen, kann der Anstieg einer zusammengesetzten Kurve an ihren Kurvenendpunkten auch eingestellt werden. Es wird auf 2D und 2E Bezug genommen; eine zusammengesetzte Kurve 310 ist mit einem einzelnen, approximierenden Bezier-Kurvensegment 312 verknüpft, welches die zusammengesetzte Kurve 310 approximiert, indem eine Anpassung der kleinsten Quadrate an die Punkte verwendet wird, die aus der zusammengesetzten Kurve 310 abgetastet wurden. Das approximierende Bezier-Segment 312 wird durch die Segmentendpunkte P0 und P3 und die Anstiegspunkte P1 und P2 (nachstehend hierin als „Pseudo"-Anstiegspunkte P1 und P2 der zusammengesetzten Kurve 310 bezeichnet) definiert. Das approximierende Segment 312 ist ausschließlich eine Benutzerschnittstellenfunktion, die es dem Benutzer ermöglicht, den Anstieg entweder bei Kurvenendpunkt Ea oder bei Kurvenendpunkt Ee der zusammengesetzten Kurve 310 einzustellen. Es können alternative Modelle zum Modifizieren des Anstiegs an den Kurvenendpunkten verwendet werden. Ein einfacheres Benutzerschnittstellenverfahren ist beispielsweise die Definition der Pseudo-Anstiegspunkte P1 und P2 entlang einer Linie, die zwischen den Endpunkten P0 und P3 definiert ist, wobei sich Punkt P1 an der Position 1/3 und Punkt P2 an der Position 2/3 entlang der Linie befindet. Als weiteres Beispiel kann das Programm eine vom Benutzer auswählbare Schaltfläche in der Benutzerschnittstelle bereitstellen, um in einen Anstiegseinstellungs-Modus einzutreten. Dann kann der Benutzer markieren, welcher Kurvenendpunkt zu modifizieren ist, und einen beliebigen Anstiegseinstellungspunkt ziehen, um einen Verschiebungsvektor des Anstiegseinstellungspunkts bereitzustellen, um den Anstieg der zusammengesetzten Kurve bei einem ihrer Kurvenendpunkte einzustellen.
  • Um den Anstieg bei einem Endpunkt der zusammengesetzten Kurve (Ea oder Ee) zu modifizieren, wählt und zieht der Benutzer den Pseudo-Anstiegspunkt P1 oder P2 des Bezier-Segments 312. Die Auswahl von P1 modifiziert den Anstieg bei Ea und die Auswahl von P2 modifiziert den Anstieg bei Ee. Im Gegensatz dazu – wie oben diskutiert – würde der Benutzer, wenn ein bestimmter Segmentendpunkt oder Endpunkte der zusammengesetzten Kurve 310 bewegt werden sollte bzw. sollten, die Segmentendpunkte Ea, Eb, Ec, Ed oder Ee auswählen und sie um die ge wünschte Verschiebung ziehen. Der Pseudo-Anstiegspunkt P1 oder P2 wird um einen Verschiebungsvektor V (wie in 8 dargestellt) gezogen, um den Anstieg der Kurve am Endpunkt Ea oder Ee zu modifizieren. Als Reaktion auf die Verschiebung des Pseudo-Anstiegspunkts P1 oder P2 berechnet das Programm die Verschiebungen für die Steuerpunkte der zusammengesetzten Kurve unter Verwendung eines Zwei-Schritt-Abbildungsmodells, das dem oben beschriebenen Modell zur Bewegung von Segmentendpunkten ähnelt. Der Unterschied liegt in der Interpolationskurve, die bei den Abbildungsschritten der Anstiegsmodifizierung verwendet wird. Die Interpolationskurve muß derart definiert werden, dass die Verschiebungen der Steuerpunkte in der Nähe von Punkt P1 größer als die der anderen Steuerpunkte sind. Es wird nur der Anstieg bei einem Kurvenendpunkt eingestellt, wobei der Anstieg bei dem gegenüberliegenden Kurvenendpunkt unverändert bleibt.
  • In 2E wird der Verschiebungsvektor V des Pseudo-Anstiegspunkts P1 bei Schritt 440 erhalten. Als Nächstes bildet das Programm die Steuerpunkte Ea, Ea+, Eb–, Eb, Eb+ Ec–, Ec, Ec+, Ed–, Ed, Ed+, Ee– und Ee auf ein Liniensegment t ab, indem entweder die Abstandsabbildung oder die Projektionsabbildung verwendet wird (mit der in 2D gezeigten Abstandsabbildung). Eine Interpolationskurve IC(t) (welche sich von der Interpolationskurve zum Bewegen von Segmentendpunkten unterscheidet) wird dann bei Schritt 444 auf dem Liniensegment t definiert, und die Interpolationskurve IC(t) muß die folgenden Bedingungen erfüllen: IC(0) = 0, IC(1) = 0, dIC(0)/dt > 0, und dIC(1)/dt = 0.
  • Die Bedingungen legen fest, dass die Werte der Interpolationskurve IC(t) bei t = 0, 1 Null sind, der Anstieg von IC(t) bei t = 1 Null ist, und der Anstieg von IC(t) bei t = 0 größer als Null ist.
  • Ein Typ des Polynoms, das die spezifizierten Bedingungen erfüllt, ist ein Bernstein-Polynom, wie in Gl. 6 ausgedrückt. IC(t) = 3*t*(1,0–t)2 (Gl. 6)
  • Die Punkte Ta+, Tb–, Tb, Tb+, Tc–, Tc, Tc+, Td–, Td, Td+ und Te– werden dann bei Schritt 446 auf die Interpolationskurve IC(t) abgebildet. Die Abbildung ist dieselbe, wie sie im Zusammenhang mit dem Abbildungsmodell von 2A beschrieben wurde, bei welchem die den Segmentendpunkten zugeordneten Parameter Tp auf die Interpolationskurve IC(t) abgebildet werden, und die den Anstiegspunkten zugeordneten Parameter Tp– und Tp+ auf die Tangenten Yp bei t = Tp abgebildet werden. Bei Schritt 448 berechnet dann das Programm die Werte der Skalierungsfaktoren Cp, Cp– und Cp+, um die Verschiebungen der Steuerpunkte Ea bis Ee zu bestimmen. Bei Schritt 449 werden dann die Steuerpunkte von dem Programm um die berechneten Verschiebungen bewegt.
  • Unter Verwendung des Bernstein-Polynoms von Gl. 6 liegt die maximale Bewegung bei einem Punkt 1/3 entlang des Liniensegments t, d. h. bei t = 1/3. Ein derartiger Punkt entspricht nicht unbedingt einem Punkt Tp, Tp+ oder Tp–, die dem Steuerpunkt einer zusammengesetzten Kurve zugeordnet sind.
  • Das Beispiel von 2D zeigt eine Modifizierung des Anstiegs bei Kurvenendpunkt Ea der zusammengesetzten Kurve 310. Wenn der Anstieg bei Kurvenendpunkt Ee modifiziert werden soll, dann wird der Pseudo-Anstiegspunkt P2 ausgewählt und bewegt. In diesem Fall sind die Bedingungen für die Interpolationskurve anders, wobei der Anstieg von IC(t) bei t = 0 Null entspricht und der Anstieg von IC(t) bei t = 1 kleiner als Null ist. Im Ergebnis dessen wird die Interpolationskurve von Gl. 6 auf dem Liniensegment t gespiegelt.
  • Bei einem alternativen Ausführungsbeispiel kann der Anstieg irgendeines beliebigen Segmentendpunkts in einer zusammengesetzten Kurve modifiziert werden. Um dies zu ermöglichen, zeigt das Programm eine approximierende Kurve zwischen diesem Segmentendpunkt und dem Segmentendpunkt am anderen Ende des Abschnitts der zusammengesetzten Kurve, den der Benutzer auswählen möchte. Wenn beispielsweise in 2D der betreffende Abschnitt der zusammengesetzten Kurve zwischen den Punkten Eb und Ed liegt, und der Anstieg bei Eb modifiziert werden soll, dann wird die approximierende Kurve zwischen den Punkten Eb und Ed definiert.
  • Der Pseudo-Anstiegspunkt P1 der verkürzten approximierenden Kurve kann dann gezogen werden, um den Anstieg bei Segmentendpunkt Eb zu modifizieren. Man beachte, dass die Modifizierung des Anstiegs bei Segmentendpunkt Eb (da er kein Kurvenendpunkt ist) den stetigen Übergang zwischen dem betreffenden Kurvensegment (zwischen Eb und Ec) und seinem benachbarten Kurvensegment (zwischen Ea und Eb) zerstört.
  • Beispielhafte Kurvenverzerrungen werden nachstehend in 58 gezeigt, in welchen eine ursprüngliche Kurve mit durchgängigen Linien dargestellt wird, und eine modifizierte oder verzerrte Kurve mit gestrichelten Linien dargestellt wird, wo sie von der ursprünglichen Kurve abweicht.
  • Es wird auf 5 Bezug genommen; eine aus mehreren Segmenten zusammengesetzte Kurve 200 kann durch die Techniken der Erfindung modifiziert werden, damit eine zusammengesetzte Kurve 200' entsteht. Der feststehende Punkt ist der Segmentendpunkt E206, und die ausgewählten Punkte sind die Segmentendpunkte E200, E201, E202, E203, E204 und E205, welche als Gruppe zu den neuen Segmentendpunkten E200'–E205' gezogen werden. Die Verschiebungen der freien Punkte zwischen dem feststehenden Segmentendpunkt E206 und dem ausgewählten Segmentendpunkt E205 werden vom Programm so bestimmt, dass die allgemeine Form und die Details der ursprünglichen Kurve 200 und die Stetigkeit der Übergänge zwischen den Kurvensegmenten erhalten bleiben.
  • Es wird auf 6 Bezug genommen; die Pfadmodifizierungstechniken können ebenfalls auf zyklische oder geschlossene Kurven, wie beispielsweise das Oval 120, angewendet werden, welches durch vier Bezier-Segmente 122, 123, 124 und 125 zwischen den Segmentendpunkten E120, E121, E122, E123 und E124 definiert ist. Die einzige neue Überlegung ist, dass die Punk te zyklisch behandelt werden müssen, das heißt, der erste und der letzte Punkt werden als aneinandergrenzend betrachtet. Das Oval 120 wird vom ursprünglichen Pfad 120 zu dem neuen Pfad 120' modifiziert, wobei der Segmentendpunkt E120 der feststehende Punkt und der Segmentendpunkt 123 der ausgewählte Punkt ist. Die übrigen Punkte sind freie Punkte, deren Verschiebungen vom Programm so berechnet werden, dass die Kreisform der zusammengesetzten Kurve 120' erhalten bleibt.
  • 7A und 7B stellen disjunkte Gruppen von Steuerpunkten dar, die vom Programm bewegt werden. In 7A wird eine aus sechs Segmenten zusammengesetzte Kurve 320 zu einer Kurve 320' verzerrt, wobei die Segmentendpunkte E320, E323 und E326 feststehende Punkte und die Segmentendpunkte E321 und E324 ausgewählte Punkte sind. Die Steuerpunkte zwischen den feststehenden Punkten E320 und E323 bilden eine erste Gruppe von Steuerpunkten, und die Steuerpunkte zwischen den feststehenden Punkten E323 und E326 bilden eine zweite Gruppe von Steuerpunkten. Es werden separate Abbildungen für die beiden Gruppen ausgeführt, um die Verschiebungen der freien Steuerpunkte zu bestimmen.
  • 7B stellt vier disjunkte Gruppen von Steuerpunkten dar, wobei sich zwei Gruppen in der zusammengesetzten Kurve 220 und zwei Gruppen in der zusammengesetzten Gruppe 230 befinden. Die feststehenden Punkte sind die Segmentendpunkte E220, E223, E225, E231 und E235, und die ausgewählten Punkte sind die Segmentendpunkte E221, E224, E230 und E234. Bei einer einzelnen Bewegungsoperation werden die Bewegungen der freien Punkte in den vier disjunkten Gruppen berechnet, indem vier separate Abbildungen ausgeführt werden (wobei eine Abbildung definiert wird als die Abbildung, die für die Steuerpunkte zwischen zwei feststehenden Punkten erforderlich ist). Erneut werden die Anstiegspunkte so eingestellt, dass die stetigen Übergänge zwischen den Kurvensegmenten in den zwei zusammengesetzten Kurven 220' und 230' erhalten bleiben.
  • 8 stellt die Modifizierung des Anstiegs einer zusammengesetzten Kurve 320 bei Kurvenendpunkt P0 dar. Die zusammengesetzte Kurve 320 enthält mehrere (nicht explizit darge stellte) Bezier-Kurvensegmente. Eine approximierende Kurve 322, welche ein einzelnes Bezier-Segment mit den gemeinsamen Endpunkten P0 und P3 und den Pseudo-Anstiegspunkten P1 und P2 ist, wird ebenfalls zusammen mit der zusammengesetzten Kurve 320 angezeigt. Der Pseudo-Anstiegspunkt P1 wird durch einen Verschiebungsvektor V zu Punkt P1' bewegt, und der Anstieg der zusammengesetzten Kurve 320 wird entsprechend eingestellt, um die zusammengesetzte Kurve 320' zu erzeugen. Die approximierende Kurve 322 wird zu Kurve 322' verändert. Zur weiteren Modifizierung des Anstiegs bei beiden Endpunkten der zusammengesetzten Kurve können die Pseudo-Anstiegspunkte P1' und P2 weiter bewegt werden.
  • Es wird auf 9A und 9B Bezug genommen; Kurvensegmente müssen gezeichnet sowie bewegt werden. Wie oben erläutert, wird ein Bezier-Kurvensegment durch vier Steuerpunkte P0, P1, P2 und P3 definiert, wobei die Punkte P0 und P3 Segmentendpunkte und die Punkte P1 und P2 Anstiegspunkte sind. Um dem Benutzer während einer Zeichenoperation ein Feedback zu geben, erzeugt und zeigt das Programm eine Kurve zwischen Segmentendpunkt P0 und dem Cursor zu dem Zeitpunkt, wenn die Maustaste gedrückt wird, und verfolgt den Cursor mit einem „Gummiband"-Bezier-Segment unter Verwendung der aktuellen Cursor-Position als der augenblicklichen Lage des Segmentendpunkts P3 und der berechneten Positionen für die Anstiegspunkte P1 und P2, wie beschrieben werden wird.
  • Es wird auf 9A Bezug genommen; das Programm stellt bei Schritt 500 fest, ob die Maustaste gedrückt ist. Ist das der Fall, überprüft das Programm bei Schritt 501, ob sich der Cursor innerhalb eines vorgegebenen Radius eines Steuerpunkts eines vorhandenen Bezier-Kurvensegments befindet. Ist das der Fall, bewegt das Programm bei Schritt 502 den Steuerpunkt an eine Position, die vom Cursor angezeigt wird.
  • Wenn sich der Cursor nicht innerhalb des vorgegebenen Radius eines Steuerpunkts befindet, wenn die Maustaste gedrückt wird, dann erkennt das Programm, dass die Erzeugung des Kurvensegments gewünscht wird, und das Programm stellt als Nächstes bei Schritt 503 fest, ob eine Modifizierer-Taste (z. B. die Strg-Taste) gedrückt wird, oder ob keine andere Kurve auf dem Computerbildschirm angezeigt wird.
  • Wenn der Benutzer eine Modifizierer-Taste (wie beispielsweise die Strg-Taste) drückt, oder irgendein anderes Aktivierungsmittel, während die Maustaste gedrückt wird, wenn bereits ein anderes Kurvensegment erzeugt worden ist, dann zeigt dies an, dass der Benutzer den Wunsch hat, ein Kurvensegment separat von dem vorhandenen Segment zu erzeugen. Andernfalls verknüpft das Programm das neue Segment mit dem vorhandenen Segment, damit eine Abfolge von Kurvensegmenten entsteht.
  • Wenn ein separates Kurvensegment gewünscht wird (das heißt, entweder die Modifizierer-Taste wird gedrückt oder es ist kein anderes Kurvensegment erzeugt worden), dann wird der erste Segmentendpunkt P0 bei Schritt 504 als der Punkt des Cursors definiert, wenn der Benutzer die Maustaste drückt. Als Nächstes stellt das Programm bei Schritt 506 fest, wann die Maustaste losgelassen wird. Wenn die Maustaste losgelassen wird, dann wird die Position des Cursors zum Zeitpunkt des Loslassens bei Schritt 508 als ein Zwischen-Anstiegspunkt S1 definiert, wie in 10A gezeigt. Der Punkt S1 wird vom Benutzer ausgewählt, um die Richtung eines Vektors S von Punkt P0 zu Punkt S1 anzugeben. Der Anstiegspunkt P1 befindet sich entlang einer Linie in der Richtung des Vektors S. Ferner berührt das Kurvensegment den Vektor S am Segmentendpunkt P0.
  • Nachdem der Punkt S1 bei Schritt 508 definiert worden ist, stellt das Programm bei Schritt 510 fest, ob die Maustaste erneut gedrückt worden ist. Ist das der Fall, dann wird die aktuelle Position des Cursors bei Schritt 512 als die Position des Segmentendpunkts P3 definiert. Die Anstiegspunkte P1 und P2 werden ebenfalls bei Schritt 512 für die aktuelle Position des Segmentendpunkts P3 berechnet, und das Kurvensegment wird angezeigt, um dem Benutzer ein Feedback zur Form des Kurvensegments zu geben.
  • Die Positionen der Punkte P1 und P2 werden in Schritt 512 vom Programm so berechnet, dass die Kurve eine enge Näherung eines Kreisbogens ergibt, der durch P0 und den Cursor verläuft, wie in 9B gezeigt. Wenn der Cursor vom Benutzer gezogen wird, folgt die augenblickliche Position des Segmentendpunkts P3 dem Cursor (wie durch die Punkte P3, P3' und P3'' angegeben), und die Anstiegspunkte P1 und P2 werden neu berechnet (wie durch die Punkte P1, P2; P1' , P2' und P1'', P2'' angegeben), um eine Näherung des Kreisbogens aufrechtzuerhalten.
  • Bei Schritt 514 stellt das Programm dann fest, ob die Maustaste losgelassen wurde. Ist das nicht der Fall, gibt die aktuelle Position des Cursors weiterhin die Position des Segmentendpunkts P3 an. Wenn die Maustaste losgelassen wird, dann wird bei Schritt 516 die Endposition des Segmentendpunkts P3 als die Position des Cursors festgelegt, als die Maustaste losgelassen wurde. Die Endpositionen der Anstiegspunkte P1 und P2 werden ebenfalls berechnet und das Kurvensegment wird angezeigt.
  • Wenn bei Schritt 502 die Modifizierer-Taste nicht gedrückt wird und bereits ein Kurvensegment erzeugt worden ist, dann nimmt das Programm an, dass der Benutzer den Wunsch hat, das nächste Segment einer zusammengesetzten Kurve zu erzeugen. Wie in 10B gezeigt, wird der Punkt P2 des ersten Kurvensegments 600 durch den Punkt P3 reflektiert, um die Position des Zwischen-Anstiegspunkts S1' für das nächste Kurvensegment 602 zu definieren. Die Linie (P2–P3) ist mit der Linie (P3–S1') kollinear, damit ein stetiger Übergang zwischen den Kurvensegmenten 600 und 602 erzeugt wird. Wenn die Maustaste gedrückt wird, wird die aktuelle Position des Cursors als die augenblickliche Position des Segmentendpunkts P3' des neuen Kurvensegments 602 verwendet, und die Positionen der Anstiegspunkte P1' und P2' des Kurvensegments 602 werden berechnet, wenn der Segmentendpunkt P3' die Positionen wechselt. Bei Schritt 514 stellt das Programm dann fest, ob die Maustaste losgelassen wurde, zu welchem Zeitpunkt die Endposition des Segmentendpunkts P3' bestimmt wird. Der oben beschriebene Prozess kann angewendet werden, um weitere Kurvensegmente zu erzeugen, die zu der zusammengesetzten Kurve hinzugefügt werden sollen.
  • Es wird erneut auf 10A Bezug genommen; die Mathematik zur Berechnung der Positionen der Anstiegspunkte P1 und P2 wird in den Gleichungen 7–13 dargestellt. In den Gleichungen werden die Punkte P0, P1, P2, P3 und S1 als Vektoren in einem beliebigen Koordinatensystem ausgedrückt. W = P3 – P0 (Gl. 7) S = S1 – P0 (Gl. 8) cosA = W·S/|W|*|S| (Gl. 9) m = 2*|W|/[3*(1 + cosA)] (Gl. 10) v = 1 – (2*m*cosA/|W|) (Gl. 11) P1 = P0 + m*S/|S| (Gl. 12) P2 = P1 + v*w (Gl. 13)
  • W ist ein Vektor, der als die Differenz zwischen den Vektoren P3 und P0 definiert ist, und S ist ein Vektor, der als die Differenz zwischen den Vektoren S1 und S0 definiert ist. Ein Winkel A ist als der Winkel zwischen dem Vektor W und dem Vektor S definiert. Die Gleichungen 8 und 9 berechnen die Skalarwerte m und v, wobei der Wert m als ein Skalierungsfaktor eines Einheitsvektor verwendet wird, der in die Richtung des S-Vektors zeigt, um den Vektor P1 in Gleichung 11 abzuleiten. Der Wert v wird als ein Skalierungsfaktor des Vektors W verwendet, um den Vektor P2 in Gleichung 12 abzuleiten.
  • Es wird auf 11 Bezug genommen, ein Programm zum Erzeugen und Modifizieren von Kurven in Übereinstimmung mit dieser Beschreibung kann in digitalen elektronischen Schaltungen oder in Computer-Hardware, Firmware, Software oder in Kombinationen derselben, wie beispielsweise in einem Computersystem 500, implementiert werden. Das Computersystem 500 enthält eine zentrale Verarbeitungseinheit (CPU) 502, die mit einem internen Systembus 504 verbunden ist. Die Speichermedien im Computersystem 500 umfassen einen Hauptspeicher 506 (welcher mit dynamischen Speichereinrichtungen mit wahlfreiem Zugriff implementiert werden kann), ein Festplattenlaufwerk 508 zur Massenspeicherung und einen elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM) 510. Der Hauptspeicher 506 und der EEPROM 510 sind mit dem Bus 504 verbunden, und das Fest plattenlaufwerk 508 ist über eine Festplattenlaufwerk-Steuereinrichtung 512 mit dem Bus 504 verbunden.
  • Die erfindungsgemäße Einrichtung kann in einem Computerprogrammprodukt implementiert werden, das konkret in einer maschinenlesbaren Speichereinrichtung (wie beispielsweise dem Festplattenlaufwerk 508, Hauptspeicher 506 oder EEPROM 510) enthalten ist, zur Ausführung durch die CPU 502. Geeignete Prozessoren sind beispielsweise sowohl Mehrzweck- als auch Spezial-Mikroprozessoren. Im Allgemeinen erhält ein Prozessor Instruktionen und Daten vom Nur-Lese-Speicher 510 und/oder vom Hauptspeicher 506. Speichereinrichtungen, die für die konkrete Aufnahme von Computerprogramm-Instruktionen geeignet sind, umfassen alle Formen von nicht-flüchtigen Speichern, einschließlich beispielsweise Halbleiterspeichereinrichtungen, wie beispielsweise EPROMs, EEPROMs und Flash-Speichereinrichtungen; Magnetplatten, wie beispielsweise das interne Festplattenlauf-, werk 508 und Wechsel-Festplatten; magneto-optische Platten und CD-ROM-Platten. Jede der Vorhergehenden kann ergänzt werden durch oder aufgenommen werden in speziell ausgeführte ASICs (anwendungsspezifische integrierte Schaltungen).
  • Das Computersystem 500 enthält ferner eine Eingabe/Ausgabe (I/O)-Steuereinrichtung 514, die mit dem Bus 504 verbunden ist und welche eine Tastatur-Schnittstelle 516 (zur Verbindung mit einer externen Tastatur), eine Maus-Schnittstelle 518 (zur Verbindung mit einer externen Maus oder einer anderen Zeigereinrichtung) und eine Parallel-Port-Schnittstelle 520 (zur Verbindung mit einem Drucker) bereitstellt. Außerdem ist der Bus 504 mit einer Video-Steuereinrichtung 522 verbunden, welche mit einem externen Computermonitor oder -anzeige 524 gekoppelt ist. Daten, die einem Bild zur Anzeige auf dem Computermonitor 524 (wie beispielsweise die Kurven) zugeordnet sind, werden über den Systembus 504 durch Anwendungsprogramme an die Video-Steuereinrichtung 522 bereitgestellt.
  • Weitere Ausführungsbeispiele liegen im Bereich der folgenden Ansprüche. Beispielsweise können die Schritte der Erfindung von Fachleuten verändert werden und trotzdem die gewünschten Ergebnisse erzielen. Die verschiedenen erhaltenen Befehle können auf mehrere verschiedene Arten an einen Computer bereitgestellt werden, wie beispielsweise durch Mausbewegungen, Tastenanschläge, und eine grafische Benutzerschnittstelle kann verwendet werden, um die Befehle an das Computersystem zu übermitteln.

Claims (28)

  1. Ein computerimplementiertes Verfahren zum Verändern einer Kurve in Erwiderung einer Benutzeraktion über eine graphische Benutzerschnittstelle in einem Computersystem, wobei die Kurve durch eine Mehrzahl von Steuerpunkten definiert ist, wobei das Verfahren gekennzeichnet ist durch: Identifizieren jedes Steuerpunktes in Erwiderung einer Benutzereingabe als einen feststehenden Steuerpunkt, einen ausgewählten Steuerpunkt oder einen freien Steuerpunkt; Empfangen (400) eines Versatzes einer Mehrzahl von ausgewählten Punkten; Zuordnen (402) eines freien Steuerpunktes der Kurve zu einem Punkt TP auf einer Linie t; Definieren (403) einer Interpolationskurve IC(t) auf der Linie t; Projizieren (404) des Punktes Tp auf den Wert der Interpolationskurve IC(t) bei t gleich Tp zum Auffinden eines Skalierungsfaktors; und Multiplizieren (410) des Skalierungsfaktors mit dem Versatz der ausgewählten Punkte zum Bestimmen des Versatzes des freien Steuerpunktes.
  2. Das Verfahren gemäß Anspruch 1, ferner gekennzeichnet durch: Zuordnen (402) einer Mehrzahl freier Steuerpunkte der Kurve zu entsprechenden Punkten auf der Linie t; Projizieren (404) der Punkte auf der Linie t auf entsprechende Werte der Interpolationskurve IC(t) zum Ermitteln entsprechender Skalierungsfaktoren; und Multiplizieren (410) der Skalierungsfaktoren mit dem Versatz der ausgewählten Punkte zum Bestimmen des entsprechenden Versatzes der freien Steuerpunkte.
  3. Das Verfahren gemäß Anspruch 1, wobei die Steuerpunkte Segmentendpunkte und Anstiegspunkte enthalten und wobei der dem Punkt Tp auf der Linie t zugeordnete freie Steuerpunkt ein freier Segmentendpunkt ist, wobei das Verfahren ferner gekennzeichnet ist, durch: Zuordnen eines freien Anstiegs zu einem Punkt Tp+ auf der Linie t; Definieren einer Tangentenlinie Yp zu der Interpolationskurve IC(t) bei t gleich Tp; Projizieren des Punktes Tp+ auf den Wert der Linie Yp bei t gleich Tp+, um einen Skalierungsfaktor für den freien Anstiegspunkt aufzufinden; und Multiplizieren der Skalierungsfaktoren für die freien Segmentendpunkte und freien Anstiegspunkte mit dem Versatz der ausgewählten Punkte zum Bestimmen der Versatze des freien Segmentendpunktes und freien Anstiegspunktes.
  4. Das Verfahren gemäß Anspruch 1, wobei der Skalierungsfaktor gleich dem Wert der Interpolationskurve IC(t) bei t gleich Tp ist.
  5. Das Verfahren gemäß Anspruch 4, ferner gekennzeichnet durch: Definieren des Wertes von IC(t) derart, daß er in einem Bereich von 0 bis 1 liegt, wodurch der freie Steuerpunkt um einen geringeren Versatz als der Versatz der ausgewählten Punkte bewegt wird.
  6. Das Verfahren gemäß Anspruch 1, ferner gekennzeichnet durch: Identifizieren einer ersten Gruppe mit einem ausgewählten Steuerpunkt und einem freien Steuerpunkt und einer zweiten Gruppe mit einem ausgewählten Steuerpunkt und einem freien Steuerpunkt in Erwiderung einer Benutzereingabe, wobei die erste Gruppe von Steuerpunkten von der zweiten Grup pe von Steuerpunkten durch einen feststehenden Steuerpunkt getrennt ist; Empfangen (400) eines Versatzes der ersten Gruppe ausgewählter Steuerpunkte und der zweiten Gruppe ausgewählter Steuerpunkte; Zuordnen (405) der freien Steuerpunkte der ersten Gruppe zu einem Punkt Tp1 auf einer ersten Linie t1 und Zuordnen der freien Steuerpunkte der zweiten Gruppe zu einem Punkt Tp2 auf einer zweiten Linie t2; Definieren (406) einer ersten Interpolationskurve IC(t1) auf der ersten Linie t1 und Definieren einer zweiten Interpolationskurve IC(t2) auf der zweiten Linie t2; Projizieren (407) des Punktes Tp1 auf die erste Interpolationskurve IC(t1) bei t1 gleich Tp1 zum Auffinden eines ersten Skalierungsfaktors und Projizieren des Punktes Tp2 auf die zweite Interpolationskurve IC(t2) bei t2 gleich Tp2 zum Auffinden eines zweiten Skalierungsfaktors; und Multiplizieren (412) des ersten Skalierungsfaktors mit dem Versatz der ersten und zweiten Gruppe ausgewählter Punkte zum Bestimmen des Versatzes des freien Steuerpunktes der ersten Gruppe und Multiplizieren des zweiten Skalierungsfaktors mit dem Versatz der ersten und zweiten Gruppe ausgewählter Punkte zum Bestimmen des Versatzes des freien Steuerpunktes der zweiten Gruppe.
  7. Das Verfahren gemäß Anspruch 1, wobei die Kurve eine zusammengesetzte Kurve mit Bezier-Segmenten ist.
  8. Das Verfahren gemäß Anspruch 1, wobei die Kurve einen ersten Steuerpunkt aufweist und das Verfahren ferner gekennzeichnet ist, durch: Definieren (420) eines Linienzuges, der die Steuerpunkte der Kurve durchläuft; Berechnen (422) der Gesamtlänge des Linienzuges, wobei der Punkt Tp gleich der Länge zwischen dem ersten Punkt und dem dem Punkt Tp entsprechenden Punkt, geteilt durch die Gesamtlänge des Linienzuges, ist.
  9. Das Verfahren gemäß Anspruch 1, ferner gekennzeichnet durch: Definieren der Linie t als senkrecht zu der Richtung des Versatzes, wobei der erste Zuordnungsschritt die Steuerpunkte der Kurve senkrecht auf die Linie t projiziert.
  10. Das Verfahren gemäß Anspruch 1, wobei die Interpolationskurve als kubische Kurve dritter Ordnung definiert ist.
  11. Das Verfahren gemäß Anspruch 1, ferner gekennzeichnet durch Verändern einer Mehrzahl von Kurven in Erwiderung der Benutzeraktion, wobei: jede Kurve durch eine Mehrzahl von Steuerpunkten definiert ist; das Empfangen eines Versatzes einer Mehrzahl von ausgewählten Punkten ein Empfangen eines Versatzes eines ausgewählten Steuerpunktes jeder Kurve umfaßt; das Zuordnen eines freien Steuerpunktes auf die Kurve zu einem Punkt Tp auf einer Linie t ein Zuordnen eines freien Steuerpunktes jeder Kurve zu einem Punkt einer entsprechenden einer Mehrzahl von Linien umfaßt; das Definieren einer Interpolationskurve IC(t) auf der Linie t ein Definieren einer Interpolationskurve auf jeder Linie umfaßt; das Projizieren des Punktes Tp auf den Wert der Interpolationskurve IC(t) bei t gleich Tp zum Auffinden eines Skalierungsfaktors ein Projizieren des Punktes auf jede Linie der entsprechenden Interpolationskurve zum Auffinden eines Skalierungsfaktors für jeden freien Steuerpunkt umfaßt; und das Multiplizieren des Skalierungsfaktors mit dem Versatz der ausgewählten Punkte zum Bestimmen des Versatzes des freien Steuerpunktes ein Multiplizieren der Skalierungsfak toren mit dem Versatz der ausgewählten Steuerpunkte zum Bestimmen des Versatzes der freien Steuerpunkte umfaßt.
  12. Das Verfahren gemäß Anspruch 11, wobei jede der Mehrzahl von Kurven eine zusammengesetzte Kurve mit einer Mehrzahl von Bezier-Segmenten ist.
  13. Ein auf einem computerlesbaren Medium befindliches Computerprogramm zum Verändern einer Kurve in Erwiderung einer Benutzeraktion über eine graphische Benutzerschnittstelle in einem Computersystem, wobei die Kurve durch eine Mehrzahl von Steuerpunkten definiert ist und das Computerprogramm durch Anweisungen gekennzeichnet ist, die das Computersystem veranlassen, in Erwiderung einer Benutzereingabe jeden der Steuerpunkte als einen feststehenden Steuerpunkt, einen ausgewählten Steuerpunkt oder einen freien Steuerpunkt zu identifizieren; einen Versatz einer Mehrzahl ausgewählter Punkte zu empfangen (400); einen freien Steuerpunkt der Kurve zu einem Punkt Tp auf einer Linie t zuzuordnen (402); eine Interpolationskurve IC(t) auf einer Linie t zu definieren (403); den Punkt Tp auf den Wert der Interpolationskurve IC(t) bei t gleich Tp zu projizieren (404), um einen Skalierungsfaktor aufzufinden; und den Skalierungsfaktor mit dem Versatz der ausgewählten Punkte zu multiplizieren (410), um den Versatz des freien Steuerpunktes zu bestimmen.
  14. Das Computerprogramm gemäß Anspruch 13, ferner gekennzeichnet durch Anweisungen, die das Computersystem veranlassen, eine Mehrzahl freier Steuerpunkte der Kurve zu entsprechenden Punkten auf der Linie t zuzuordnen (402); die Punkte auf die Linie t auf entsprechende Werte der Interpolationskurve IC(t) zu projizieren (404), um entsprechende Skalierungsfaktoren aufzufinden; und die Skalierungsfaktoren mit dem Versatz der ausgewählten Punkte zu multiplizieren (410), um entsprechende Versatze der freien Steuerpunkte zu bestimmen.
  15. Das Computerprogramm gemäß Anspruch 13, wobei die Steuerpunkte Segmentendpunkte und Anstiegspunkte umfassen und wobei der dem Punkt Tp auf der Linie t zugeordnete freie Steuerpunkt ein freier Segmentendpunkt ist, wobei das Computerprogramm ferner durch Anweisungen gekennzeichnet ist, die das Computersystem veranlassen, einen freien Anstiegspunkt zu einem Punkt Tp+ auf der Linie t zuzuordnen; eine Tangentiallinie Yp zu der Interpolationskurve IC(t) bei t gleich Tp zu definieren; den Punkt Tp+ auf den Wert der Linie Yp bei t gleich Tp+ zu projizieren, um einen Skalierungsfaktor für den freien Anstiegspunkt aufzufinden; und die Skalierungsfaktoren der freien Segmentendpunkte und freien Anstiegspunkte mit dem Versatz der ausgewählten Punkte zu multiplizieren, um die Versatze des freien Segmentendpunktes und des freien Anstiegspunktes zu bestimmen.
  16. Das Computerprogramm gemäß Anspruch 15, ferner gekennzeichnet durch Anweisungen, die das Computersystem veranlassen, den wert von IC(t) so zu definieren, daß er in einem Bereich von 0 bis 1 liegt, wodurch der freie Steuerpunkt um einen geringeren Versatz als der Versatz der ausgewählten Punkte bewegt wird.
  17. Das Computerprogramm gemäß Anspruch 13, ferner gekennzeichnet durch Anweisungen, die das Computersystem veranlassen, in Erwiderung einer Benutzereingabe eine erste Gruppe mit einem ausgewählten Steuerpunkt und einem freien Steuerpunkt und eine zweite Gruppe mit einem ausgewählten Steuerpunkt und einem freien Steuerpunkt zu definieren, wobei die erste Gruppe von Steuerpunkten von der zweiten Gruppe von Steuerpunkten durch einen feststehenden Steuerpunkt getrennt ist; einen Versatz der ersten Gruppe von ausgewählten Steuerpunkten und der zweiten Gruppe von ausgewählten Steuerpunkten zu empfangen (400); den freien Steuerpunkt der ersten Gruppe zu einem Punkt Tp1 auf einer ersten Linie t1 und den freien Steuerpunkt der zweiten Gruppe zu einem Punkt Tp2 auf einer zweiten Linie t2 zuzuordnen (405); eine erste Interpolationskurve IC(t1) auf der ersten Linie t1 und eine zweite Interpolationskurve IC(t2) auf der zweiten Linie t2 zu definieren (406); den Punkt Tp1 auf die erste Interpolationskurve IC(t1) bei t1 gleich Tp1 zu projizieren (407), um einen ersten Skalierungsfaktor aufzufinden, und den Punkt Tp2 auf die zweite Interpolationskurve IC(t2) bei t2 gleich Tp2 zu projizieren, um einen zweiten Skalierungsfaktor aufzufinden; und den ersten Skalierungsfaktor mit dem Versatz der ersten und zweiten Gruppe ausgewählter Punkte zu multiplizieren (410), um den Versatz des freien Steuerpunktes der ersten Gruppe zu bestimmen, und den zweiten Skalierungsfaktor mit dem Versatz der ersten und zweiten Gruppe ausgewählter Punkte zu multiplizieren, um den Versatz des freien Steuerpunktes der zweiten Gruppe zu bestimmen.
  18. Das Computerprogramm gemäß Anspruch 18, wobei die Kurve eine zusammengesetzte Kurve mit Bezier-Segmenten ist.
  19. Das Computerprogramm gemäß Anspruch 13, ferner durch Anweisungen gekennzeichnet, die das Computersystem zur Veränderung einer Mehrzahl von Kurven in Erwiderung der Benut zeraktion veranlassen, wobei jede Kurve durch eine Mehrzahl von Steuerpunkten bestimmt ist und wobei Anweisungen, die ein Computersystem veranlassen, einen Versatz einer Mehrzahl von ausgewählten Punkten zu empfangen, Anweisungen umfassen, die ein Computersystem veranlassen, einen Versatz eines ausgewählten Punktes jeder Kurve zu empfangen; einen freien Steuerpunkt der Kurve zu einem Punkt Tp auf einer Linie t zuzuordnen, Anweisungen umfassen, die ein Computersystem veranlassen, einen freien Steuerpunkt jeder Kurve zu einem Punkt einer zugehörigen einer Mehrzahl von Linien zuzuordnen; eine Interpolationskurve IC(t) auf der Linie t zu definieren, Anweisungen umfassen, die ein Computersystem veranlassen, eine Interpolationskurve auf jeder Linie zu definieren; den Punkt Tp auf den Wert der Interpolationskurve IC(t) bei t gleich Tp zu projizieren, um einen Skalierungsfaktor aufzufinden, Anweisungen umfassen, um ein Computersystem zu veranlassen, den Punkt auf jeder Linie zu der zugehörigen Interpolationskurve zu projizieren, um einen Skalierungsfaktor für jeden freien Steuerpunkt aufzufinden; und den Skalierungsfaktor mit dem Versatz der ausgewählten Punkte zu multiplizieren, um den Versatz des freien Steuerpunktes zu bestimmen, Anweisungen umfassen, um ein Computersystem zu veranlassen, die Skalierungsfaktoren mit dem Versatz der ausgewählten Steuerpunkte zu multiplizieren, um die Versatze der freien Steuerpunkte zu bestimmen.
  20. Das Computerprogramm gemäß Anspruch 19, wobei jede der Mehrzahl von Kurven eine zusammengesetzte Kurve mit einer Mehrzahl von Bezier-Segmenten ist.
  21. Ein computerimplementiertes Verfahren zum Verändern einer Kurve in Erwiderung einer Benutzeraktion über eine graphische Benutzerschnittstelle in einem Computersystem, wobei die Kurve durch eine Mehrzahl von Steuerpunkten definiert ist und zwei Kurvenendpunkte aufweist, wobei das Verfahren gekennzeichnet ist durch: Definieren eines Anstiegseinstellungspunktes; Empfangen (420) eines Versatzes des Anstiegseinstellungspunktes über die graphische Benutzerschnittstelle; Zuordnen (442) eines Steuerpunktes der Kurve zu einem Punkt Tp auf einer Linie t; Definieren (444) einer Interpolationskurve IC(t) auf der Linie t; Projizieren (446) des Punktes Tp auf den Wert der Interpolationskurve IC(t) bei t gleich Tp zum Auffinden eines Skalierungsfaktors; und Multiplizieren (448) des Skalierungsfaktors mit dem Versatz des Anstiegseinstellungspunktes zum Bestimmen des Versatzes des Steuerpunktes.
  22. Das Verfahren gemäß Anspruch 21, wobei die Interpolationskurve IC(t) ein Bernstein-Polynom (444) ist.
  23. Ein Verfahren gemäß Anspruch 21, wobei die Kurve eine zusammengesetzte Kurve mit Bezier-Kurvensegmenten ist.
  24. Das Verfahren gemäß Anspruch 21, ferner umfassend: Definieren eines Bezier-Kurvensegmentes mit Segmentendpunkten, die mit den Kurvenendpunkten übereinstimmen; und Verwenden eines der Anstiegspunkte der Bezier-Kurvensegmente als Anstiegseinstellungspunkt.
  25. Ein auf einem computerlesbaren Medium befindliches Computerprogramm zum Verändern einer Kurve in Erwiderung einer Benutzeraktion über eine graphische Benutzerschnittstelle in einem Computersystem, wobei die Kurve durch eine Mehrzahl von Steuerpunkten definiert ist, wobei das Computerprogramm durch Anweisungen gekennzeichnet ist, die das Computersystem veranlassen, einen Anstiegseinstellungspunkt zu definieren; einen Versatz des Anstiegseinstellungspunktes über die graphische Benutzerschnittstelle zu empfangen; einen Steuerpunkt der Kurve zu einem Punkt Tp auf einer Linie t zuzuordnen (442); eine Interpolationskurve IC(t) auf der Linie t zu definieren (444); den Punkt Tp auf den Wert der Interpolationskurve IC(t) bei t gleich Tp zu projizieren (446), um einen Skalierungsfaktor aufzufinden; und den Skalierungsfaktor mit dem Versatz des Anstiegseinstellungspunktes zu multiplizieren (448), um den Versatz des Steuerpunktes zu bestimmen.
  26. Das Computerprogramm gemäß Anspruch 25, wobei die Interpolationskurve IC(t) ein Bernstein-Polynom (444) ist.
  27. Das Computerprogramm gemäß Anspruch 25, wobei die Kurve eine zusammengesetzte Kurve mit Bezier-Kurvensegmenten ist.
  28. Das Computerprogramm gemäß Anspruch 25, ferner gekennzeichnet durch Anweisungen, die ein Computersystem veranlassen, ein Bezier-Kurvensegment mit Segmentendpunkten zu definieren, die mit den Kurvenendpunkten übereinstimmen; und einen der Anstiegspunkte des Bezier-Kurvensegmentes als Anstiegseinstellungspunkt zu verwenden.
DE69727200T 1996-12-05 1997-10-31 Verfahren und Program zur Erzeugung und Modifizierung von Kurven auf einen Rechnerbildschirm Expired - Lifetime DE69727200T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US761186 1996-12-05
US08/761,186 US6111588A (en) 1996-12-05 1996-12-05 Creating and modifying curves on a computer display

Publications (2)

Publication Number Publication Date
DE69727200D1 DE69727200D1 (de) 2004-02-19
DE69727200T2 true DE69727200T2 (de) 2004-10-14

Family

ID=25061433

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69727200T Expired - Lifetime DE69727200T2 (de) 1996-12-05 1997-10-31 Verfahren und Program zur Erzeugung und Modifizierung von Kurven auf einen Rechnerbildschirm

Country Status (5)

Country Link
US (1) US6111588A (de)
EP (1) EP0847028B1 (de)
JP (1) JP4153065B2 (de)
CA (1) CA2220375A1 (de)
DE (1) DE69727200T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109521731A (zh) * 2017-09-19 2019-03-26 沈阳高精数控智能技术股份有限公司 一种基于公差带的G2连续Bézier刀具轨迹平滑算法

Families Citing this family (62)

* 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
AUPP557898A0 (en) * 1998-08-28 1998-09-24 Canon Kabushiki Kaisha Method and apparatus for orientating a character stroke
US6674435B1 (en) * 1998-09-16 2004-01-06 Texas Instruments Incorporated Fast, symmetric, integer bezier curve to polygon conversion
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
US6462739B1 (en) * 1999-03-18 2002-10-08 Abode Systems Incorporated Curve smoothing without shrinking
US6469702B1 (en) * 1999-04-16 2002-10-22 Avid Technology, Inc. Method and system for editing function curves in two dimensions
JP4427127B2 (ja) * 1999-04-28 2010-03-03 東芝医用システムエンジニアリング株式会社 関心領域形状の修正方法および医用画像表示装置
US6784886B1 (en) * 2000-08-28 2004-08-31 Adobe Systems Incorporated Method for apparatus for associating objects with a spline by value
US6765589B1 (en) * 2000-11-16 2004-07-20 Adobe Systems Incorporated Brush for warping and water reflection effects
US6963350B1 (en) 2001-07-03 2005-11-08 Adobe Systems Incorporated Painting interface to computer drawing system curve editing
US6757613B2 (en) * 2001-12-20 2004-06-29 Schlumberger Technology Corporation Graphical method for designing the trajectory of a well bore
US8576232B2 (en) * 2001-12-31 2013-11-05 Siemens Product Lifecycle Management Software Inc. Apparatus, method, and system for drafting multi-dimensional drawings
GB2406028A (en) * 2003-09-11 2005-03-16 Autodesk Canada Inc Tangent handle adjustment for Bezier curves
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
EP1562138B1 (de) * 2004-02-06 2009-08-19 Dassault Systèmes Methode für das Zeichnen einer Kurve in einem CAD-System
US10635723B2 (en) 2004-02-15 2020-04-28 Google Llc Search engines and systems with handheld document data capture devices
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
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
US8146156B2 (en) 2004-04-01 2012-03-27 Google Inc. Archive of text captures from rendered documents
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
US20060098900A1 (en) 2004-09-27 2006-05-11 King Martin T Secure data gathering from rendered documents
US9008447B2 (en) 2004-04-01 2015-04-14 Google Inc. Method and system for character recognition
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
US8713418B2 (en) 2004-04-12 2014-04-29 Google Inc. Adding value to a rendered document
US8874504B2 (en) 2004-12-03 2014-10-28 Google Inc. Processing techniques for visual capture data from 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
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
US7433504B2 (en) * 2004-08-27 2008-10-07 General Electric Company User interactive method for indicating a region of interest
JP4255449B2 (ja) * 2005-03-01 2009-04-15 株式会社ソニー・コンピュータエンタテインメント 描画処理装置、テクスチャ処理装置、およびテセレーション方法
US7405733B2 (en) * 2005-03-24 2008-07-29 Autodesk Canada Co. Spline drawing in a computer-implemented graphics program
US7643970B2 (en) * 2005-11-09 2010-01-05 The Boeing Company Tape course generation method and apparatus for programming a composite tape lamination machine
EP2067119A2 (de) 2006-09-08 2009-06-10 Exbiblio B.V. Optische scanner, zum beispiel tragbare optische scanner
ES2360681T3 (es) * 2007-01-18 2011-06-08 Fritz Studer Ag Procedimiento para el control de una herramienta desplazable, dispositivo de introducción de datos y máquina de mecanización.
JP4540123B2 (ja) * 2007-04-10 2010-09-08 富士フイルム株式会社 曲線修正方法および装置並びにプログラム
US8014630B1 (en) 2007-05-02 2011-09-06 Evernote Corporation Method and apparatus for representing image data using digital filtering and adaptive parameterization
US7969440B1 (en) * 2007-05-02 2011-06-28 Evernote Corporation Method and system for curve fitting using digital filtering
CN101354639A (zh) * 2007-07-25 2009-01-28 联想(北京)有限公司 在终端之间操作对象的方法及终端
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
JP2009271909A (ja) * 2008-04-08 2009-11-19 Canon Inc 図形描画編集システム、図形描画編集装置及び図形描画編集方法
KR20100070733A (ko) * 2008-12-18 2010-06-28 삼성전자주식회사 아이템 표시방법 및 이를 적용한 디스플레이 장치
EP2399385B1 (de) 2009-02-18 2019-11-06 Google LLC Automatische informationserfassung wie etwa informationserfassung anhand einer dokumentbewussten vorrichtung
WO2010105246A2 (en) 2009-03-12 2010-09-16 Exbiblio B.V. Accessing resources based on capturing information from a rendered document
US8447066B2 (en) 2009-03-12 2013-05-21 Google Inc. Performing actions based on capturing information from rendered documents, such as documents under copyright
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
US8521484B2 (en) * 2010-06-02 2013-08-27 Livermore Software Technology Corp. Curve matching for parameter identification
TWI476640B (zh) 2012-09-28 2015-03-11 Ind Tech Res Inst 時間資料序列的平滑化方法與裝置
US20140098142A1 (en) * 2012-10-09 2014-04-10 School Yourself, Inc. System and method for generation and manipulation of a curve in a dynamic graph based on user input
KR102255049B1 (ko) 2013-11-19 2021-05-25 가부시키가이샤 와코무 잉크 데이터의 생성, 잉크 데이터의 렌더링, 잉크 데이터의 조작, 및 잉크 데이터의 전달을 위한 방법 및 시스템
RU2608885C2 (ru) 2014-06-30 2017-01-25 Общество С Ограниченной Ответственностью "Яндекс" Способ определения точки кривой, ближайшей к позиции на карте
US9322666B2 (en) * 2014-06-30 2016-04-26 Yandex Europe Ag Method for displaying a position on a map
CN107767429B (zh) * 2016-08-18 2021-11-16 阿里巴巴集团控股有限公司 曲线生成方法及设备
CN111443864B (zh) * 2020-04-14 2023-03-07 重庆赋比兴科技有限公司 基于iOS的曲线绘制方法
CN114491377B (zh) * 2020-11-13 2024-07-26 北京广利核系统工程有限公司 应用于核电站的斜率计算方法及装置
US11321884B1 (en) * 2021-03-19 2022-05-03 Adobe Inc. Generating candidate mirror snap points using determined axes of symmetry
US11769281B2 (en) * 2022-02-01 2023-09-26 Adobe Inc. Vector object transformation

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4791581A (en) * 1985-07-27 1988-12-13 Sony Corporation Method and apparatus of forming curved surfaces
US4760548A (en) * 1986-06-13 1988-07-26 International Business Machines Corporation Method and apparatus for producing a curve image
GB2204216B (en) * 1987-04-30 1991-02-06 Ibm Curve generation in a display system
JP3000101B2 (ja) * 1987-08-19 2000-01-17 洋 牧野 軌跡制御補間方法
KR930002339B1 (ko) * 1989-04-20 1993-03-29 가부시기가이샤 도시바 짧은 직선 벡터의 곡선 세그멘트에 3차 베지어(Bzxier)곡선을 정합시키는 방법
FR2646256A1 (fr) * 1989-04-24 1990-10-26 Digital Equipment Int Procede pour realiser des dessins a l'aide d'un ordinateur
JPH03127186A (ja) * 1989-10-12 1991-05-30 Mitsubishi Electric Corp 描画方式
US5317682A (en) * 1989-10-24 1994-05-31 International Business Machines Corporation Parametric curve evaluation method and apparatus for a computer graphics display system
JP2734711B2 (ja) * 1990-01-12 1998-04-02 日本電気株式会社 曲線発生装置
JP3049096B2 (ja) * 1990-12-20 2000-06-05 株式会社リコー 曲面間のフィレット面生成方式
JP3137245B2 (ja) * 1991-10-30 2001-02-19 ソニー株式会社 自由曲線作成方法及び自由曲面作成方法
EP0551543A1 (de) * 1992-01-16 1993-07-21 Hewlett-Packard GmbH Verfahren zur Modifizierung eines geometrischen Objektes und System zur rechnergestützten Konstruktion
US5588100A (en) * 1992-05-18 1996-12-24 Microsoft Corporation Method and system for creating a freeform drawing object
US5367617A (en) * 1992-07-02 1994-11-22 Microsoft Corporation System and method of hybrid forward differencing to render Bezier splines
JPH06110992A (ja) * 1992-09-25 1994-04-22 Agency Of Ind Science & Technol Cadシステムにおける形状変形入力操作方法
US5715473A (en) * 1992-12-29 1998-02-03 Apple Computer, Inc. Method and apparatus to vary control points of an outline font to provide a set of variations for the outline font
US5500927A (en) * 1993-03-18 1996-03-19 Macromedia, Inc. System and method for simplifying a computer-generated path
US5594852A (en) * 1994-08-17 1997-01-14 Laser Products, Inc. Method for operating a curve forming device
US5566288A (en) * 1994-09-02 1996-10-15 Caterpillar Inc. System and method for automatically fitting a B-spline curve to a set of data points
US5694535A (en) * 1995-03-24 1997-12-02 Novell, Inc. Direct interactive, constant-time curve apparatus and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109521731A (zh) * 2017-09-19 2019-03-26 沈阳高精数控智能技术股份有限公司 一种基于公差带的G2连续Bézier刀具轨迹平滑算法

Also Published As

Publication number Publication date
JP4153065B2 (ja) 2008-09-17
EP0847028B1 (de) 2004-01-14
CA2220375A1 (en) 1998-06-05
JPH10293859A (ja) 1998-11-04
EP0847028A3 (de) 1999-11-03
DE69727200D1 (de) 2004-02-19
US6111588A (en) 2000-08-29
EP0847028A2 (de) 1998-06-10

Similar Documents

Publication Publication Date Title
DE69727200T2 (de) Verfahren und Program zur Erzeugung und Modifizierung von Kurven auf einen Rechnerbildschirm
DE60036894T2 (de) Erzeugung einer Glyphe
DE69731434T2 (de) Verfahren und Gerät zur Modifizierung eines Node-Linkdiagramms
DE69428265T2 (de) Verfahren und system zur erzeugung, spezifizierung und generierung von parametrischen schriftarten
DE69428647T2 (de) Verfahren und Gerät zur Erzeugung eines zweiten gemischten Bildsignals im räumlichen Kontext eines ersten Bildsignals
DE60032832T2 (de) Darstellung einer gekrümmten Oberfläche in mehreren Auflösungen
DE69600392T2 (de) Vorrichtung und verfahren zum gestalten von bahndefiniertenkurven
DE3587690T2 (de) Verfahren um Schrifttypen mit Skalaänderungen herzustellen.
DE69312401T2 (de) Vorrichtung und verfahren zur erzeugung von linien von variabler breite
DE60310331T2 (de) Verfahren, Vorrichtung, Programm und Datenträger zur Bearbeitung von Bilddaten
DE69534331T2 (de) Verfahren und Vorrichtung zur Hervorhebung der Einzelheit einer Baumstruktur
DE69130198T2 (de) Bildanzeigesysteme
DE69222562T2 (de) Verfahren zum Dekompilieren zur Realisierung eines Graphs unter Anwendung eines Rechners
DE69221414T2 (de) Intelligenter Schriftartdarstellungskoprozessor
DE69629173T2 (de) Automatisches Plazieren eines graphischen Musters
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
DE4014231A1 (de) Verfahren zum bearbeiten der steuerpunkte eines symbolbildes
DE19713654B4 (de) Progressiv darstellbare Umrissschrift und Verfahren zum Erzeugen, Übertragen und Darstellen derselben
DE19512185B4 (de) Verfahren und Vorrichtung zum Erzeugen von Fontdaten
DE102014006549B4 (de) Technik zur Verarbeitung einer Zeichenfolge zur graphischen Darstellung an einer Mensch-Maschine-Schnittstelle
DE69427809T2 (de) Vorrichtung und Verfahren zur graphischen Darstellung
DE69229575T2 (de) Verfahren und Vorrichtung für die Anpassung von Rasterdaten an die Auflösung eines Druckers
DE69207184T2 (de) Vorrichtung und verfahren zum automatisierten seitenlayout von text undgraphischen elementen
DE69222255T2 (de) Verarbeitungsverfahren für Zeichen oder graphische Daten
DE69130958T2 (de) Graphisches ausgangs-system und -verfahren.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition