DE69229669T2 - Verfahren und Vorrichtung zur Erzeugung und Darstellung von Freiform-Strichen - Google Patents

Verfahren und Vorrichtung zur Erzeugung und Darstellung von Freiform-Strichen

Info

Publication number
DE69229669T2
DE69229669T2 DE69229669T DE69229669T DE69229669T2 DE 69229669 T2 DE69229669 T2 DE 69229669T2 DE 69229669 T DE69229669 T DE 69229669T DE 69229669 T DE69229669 T DE 69229669T DE 69229669 T2 DE69229669 T2 DE 69229669T2
Authority
DE
Germany
Prior art keywords
points
curve
center curve
along
generating
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 - Fee Related
Application number
DE69229669T
Other languages
English (en)
Other versions
DE69229669D1 (de
Inventor
Robert V. Klassen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xerox Corp
Original Assignee
Xerox Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xerox Corp filed Critical Xerox Corp
Publication of DE69229669D1 publication Critical patent/DE69229669D1/de
Application granted granted Critical
Publication of DE69229669T2 publication Critical patent/DE69229669T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

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

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zum Erzeugen und Anzeigen von Freiformstrichen.
  • Freiformkurven werden in nützlicher Weise für zum Beispiel computerunterstützte Entwurfs- und Herstellungssysteme, Computergraphik, Graphik und das Setzen verwendet, um Kurven mit gleichmäßiger und variabler Breite zu erzeugen. Weiterhin bestehen verschiedene Verfahren und Vorrichtungen zum Darstellen von graphischen Wiedergaben derartiger Freiformkurven. Zum Beispiel gibt das US-Patent 4,933,889 (Meshkat et al.) ein Verfahren zum Erzeugen von finiten Elementen zum Darstellen der Form eines Objektes an.
  • Insbesondere sind Splinekurven ausführlich untersucht worden und werden nun allgemein in der Computergraphik verwendet (siehe allgemein Bartels, R. H. et al. An Introduction to Splines for Use in Computer Graphics and Geometric Modeling, Morgan Kauffman Publishers, Los Altos, California, 1987; Farm, G. Curves and Surfaces for Computer Aided Geometric Design, Academic Press, San Diego, California, 1988).
  • Splinekurven werden in der Computergraphik auch verwendet, um zusätzlich zu Kurven, die keine Breite haben, Freiformstriche mit konstanter oder variierender Breite zu erzeugen und anzuzeigen. Zum Beispiel gibt Chua, Y. S., Bezier Brushstrokes, Computer-Aided Design, Butterworth-Heineman, Vol. 22, No. 9 (November 1990) auf den Seiten 550-54, 604 ("der Chua-Artikel") eine Technik zum Verwenden von Bezier-Kurven zum mathematischen Modellieren von Pinselstrichen an. Der Chua-Artikel lehrt die Verwendung von Bezier-Funktionen zum Modellieren verschiedener Eigenschaften eines Pinselstriches wie zum Beispiel Variationen in der Form oder den Umrissen des Pinselstriches, der Schattierung oder der Farbvariation entlang und quer zum Pinselstriches sowie einiger Effekte, die auf die Variation des Feuchtigkeitsgehalts des Pinsels und auf die Eigenschaften des Papiers zurückzuführen sind. Der Chua-Artikel definiert einen Pinselstrich durch wenigstens ein Pinselsegment, dessen Form (oder Umrisse) mit zwei kubischen Bezier-Kurven (als Bezier-Segmente bezeichnet) modelliert werden. Jedes Bezier-Segment ist mit einem Parameter u assoziiert, der als "der Parameter entlang des Pinselsegments" bezeichnet wird, wobei u am Beginn der Segmente gleich 0 und am Ende der Segmente gleich 1 ist. Die Form eines allgemeinen Pinselstrichs kann unter Verwendung eines oder mehreren Pinselsegmente modelliert werden.
  • Als weiteres Beispiel gibt das US-Patent 4,912,659 (Lianci et al.) ein im Pipeline-Verfahren und parallel verarbeitendes Verarbeitungssystem zum Erzeugen von Oberflächen für Drahtmodelle und solide/schattierte Modelle in einer Rastergraphikanzeige an, wobei als Eingaben zu einem Transformationsprozessor Parameter für eine rationale Bezier-Oberfläche verwendet werden.
  • Beträchtliche Aufmerksamkeit wurde Offset-Kurven vor allem auf dem Gebiet des CAD gewidmet (siehe allgemein Farm, G., Curvature Continuitv and Offsets for Piecewise Conics, TOG 8, 2 (April 1989), pp. 89-99; Farouki, R., und Neif, C., Algebraic Properties of Plane Offset Curves, CAGD, p. 297-299; Farouki, R., und Neif, C., Analytic Properties of Plane Offset Curves, CAGD, pp. 297-299; Hoschek, J., Sohne Approximation of Offset Curves, CAGD 5 (1988), pp. 33-40; Klass, R., An Offset Sohne Approximation for Plane Curves, CAD 15, 5 (September 1983), pp. 297-299). Es bestehen verschiedene Definitionen für Offset- Kurven. Die vorwiegende Definition basiert auf einer Zentrumskurve bzw. "Generator"Kurve" mit einem Offset im Abstand w, der entlang einer Normalen zu jedem Punkt der Zentrumskurve definiert ist. Allgemein bezeichnet die Bezeichnung "linke Offsetkurve" die Offsetkurve auf der Basis einer Normalen mit einem positiven Vorzeichen, während die Bezeichung "rechte Offsetkurve" die Offsetkurve auf der Basis einer Normalen mit einem negativen Vorzeichen bezeichnet. Weiterhin wird die Bezeichnung "Offsetkurve" verwendet, um die linke oder rechte Offsetkurve zu bezeichnen, während die Bezeichnung "Offsetkurvenpaar" verwendet wird, um die linke und die rechte Offsetkurve zu bezeichnen.
  • Die zunehmende Verwendung von Offsetkurven macht diese im Vergleich zu anderen herkömmlichen Techniken zu einem effektiven Hilfsmittel zum Ausdrücken von Kurven und Oberflächen, wobei ihre Verwendung bisher jedoch allgemein auf Anwendungen beschränkt bleibt, für welche sie natürlich sind. Zum Beispiel werden Ofisetoberflächen für die Beschreibung von Toleranzzonen (siehe z. B. Hoschek, J., Sohne Approximation of Offset Curves, CAGD 5 (1988), pp. 33-40), von Außenoberflächen von Materialien, für welche die Innenoberfläche die Bezugsgröße ist (siehe z. B. Hoschek, J., Spline Approximation of Offset Curves, CAGD 5 (1988), pp. 33-40; Klass, R. An Offset Spline Approximation for Plane Curves, CAD 15, 5 (September 1983), pp. 297-299) und von Maschinenwerkzeugpfaden verwendet (siehe z. B. Farouki, R., Neif, C., Analvtic Properties of Plane Offset Curves, CAGD, pp. 297-299).
  • Die Anwendung von Offsetkurven wird meist durch physikalische Probleme motiviert, welche Offsetkurven mit konstanter Breite benötigen. Weil konstante Breiten aufweisende Offset kurven von Splinekurven keine Splinekurven sind (sie sind allgemein nicht-algebraisch), wurde die meiste Aufmerksamkeit auf die effektive Annäherung an Offsets mit algebraischen Kurven (gewöhnlich rationalen oder nicht-rationalen Splinekurven) verwandt. Allgemein können Offsetkurven jedoch variable Breiten aufweisen.
  • Zum Beispiel gibt das US-Patent 4,620,287 (Yam) (im folgenden als "Yam" bezeichnet) ein Verfahren und eine Vorrichtung zum Wiedergeben von Kurven mit gleichbleibender Breite, d. h. von Strichen mit gleichbleibender Breite an. Insbesondere gibt Yam eine Technik an, bei der eine Kurve durch Annäherung mit einer Reihe von Bezier-Kurven erhalten wird. Jede Bezier-Kurve weist eine vorbestimmte Breite auf, die durch ein entsprechendes Rechteck mit der vorbestimmten Breite definiert wird. Die Enden der Rechtecke werden geglättet und gerundet, so daß durch Annäherung mit benachbarten Rechtecken eine Kurve mit einer gleichbleibenden Breite erhalten wird.
  • Als weiteres Beispiel gibt Pham, B., Expressive Brushstrokes, CVGIP: Graphical Models and Image Processing, Vol. 53, No. 1 (January 1991), pp. 1-6 ("der Pham-Artikel") eine Technik zum Modellieren von Pinselstrichen auf der Basis von Annäherungen an variable Offsets mit gleichmäßigen kubischen B-Splines an. Ein Bediener gibt eine Reihe von Punkten oder Knoten auf einer einen Pinselstrich wiedergebenden Kurve an. Unter Verwendung eines Umkehralgorithmus werden Steuerscheitelpunkte eines kubischen B-Splines erhalten, um einen kubischen B-Spline durch die Knoten zu erhalten. Als nächstes werden mit einer gegebenen Offsetdistanz für jeden der Knoten der Originalkurve entsprechende Offsetknoten erhalten. Die Offsetdistanzen werden von den entsprechenden Knoten der Originalkurve in einer zu der Kurve normalen Richtung gemessen. Schließlich werden unter Verwendung des Umkehralgorithmus Offset-Steuerscheitelpunkte aus den Offsetknoten erhalten, um eine Offset- B-Splinekurve durch die Offsetknoten zu erhalten.
  • COMPUTER-AIDED DESIGN vol. 22, no. 4, May 1990, GB pp. 199-201 XP142575 (Meek et al) 'Offset curves of clothoidal splines" gibt an, daß Offsetkurven von kubischen B-Splines nicht viel komplizierter sind als die Kurven selbst und effektiv auf einer Plottereinrichtung wiedergegeben werden können.
  • Es ist eine Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zum Erzeugen und Anzeigen von Freiformstrichen mit einer Zentrumskurve und rechten und linken Offsetkurven und insbesondere ein Verfahren und eine Vorrichtung zum Erzeugen und An zeigen von Punkten entlang der Zentrumskurve und der rechten und linken Offsetkurve anzugeben.
  • In Übereinstimmung mit der vorliegenden Erfindung ist ein Verfahren zum Erzeugen und Anzeigen eines Freiformstriches angegeben, wobei das Verfahren durch ein Datenverarbeitungssystem mit einem Speicher und einer Anzeige ausgeführt wird und wobei das Verfahren Schritte umfaßt zum: Erzeugen im Speicher von Punkten entlang einer Zentrumskurve des Freiformstriches, wobei die Zentrumskurve in Abhängigkeit von einem Parameter t variiert und wobei jeder der Punkte entlang der Zentrumskurve mit einer durch eine Funktion x(t) definierten horizontalen Koordinate, einer durch eine Funktion y(t) definierten vertikalen Koordinate und einer durch eine Funktion w(t) definierten Breite assoziiert ist; Erzeugen im Speicher von Punkten entlang einer rechten Offsetkurve und entlang einer linken Offsetkurve für entsprechende der Punkte entlang der Zentrumskurve, wobei die rechte und die linke Offsetkurve in Abhängigkeit vom Parameter t variieren und wobei jeder der Punkte entlang der rechten und der linken Offsetkurve mit einer horizontalen Koordinate und mit einer vertikalen Koordinate assoziiert ist, die in Übereinstimmung mit der horizontalen Koordinate, der vertikalen Koordinate, der Breite und dem Normalvektor erzeugt werden, die mit dem entsprechenden Punkt entlang der Zentrumskurve assoziiert sind; und Anzeigen auf der Anzeige von graphischen Wiedergaben der Punkte entlang der rechten und der linken Offsetkurven, um eine äußere Begrenzung des Freiformstriches anzuzeigen.
  • Ebenfalls in Übereinstimmung mit der vorliegenden Erfindung ist eine Vorrichtung zum Erzeugen und Anzeigen eines Freiformstriches angegeben, wobei die Vorrichtung umfaßt: eine Schaltung zum Erzeugen von Punkten entlang einer Zentrumskurve des Freiformstriches, wobei die Zentrumskurve in Abhängigkeit von einem Parameter t variiert, und wobei jeder der Punkte entlang der Zentrumskurve mit einer durch eine Funktion x(t) definierten horizontalen Koordinate, einer durch eine Funktion y(t) definierten vertikalen Koordinate und einer durch eine Funktion w(t) definierten Breite assoziiert ist; eine Schaltung zum Erzeugen eines Normalvektors für jeden der Punkte entlang der Zentrumskurve; eine Schaltung zum Erzeugen von Punkten entlang einer rechten Offsetkurve und einer linken Offsetkurve für entsprechende Punkte entlang der Zentrumskurve, wobei die rechte und die linke Offsetkurve in Abhängigkeit vom Parameter t variieren und wobei jeder der Punkte entlang der rechten und der linken Offsetkurve mit einer horizontalen Koordinate und mit einer vertikalen Koordinate assoziiert ist, die in Übereinstimmung mit der horizontalen Koordinate, der vertikalen Koordinate, der Breite und des Normalvektors erzeugt werden, die mit dem entsprechenden Punkt entlang der Zentrumskurve assoziiert sind; und eine Anzeige zum Anzeigen von graphischen Wiedergaben der Punkte entlang der rechten und der linken Offsetkurven, um eine äußere Begrenzung des Freiformstriches anzuzeigen.
  • In einer bevorzugten Ausführungsform ist die Zentrumskurve eine Splinekurve, wobei die Punkte entlang der Zentrumskurve unter Verwendung einer Unterteilungstechnik in Übereinstimmung mit vorbestimmten Abbruchbedingungen erzeugt werden.
  • Im folgenden werden beispielhafte Ausführungsformen der vorliegenden Erfindung mit Bezug auf die beigefügten Zeichnungen beschrieben. Es zeigen:
  • Fig. 1 ein Blockdiagramm, das ein Datenverarbeitungssystem zum Erzeugen und Anzeigen einer Freiformkurve in Übereinstimmung mit der vorliegenden Erfindung zeigt,
  • Fig. 2 ein Flußdiagramm, das eine Operation des Datenverarbeitungssystems von Fig. 1A in Übereinstimmung mit einer ersten Ausführungsform der vorliegenden Erfindung zeigt,
  • Fig. 3(a)-3(g) auf das Flußdiagramm von Fig. 3 bezogene Darstellungen,
  • Fig. 4 ein Flußdiagramm einer Operation des Datenverarbeitungssystems von Fig. 1A in Übereinstimmung mit einer zweiten Ausführungsform der vorliegenden Erfindung,
  • Fig. 5(a)-5(f) auf das Flußdiagramm von Fig. 4 bezogene Darstellungen,
  • Fig. 6 eine Technik zum Eingeben von mit Steuerpunkten assoziierten horizontalen Koordinaten, vertikalen Koordinaten und Breiten in das Datenverarbeitungssystem von Fig. 1,
  • Fig. 7 ein Flußdiagramm, das ein Beispiel der Subdivisionstechnik des Flußdiagramms von Fig. 4 zeigt, und
  • Fig. 8 ein Blockdiagramm, das ein Hardwaresystem zum Erzeugen und Anzeigen einer Freiformkurve in Übereinstimmung mit der vorliegenden Erfindung zeigt.
  • In den verschiedenen beigefügten Zeichnungen geben gleiche Bezugszeichen ähnliche oder entsprechende Teile an.
  • Wie in Fig. 1 gezeigt, ist ein Datenverarbeitungssystem 10 zum Erzeugen und Anzeigen eines Freiformstriches vorgesehen. Das Datenverarbeitungssystem 10 umfaßt eine Prozessor 20, der mit einem Speicher 30, einer Anzeige 40 und eine Eingabeeinrichtung 50 verbunden ist.
  • Die Eingabevorrichtung 50 umfaßt zum Beispiel eine Tastatur, eine Maus, einen Berührungsbildschirm und/oder einen Digitalisierer, damit ein Bediener des Datenverarbeitungssystems 10 Daten an den Prozessor 20 übertragen kann, die einen zu erzeugenden und anzuzeigenden Freiformstrich beschreiben. Der Speicher 30 umfaßt zum Beispiel eine optische oder magnetische Platte sowie einen Halbleiterspeicher, der einen Arbeitsspeicher und einen Speicherbereich für den Prozessor 20 vorsieht.
  • Der Prozessor 20 umfaßt zum Beispiel eine Standard-CPU, die Punkte entlang einer Zentrumskurve des Freiformstriches und Punkte entlang der rechten und der linken Offsetkurve erzeugen kann und graphische Wiedergaben dieser Punkte auf der Anzeige 40 anzeigen kann. Zum Beispiel kann ein Motorola 680 · 0, ein Intel/IBM R6000 oder ein SPARC als Prozessor 20 verwendet werden. Die Anzeige 40 umfaßt zum Beispiel eine Farbanzeige oder eine monochrome Anzeige, welche die durch den Prozessor erzeugten graphischen Wiedergaben der Punkte entlang der Zentrumskurve und entlang der rechten und der linken Offsetkurve anzeigen kann. Weiterhin kann die Anzeige 40 eine Druckeinrichtung wie einen Laserdrucker oder einen Plotter umfassen.
  • Im folgenden werden verschiedene Formen des Betriebs des in Fig. 1 gezeigten Datenverarbeitungssystems mit Bezug auf Fig. 2 bis 7 beschrieben.
  • Erste Ausführungsform
  • Fig. 2 zeigt ein Flußdiagramm 1000, das eine Operation des Datenverarbeitungssystems 10 von Fig. 1 in Übereinstimmung mit einer ersten Ausführungsform der vorliegenden Erfindung zeigt. Das Flußdiagramm 1000 wird mit Bezug auf das Datenverarbeitungssystem 10 von Fig. 1 und die graphischen Darstellungen von Fig. 3(a)-3(g) erläutert.
  • In Schritt S1010 gibt eine Bediener des Datenverarbeitungssystems 10 mit Hilfe der Eingabeeinrichtung 50 eine Funktion x(t) und eine Funktion y(t) ein, um jeweils horizontale und vertikale Koordinaten anzugeben, die mit jedem Punkt entlang einer Zentrumslinie p(t) einer zu erzeugenden und anzuzeigenden Freiformkurve assoziiert sind. Dem Fachmann sollte deutlich sein, daß die Funktionen x(t) und y(t) nur insofern beschränkt sind, daß sie eine Zentrumskurve p(t) definieren sollten, für die ein Verfahren zum Erzeugen eines Normalvektors an jedem Punkt entlang eines gewünschten Intervalls der Zentrumskurve besteht.
  • In dem vorliegenden Fall variiert die Zentrumskurve der zu erzeugenden und anzuzeigenden Freiformkurve in Abhängigkeit von einem Parameter t, wobei jeder Punkt entlang der Zen trumskurve wie folgt mit einer durch die Funktion x(t) definierten Koordinate und mit einer durch die Funktion y(t) definierten Koordinate assoziiert ist:
  • p(t) = [x(t), y(t)] = bi(t)v Gleichung 1.0
  • wobei vi = (xi, yi) Punkte im euklidischen Raum sind, und wobei b; (t) ein Polynom im Parameter t ist. Beispiele der Funktionen x(t), y(t) und p(t) sind jeweils in Fig. 3(a), 3(b) und 3(c) innerhalb des offenen Intervalls [0,1] gezeigt. Wie in Fig. 3(a), 3(b) und 3(c) gezeigt, ist x(t) = sin(πt), y(t) = sin(πt) und p(t) = [x(t), y(t)]. Es ist zu beachten, daß es in der Computergraphik üblich ist, parametrische kubische Kurven wie in diesem Fall die Zentrumskurve in einem Parameter zu betrachten, wobei der Parameter auf das Intervall [0,1] beschränkt ist. Zum Beispiel ist bekannt, daß Bezier-Splinekurven innerhalb des Intervalls [0,1] stabiler sind als anderswo. Es kann dementsprechend vorteilhaft sein, den Parameter t auf dieses Intervall zu beschränken. Wenn angenommen wird, daß die Funktion p(t) in dem Intervall [0,1] parametrisiert wird, dann ist es vorteilhaft, wenn der parametrische Schritt nicht größer als t/2 ist. Nach Abschluß des Schrittes S1010 fährt die Steuerung mit Schritt S1020 fort.
  • In Schritt S1020 gibt der Bediener mit Hilfe der Eingabeeinrichtung 50 eine Funktion w(t) ein, die eine mit jedem Punkt entlang der Zentrumskurve p(t) assoziierte Breite angibt. Jeder Punkt entlang der Zentrumskurve ist also mit einer horizontalen und mit einer vertikalen Koordinate und weiterhin mit einer durch die Funktion w(t) definierten Breite assoziiert. Ein Beispiel für die Funktion w(t) ist in Fig. 3(d) innerhalb des Intervalls [0,1] gezeigt. Wie in Fig. 3(d) gezeigt ist w(t) = ½ (1 + sind(+ πt/2). Nach Abschluß von Schritt S1020 fährt die Steuerung mit Schritt S1030 fort.
  • In Schritt S1030 erzeugt der Prozessor 20 im Speicher 30 Punkte entlang der Zentrumskurve p(t). Insbesondere erzeugt der Prozessor 20 unter Verwendung der Funktionen x(t), y(t) und w(t) jeweils horizontale Koordinaten, vertikale Koordinaten und Breiten, die mit einer Anzahl von Punkten entlang der Zentrumskurve p(t) assoziiert sind, jeweils für verschiedene Werte des Parameters t innerhalb eines gewünschten Intervalls. Wie oben erläutert, ist das Intervall vorzugsweise [0,1], wobei die maximale Schrittgröße des Parameters t gleich t/2 ist. Der Prozessor 20 speichert dann die erzeugten Koordinaten und Breiten im Speicher 30.
  • Obwohl der Prozessor 20 theoretisch mit einer unendlichen Zahl von Punkten entlang der Zentrumskurve assoziierte Koordinaten und Breiten erzeugen kann, ist in der Praxis nur eine vorbestimmte Anzahl von Punkten erforderlich, um den Freiformstrich korrekt anzuzeigen. Vorzugsweise kann die Anzahl der Punkte, für die Koordinaten und Breiten durch den Prozessor 20 erzeugt werden, durch einen Bediener in Übereinstimmung mit verschiedenen Faktoren wie der Größe des Speichers 30, der Geschwindigkeit des Prozessors 20 und der Auflösung der Anzeige 40 bestimmt werden. Nach Abschluß des Schrittes S1030 fährt die Steuerung mit Schritt S1040 fort.
  • In Schritt S1040 erzeugt der Prozessor 20 einen mit jedem in Schritt S1030 entlang der Zentrumskurve erzeugten Punkt assoziierten Normalvektor. Vorzugsweise erzeugt der Prozessor 20 für jeden Wert von t innerhalb des Intervalls [0,1], für den Koordinaten und eine Breite erzeugt wurden, einen Einheitsnormalvektor n(t), der wie folgt ausgedrückt wird:
  • Aus Gleichung 2.0 wird deutlich, daß der Einheitsnormalvektor n(t) eine x-Komponente und eine y-Komponente aufweist. Vorzugsweise wird jeder erzeugte Normalvektor durch den Prozessor 20 im Speicher 30 gespeichert. Beispiele von Einhaitsnormalvektoren n(t) entlang der Zentrumskurve p(t) von Fig. 3(c) sind in Fig. 3(e) für die Werte t = 0, 1/4, 1/2, 3/4 und 1 gezeigt. Nach Abschluß von Schritt S1040 fährt die Steuerung mit Schritt S1050 fort.
  • In Schritt S1050 erzeugt der Prozessor 20 im Speicher 30 Punkte entlang einer rechten Offsetkurve und einer linken Offsetkurve für entsprechende der in Schritt S1030 entlang der Zentrumskurve erzeugten Punkte. Die rechte und die linke Offsetkurve variieren in Abhängigkeit vom Parameter t, wobei jeder der Punkte entlang der rechten und der linken Offsetkurve mit einer horizontalen und einer vertikalen Koordinate assoziiert ist, die durch den Prozessor 20 in Übereinstimmung mit der horizontalen Koordinate, der vertikalen Koordinate, der Breite und des Normalvektors, die mit dem entsprechenden Punkt entlang der Zentrumskurve assoziiert sind, erzeugt werden. Insbesondere erzeugt der Prozessor 20 unter Verwendung der Koordinaten, der Breiten und der im Speicher 30 gespeicherten Normalvektoren horizontale Koordinaten und vertikale Koordinaten, die mit Punkten entlang der Offsetkurve für Werte des Parameters t innerhalb des gewünschten Intervalls assoziiert sind. Das Ergebnis dieses Schrittes ist eine Ortskurve mit Punkten o(t), die wie folgt definiert sind:
  • o(t) = p(t) ± w(t)n(t) Gleichung 3.0
  • Wenn man annimmt, daß w(t) > 0 ist, dann werden Punkte entlang der rechten Offsetkurve durch das negative Vorzeichen in Gleichung 3.0 erzeugt und werden Punkte entlang der linken Offsetkurve durch das positive Vorzeichen in Gleichung 3.0 erzeugt. Die Ortskurve der Punkte o(t) für die Funktion p(t), w(t) und n(t) von Fig. 3(c)-(e) ist in Fig. 3(f) gezeigt. Nachdem die mit jedem der Punkte entlang der Offsetkurven assoziierten Koordinaten erzeugt sind, speichert der Prozessor 20 dieselben im Speicher 30. Nach Abschluß des Schrittes S1050 fährt die Steuerung mit Schritt S1060 fort.
  • In Schritt S1060 zeigt der Prozessor 20 auf der Anzeige 40 eine graphische Wiedergabe der Punkte an, die in Schritt S1050 entlang der rechten und der linken Offsetkurve erzeugt werden, um eine äußere Grenze des Freiformstriches anzuzeigen. Insbesondere liest der Prozessor 20 die Koordinaten der Punkte entlang der Offsetkurven aus dem Speicher 30 und steuert die Anzeige 40, um Punkte an Pixelpositionen auf der Anzeige 40 anzuzeigen, die den Lesekoordinaten entsprechen.
  • Dem Fachmann sind verschiedene Verfahren zum Bestimmen der Entsprechungen zwischen den Koordinaten der Punkte entlang der Offsetkurven und den Pixelpositionen auf der Anzeige 40 bekannt, weshalb hier auf eine ausführliche Beschreibung derartiger Verfahren verzichtet wird. In dem oben mit Bezug auf Fig. 3(a)-3(f) beschriebenen Beispiel zeigt die Anzeige 40 das in Fig. 3(g) angezeigte Bild an.
  • Zweite Ausführungsform
  • In einer zweiten Ausführungsform der vorliegenden Erfindung ist die Zentrumskurve der Freiformkurve eine Splinekurve, wobei Punkte entlang der Zentrumskurve unter Verwendung einer Unterteilungstechnik erzeugt werden. Dem Fachmann ist bekannt, daß eine Splinekurve eine Kurve ist, deren Form durch eine Reihe von Steuerpunkten definiert werden kann. Beispiele für Splinekurven sind Bezier-Kurven und B-Splinekurven.
  • Fig. 4 zeigt ein Flußdiagramm, das eine Operation des Datenverarbeitungssystems 10 von Fig. 1 in Übereinstimmung mit der zweiten Ausführungsform der vorliegenden Erfindung darstellt. Das Flußdiagramm 1000 wird im folgenden mit Bezug auf das Datenverarbeitungssystem 10 von Fig. 1 und die graphischen Darstellungen von Fig. 5(a)-5(f) erläutert.
  • In Schritt S2010 gibt ein Bediener mit Hilfe der Eingabeeinrichtung 50 horizontale Koordinaten, vertikale Koordinaten und Breiten ein, die mit einer Vielzahl von Steuerpunkten assoziiert sind, um die Form einer Zentrumskurve zu definieren. Der Einfachheit halber wird angenommen, daß der Bediener für nur zehn Steuerpunkte assoziierte Koordinaten und Breiten eingibt. Zum Beispiel gibt der Bediener wie in Fig. 5(a) gezeigt horizontale Koordinaten xA-J, vertikale Koordinaten yA-J und Breiten WA-J für jeweils die Steuerpunkte A bis J ein. Die Koordinaten und Breiten werden durch den Prozessor 20 im Speicher 30 gespeichert. Dabei ist zu beachten, daß die mit den Steuerpunkten assoziierten horizontalen Koordinaten und vertikalen Koordinaten jeweils horizontalen und vertikalen Pixelpositionen auf der Anzeige 40 entsprechen. Zum Beispiel ist die Position jedes Pixels auf der Anzeige 40 wie in Fig. 6 gezeigt mit einer horizontalen Koordinate x und einer vertikalen Koordinate y assoziiert, die den entsprechenden horizontalen Koordinaten xA-J und den vertikalen Koordinaten yA-J entsprechen, die mit den Steuerpunkten A bis J assoziiert sind. Vorzugsweise ist das Zentrumspixel der Anzeige 40 mit den x- und y-Koordianten (0,0) assoziiert, so daß die mit den Steuerpunkten assoziierten horizontalen Koordinaten und vertikale Koordinaten negative und positive Werte aufweisen können.
  • Der Schritt S2010 kann auf verschiedene Weise ausgeführt werden. Wenn man zum Beispiel annimmt, daß die Eingabeeinrichtung 50 ein Diskettenlaufwerk umfaßt, dann können die mit jedem Steuerpunkt assoziierten Koordinaten und Breiten auf einer Diskette gespeichert und direkt in den Prozessor 20 zum Speichern im Speicher 30 eingegeben werden. Wenn die Eingabeeinrichtung 50 eine Tastatur umfaßt, kann der Bediener die Koordinaten und Breiten eingeben, die durch den Prozessor 20 gelesen werden. Vorzugsweise umfaßt die Eingabeeinrichtung eine Maus, wobei der Bediener wie in Fig. 6 gezeigt die Maus steuert, um einen Zeiger 200 über die Anzeige 40' zu einer Position auf der Anzeige 40' zu bewegen, die den mit einem Steuerpunkt assoziierten gewünschten Koordinaten entspricht. Um die Koordinaten in das Datenverarbeitungssystem 10 einzugeben, kann der Bediener zum Beispiel mit der Maus "klicken", worauf der Steuerpunkt auf der Anzeige 40' angezeigt wird. Um die Breiten einzugeben, wird ein Kreis mit einem Radius R eingegeben, dessen Zentrum dem Steuerpunkt entspricht. Der Radius R entspricht der mit dem Steuerpunkt assoziierten Breite. Um die mit jedem Steuerpunkt assoziierte Breite zu setzen, verwendet der Bediener die Maus, um den Zeiger 200 auf den Umfang eines den Steuerpunkt umgebenden Kreises zu setzen. Durch das "Ziehen" des Kreisumfangs entweder nach außen oder nach innen, kann der Bediener den Radius R des Kreises und damit die mit dem entsprechenden Steuerpunkt assoziierte Breite variieren. Vorzugsweise wird die Breite eines Steuerpunktes jedesmal automatisch durch den Prozessor 20 im Speicher 30 gespeichert, wenn der Radius R des entsprechenden Kreises geändert wird. Nach Abschluß von Schritt S2010 fährt die Steuerung mit Schritt S2020 fort.
  • In Schritt S2020 gruppiert der Prozessor 20 ausgewählte Steuerpunkte, um ein Segment zu spezifizieren. Vorzugsweise gruppiert der Prozessor 20 die Steuerpunkte in Gruppen von vier, wobei jede Gruppe von vier Steuerpunkten ein Segment spezifiziert. Dabei ist zu beachten, daß eine Zentrumskurve ein oder mehrere Segmente umfassen kann, die an ihren Enden miteinander verbunden sind. Zum Beispiel mit Bezug auf Fig. 5(a) gruppiert der Prozessor 20 die Steuerpunkte A bis D, um ein Segment ABCD mit den Endpunkten A und D zu spezifizieren, die Steuerpunkte D bis G, um ein Segment DEFG mit den Endpunkten D und G zu spezifizieren, und die Steuerpunkte 6 bis J, um ein Segment GHIJ mit den Endpunkten G und J zu spezifizieren. Aus Fig. 5(a) wird deutlich, daß der Prozessor 20 vorzugsweise die Steuerpunkte A bis J derart gruppiert, daß sich benachbarte Segmente einen gemeinsamen Endpunkt teilen. Es ist weiterhin zu beachten, daß die Endpunkte jedes Segments tatsächlich Punkte entlang der Zentrumskurve sind.
  • In Schritt S2030 unterteilt der Prozessor 20 jedes der in Schritt S2030 spezifizierten Segmente, um zusätzliche Steuerpunkte zu spezifizieren, von denen einer eine Punkt entlang der Zentrumskurve ist. Insbesondere spezifiziert der Prozessor 20 jedesmal zwei zusätzliche Segmente und erzeugt einen zusätzlichen Steuerpunkt, wenn er ein Segment unterteilt, wobei der zusätzliche Steuerpunkt ein Punkt entlang der Zentrumskurve ist. Im folgenden werden die Details von Schritt S2030 mit Bezug auf das in Fig. 7 gezeigte Flußdiagramm 3000 erläutert. Der Einfachheit halber wird nur die Unterteilung des in Fig. 5(b) gezeigten Segments ABCD beschrieben. Es ist jedoch zu beachten, daß der Prozessor 20 auch die Segmente DEFG und GHIJ entweder nach, vor oder gleichzeitig zu der Unterteilung des Segments ABCD unterteilt.
  • Wie in Fig. 7 gezeigt, liest der Prozessor 20 in Schritt S3010 die mit jedem der Steuerpunkte A, B, C und D assoziierte horizontale Koordinate, vertikalen Koordinate und Breite aus dem Speicher 30.
  • In Schritt S3020 erzeugt der Prozessor 20 eine horizontale Koordinate xk, eine vertikale Koordinate yk und eine Breite wk mit einem Punkt K im Mittelpunkt zwischen den Steuerpunkten A und B wie folgt:
  • Ebenfalls in Schritt S3020 erzeugt der Prozessor 20 eine horizontale Koordinate XL, eine vertikale Koordinate YL und eine Breite WL, die mit einem Punkt L in der Mitte zwischen den Steuerpunkten B und C assoziiert sind, wie folgt:
  • In Schritt S3020 erzeugt der Prozessor 20 weiterhin eine horizontale Koordinate xM, eine vertikale Koordinate yM und eine Breite wM, die mit einem Punkt M in der Mitte zwischen den Punkten C und D assoziiert sind, wie folgt:
  • Die Punkte K, L und M sind graphisch in Fig. 5(b) gezeigt. Nach Abschluß von Schritt S3020 fährt die Steuerung mit Schritt S3030 fort.
  • In Schritt S3030 erzeugt der Prozessor 20 eine horizontale Koordinate xN, eine vertikale Koordinate yN und eine Breite wN, die mit einem Punkt N in der Mitte zwischen den Punkten K und L assoziiert sind, wie folgt:
  • Ebenfalls in Schritt S3030 erzeugt der Prozessor 20 eine horizontale Koordinate xo, eine vertikale Koordinate yo und eine Breite wo, die mit einem Punkt O in der Mitte zwischen den Punkten L und M assoziiert sind, wie folgt:
  • Die Punkte N und O sind graphisch in Fig. 5(c) gezeigt Nach Abschluß von Schritt S3030, fährt die Steuerung mit Schritt S3040 fort.
  • In Schritt S3040 erzeugt der Prozessor 20 eine horizontale Koordinate WP, eine vertikale Koordinate yP und eine Breite wP, die mit einem Punkt in der Mitte zwischen den Punkten N und O assoziiert sind, wie folgt:
  • Der Punkt P ist graphisch in Fig. 5(d) gezeigt. Der Prozessor 20 speichert dann die horizontale Koordinate, die vertikale Koordinate und die Breite, die mit dem Punkt P assoziiert sind, im Speicher 30. Wie in Fig. 5(d) gezeigt, resultiert die oben beschriebene Unterteilungstechnik in fünf zusätzlichen Steuerpunkten, nämlich den Punkten K, N, P, O und M, wobei der zusätzliche Steuerpunkt P ein Punkt entlang der Zentrumskurve ist. Wie weiterhin in Fig. 5(d) gezeigt, resultiert die oben beschriebene Unterteilungstechnik in zwei zusätzlichen Segmenten, nämlich dem Segment AKNP und dem Segment POMD mit jeweils den Endpunkten A und P bzw. P und D. Nach Abschluß von Schritt S3040 fährt die Steuerung mit Schritt S3050 fort.
  • In Schritt S3050 werden die Schritte S3010 bis S3040 durch den Prozessor 20 auf jedem der in Schritt S2030 von Fig. 4 spezifizierten Segmente durchgeführt. Dabei ist zu beachten, daß die Schritte S3010 bis S3020 von Fig. 7 einen "Lauf' der Unterteilungstechnik in Überein stimmung mit der zweiten Ausführungsform der vorliegenden Erfindung darstellen. Ein auf den Segmenten von Fig. 7 durchgeführter Lauf der Unterteilungstechnik resultiert also in fünfzehn zusätzlichen Steuerpunkten, von denen drei Punkte auf der Zentrumskurve sind. Nach Abschluß des Schrittes S3050 von Fig. 7 fährt die Steuerung mit Schritt S2040 von Fig. 4 fort.
  • In Schritt S2040 führt der Prozessor 20 einen Abschlußtest durch, um zu bestimmen, ob vorbestimmte Abschlußkriterien erfüllt werden. Insbesondere bestimmt der Prozessor 20, ob eine ausgewählte Anzahl von Steuerpunkten erzeugt wurden, die Punkte entlang der Zentrumskurve sind. Die ausgewählte Anzahl von Steuerpunkten hängt von der Genauigkeit ab, mit welcher der Bediener die Zentrumskurve erzeugen möchte. Je mehr Punkte entlang der Zentrumskurve erzeugt werden, desto genauer ist die Kurve. Es bestehen verschiedene Verfahren, um zu bestimmen, ob eine ausreichende Anzahl von Punkten entlang der Zentrumskurve erzeugt wurden, wobei in diesem Fall der Prozessor 20 bestimmt, in wieweit sich jedes zusätzliche in Schritt S2030 erzeugte Segment einer geraden Linie nähert, und dann bestimmt, inwieweit die mit jedem Steuerpunkt eines zusätzlichen Segmentes assoziierten Breiten konstant sind oder sich einer linearen Funktion nähern. Wenn der Prozessor 20 bestimmt, daß sich jedes zusätzliche Segment mit einem gewünschten Genauigkeit einer geraden Linie nähert und daß die mit jedem Steuerpunkt der zusätzlichen Segmente assoziierten Breiten konstant sind oder sich einer linearen Funktion nähern, dann fährt die Steuerung mit Schritt S2050 fort. Andernfalls kehrt die Steuerung zu Schritt S2020 zurück, wobei der Prozessor 20 die zusätzlichen Steuerpunkte in Gruppen von vier gruppiert, um eine Vielzahl von zusätzlichen Segmenten zu spezifizieren, die dann wie oben mit Bezug auf die Originalsegmente beschrieben weiter unterteilt werden, um weitere Steuerpunkte zu erzeugen, die Punkte entlang der Zentrumskurve sind. Fig. 4 zeigt, daß der Abschlußtest nach jedem Durchlauf der Unterteilungstechnik durchgeführt wird, der Unterteilungstest kann jedoch alternativ dazu nach Abschluß eines der folgenden Schritte im Flußdiagramm 2000 durchgeführt werden.
  • In Schritt S2050 von Fig. 4 erzeugt der Prozessor einen mit jedem der in den vorhergehenden Schritten erzeugten Punkte entlang der Zentrumskurve assoziierten Normalvektor. Nachdem zum Beispiel das Segment ABCD unterteilt wurde, erzeugt der Prozessor 20 die Normalvektoren NA, NP und N0, die jeweils mit den Steuerpunkten A, P und D assoziiert sind, wie folgt:
  • NA = [NAx, NAy] = [(xk - xA), (yK - YA)] Gleichung 7.0
  • Np = [Npx, Npy] = [(Xp - xN), -(yP - yN)] Gleichung 7.1
  • ND = [NDx, NDy] = [(XD - XM), -(YD - YM)] Gleichung 7.2
  • Die Normalvektoren NA, NP und ND sind graphisch in Fig. 5(e) dargestellt. Nach dem Abschluß von Schritt S2050 fährt die Steuerung mit Schritt S2060 fort.
  • In Schritt S2060 normalisiert der Prozessor 20 jeden der in Schritt S2040 erzeugten Normalvektoren, um entsprechende Normaleinheitsvektoren zu erzeugen. Nachdem zum Beispiel die Normalvektoren NA, NP und NP erzeugt sind, erzeugt der Prozessor 20 die Normaleinheitsvektoren nA, np und nD wie folgt:
  • Aus den Gleichungen 7.0 bis 8.2 wird deutlich, daß die Normalvektoren und die Normaleinheitsvektoren beide jeweils x- und y-Komponenten aufweisen. Nach Abschluß von Schritt S2060 fährt die Steuerung mit Schritt S2070 fort.
  • In Schritt 2070 erzeugt der Prozessor 20 im Speicher 30 Punkte entlang einer rechten Offsetkurve und einer linken Offsetkurve für entsprechende der entlang der Zentrumslinie erzeugten Punkte. Die rechte und die linke Offsetkurve können in Abhängigkeit vom Parameter t variieren, wobei jeder der Punkte entlang der rechten und der linken Offsetkurve mit einer horizontalen Koordinate und einer vertikalen Koordinate assoziiert ist, die durch den Prozessor 20 in Übereinstimmung mit der horizontalen Koordinate, der vertikalen Koordinate, der Breite und dem Normaleinheitsvektor erzeugt werden, welche mit dem entsprechenden entlang der Zentrumskurve erzeugten Punkt assoziiert sind. Insbesondere liegt jeder Punkt entlang der rechten und der linken Offsetkurve mit einem Abstand w zu einem entsprechenden Punkt entlang der Zentrumskurve in der Richtung parallel zu dem Normaleinheitsvektor, der mit dem entsprechenden Punkt entlang der Zentrumskurve assoziiert ist. Nachdem zum Beispiel die Normaleinheitsvektoren nA, np und no erzeugt wurden, erzeugt der Prozessor 20 einen rechten Offsetpunkt ROA, und einen linken Offsetpunkt LOA, die dem Steuerpunkt A entsprechen, wobei der rechte Offsetpunkt ROA mit einer horizontalen Koordinate xROA und einer vertikalen Koordinate yROA assoziiert ist und wobei der linke Offsetpunkt LOA mit einer horizontalen Koordinate XLOA und einer vertikalen Koordinate YLOA assoziiert ist, wie folgt:
  • XROA = xA + (nAx) (WA) Gleichung 9.0
  • YROA = YA + (nAy) (WA) Gleichung 9.1
  • XLOA = xA + (nAx) (WA) Gleichung 9.2
  • YLOA = YA + (nAy) (WA) Gleichung 9.3
  • Entsprechend erzeugt der Prozessor 20 einen rechten Offsetpunkt ROP und einen linken Offsetpunkt LOP, die dem Steuerpunkt P entsprechen, wobei der rechte Offsetpunkt ROP mit einer horizontalen Koordinate xROP und einer vertikalen Koordinate yROP assoziiert ist und wobei der linke Offsetpunkt LOP mit einer horizontalen Koordinate XLOP und einer vertikalen Koordinate YLOP assoziiert ist, wie folgt:
  • xROp = xp + (nPx) (WP) Gleichung 10.0
  • yROP = yP + (nPy) (WP) Gleichung 10.1
  • xLOP = xP + (nPx) (WP) Gleichung 10.2
  • yLOP = + (nPy) (WP) Gleichung 10.3
  • Weiterhin erzeugt der Prozessor 20 einen rechten Offsetpunkt RCD und einen linken Offsetpunkt LCD, die dem Steuerpunkt D entsprechen, wobei der rechte Offsetpunkt RCD mit einer horizontalen Koordinate xROD und einer vertikalen Koordinate yROD assoziiert ist und wobei der linke Offsetpunkt LOD mit einer horizontalen Koordinate XLoO und einer vertikalen Koordinate YLoO assoziiert ist, wie folgt:
  • xROO = XD + (nDx) (WD) Gleichung 11.0
  • YROD = Yo + (nDy) (WO) Gleichung 11.1
  • XLOD = xo + (nDx) (WO) Gleichung 11.2
  • YLOD = Yo + (nDy) (Wo) Gleichung 11.3
  • Die rechten und linken Offsetpunkte, die den Steuerpunkten A, P und D entsprechen sind graphisch in Fig. 5(f) dargestellt. Die horizontalen Koordinaten und die vertikalen Koordinaten, die mit jedem der Offsetpunkte assoziiert sind, werden durch den Prozessor 20 im Speicher 30 gespeichert. Nach Abschluß von Schritt S2070 fährt die Steuerung mit Schritt S2080 fort.
  • In Schritt S2080 zeigt der Prozessor 20 auf der Anzeige 40 graphische Wiedergaben der in Schritt S2070 entlang der rechten und der linken Offsetkurve erzeugten Punkte an, um eine äußere Grenze des Freiformstriches anzuzeigen. Insbesondere liest der Prozessor 20 die horizontalen und vertikalen Koordinaten, die mit jedem entlang der rechten und der linken Offsetkurven erzeugten Punkte assoziiert und im Speicher 30 gespeichert sind, und steuert die Anzeige 40, um Punkte an Positionen auf der Anzeige 40 anzuzeigen, welche den horizontalen und vertikalen Koordinaten entsprechen. Dabei ist zu beachten, daß die entsprechenden rechten und linken Offsetpunkte mit Abständen zueinander angezeigt werden, die durch die mit dem entsprechenden Punkt entlang der Zentrumskurve assoziierte Breite bestimmt werden. Die resultierende Anzeige ist ein Umriß eines Freiformstriches.
  • Die zweite Ausführungsform wurde mit Bezug auf eine besondere Unterteilungstechnik beschrieben, wobei jedoch auch verschiedene andere dem Fachmann bekannte Unterteilungstechniken verwendet werden können, solange die mit jedem Steuerpunkt assoziierte Breite in demselben Parameter variiert wie die mit dem Steuerpunkt assoziierten vertikalen und horizontalen Koordinaten.
  • Andere Modifikationen können durch den Fachmann vorgenommen werden. Zum Beispiel kann das Datenverarbeitungssystem 10 von Fig. 1 durch ein Hardwaresystem wie das in Fig. 8 gezeigte Hardwaresystem ersetzt werden.
  • Wie in Fig. 8 gezeigt, umfaßt das Hardwaresystem 100 eine Eingabeeinrichtung 1 und eine Linienzeicheneinheit D, die vorzugsweise äquivalente Funktionen wie die Eingabeeinrichtung 50 und die Anzeige 40 des Datenverarbeitungssystems von Fig. 1 ausführen. Wie ebenfalls in Fig. 8 gezeigt, werden der Prozessor 20 und der Speicher 30 des Datenverarbeitungssystems 10 von Fig. 1 durch einen Segmentwarteschlangen-Controller Q, einen Normalvektor-Erzeuger V, einen Normalisierer N, einen Offset-Erzeuger O, einen Abschlußtester T und einen Unterteiler S ersetzt.
  • Die Steuerpunkte werden in den Segmentwarteschlangen-Controller Q eingegeben, der sie dann segmentweise zu dem Normalvektor-Erzeuger V und dem Offset-Erzeuger O sendet. Der Normalvektor-Erzeuger V überträgt die Normalvektoren zum Vektor-Normalisierer N, der die normalisierten Vektoren zum Offset-Erzeuger O überträgt. Der Offset-Erzeuger O skaliert die vom Vektor-Normalisierer N empfangenen normalisierten Normalvektoren mit den w Komponenten der von Segmentwarteschlangen-Controller Q empfangenen Steuerpunkte und addiert sie komponentenweise zu den x- und y-Komponenten der vom Segmentwarteschlangen-Controller Q empfangenen Steuerpunkte. O überträgt dann die Offsetpunkte zum Abschlußtester T zusammen mit den normalisierten Normalvektoren. Der Abschlußtester T verwendet die normalisierten Normalvektoren und die Offsetpunkte, um zu bestimmen, ob ein bzw. mehrere Zeichenbefehle zu der Linienzeicheneinheit D gesendet werden sollen und ob der Unterteiler S zum Durchführen einer Unterteilung veranlaßt werden soll. Der Unterteiler S unterteilt die Steuerpunkte und überträgt sie zurück zum Segmentwarteschlangen- Controller Q für eine weitere Verarbeitung, wenn er den erforderlichen Befehl vom Abschlußtester T empfängt. Es ist zu beachten, daß mit einer entsprechenden Zeitsteuerung zu einem bestimmten Zeitpunkt gleichzeitig mehrere Segmente in der Pipeline sein können.
  • Die Details der Elemente von Fig. 8 sind dem Fachmann bekannt. Zum Beispiel kann der Segmentwarteschlangen-Controller einen Aufwärts/Abwärts-Zähler und eine in geeigneter Weise geschaltete Speichermatrix umfassen. Der Zähler erzeugt stapelnd Adressen im Speicher (immer eins nach oben oder unten von der zuvor erzeugten Adresse). Der Normalvektor-Erzeuger V benötigt einen oder mehrere Addierer, um Subtraktionen durchzuführen. Der Vektor-Normalisierer N benötigt einen Quadratwurzelzieher und einen Multiplizierer. Diese sind im Aufbau von typischen Gleitkommakoprozessoren zu finden, etwa in der Motorola-680 · 0-Serie. Weiterhin umfaßt der Offset-Erzeuger O einen oder mehrere Addierer, enthält der Abschlußtester T einige Addierer und eine Zustandstestlogik, enthält der Unterteiler S einen oder mehrere Addierer und eine dementsprechende Schaltungsverbindung, um Divisionen unter Verwendung von zwei Verschiebungen durchzuführen, und ist die Zeicheneinheit D eine Standard-Linienzeicheneinheit.

Claims (12)

1. Verfahren zum Erzeugen und Anzeigen eines Freiformstriches, wobei das Verfahren durch ein Datenverarbeitungssystem mit einem Speicher und einer Anzeige durchgeführt wird und wobei das Verfahren folgende Schritte umfaßt:
Erzeugen (S1030) im Speicher von Punkten entlang einer Zentrumskurve des Freiformstriches, wobei die Zentrumskurve in Abhängigkeit von einem Parameter t variiert und wobei jeder der Punkte entlang der Zentrumskurve mit einer durch eine Funktion x(t) definierten horizontalen Koordinate, einer durch eine Funktion y(t) definierten vertikalen Koordinate und einer durch eine Funktion w(t) definierten Koordinate assoziiert ist,
Erzeugen (S1040) eines Normalvektors für jeden der Punkte entlang der Zentrumskurve,
Erzeugen (S1050) im Speicher von Punkten entlang einer rechten Offsetkurve und einer linken Offsetkurve für entsprechende der Punkte entlang der Zentrumskurve, wobei die rechte und die linke Kurve in Abhängigkeit von dem Parameter t variieren und wobei jeder der Punkte entlang der rechten und der linken Offsetkurve mit einer horizontalen Koordinate und mit einer vertikalen Koordinate assoziiert ist, die in Übereinstimmung mit der horizontalen Koordinate, der vertikalen Koordinate, der Breite und dem Normalvektor erzeugt werden, welche mit dem entsprechenden Punkt entlang der Zentrumskurve assoziiert sind, und
Anzeigen (S1060) auf der Anzeige von graphischen Wiedergaben der Punkte entlang der rechten und der linken Offsetkurve, um eine äußere Grenze des Freiformstriches anzuzeigen.
2. Verfahren nach Anspruch 1, wobei die Zentrumskurve eine Splinekurve ist und wobei der Schritt zum Erzeugen der Punkte entlang der Zentrumskurve einen Schritt zum Erzeugen der Punkte entlang der Zentrumskurve unter Verwendung einer Unterteilungstechnik umfaßt.
3. Verfahren nach Anspruch 2, wobei der Schritt zum Erzeugen der Punkte entlang der Zentrumskurve unter Verwendung einer Unterteilungstechnik folgende Schritte umfaßt:
Spezifizieren (S2010) einer Vielzahl von Steuerpunkten (A bis J), um die Form der Zentrumskurve zu definieren, wobei jeder der Steuerpunkte mit einer horizontalen Koordinate, einer vertikalen Koordinate und einer Breite assoziiert ist,
Gruppieren (S2020) von ausgewählten (A-D; D-G; G-J) aus der Vielzahl von Steuerpunkten, um ein Segment zu spezifizieren, wobei zwei der Steuerpunkte, welche das Segment spezifizieren, Endpunkte des Segments sind, wobei die Endpunkte (A, D; D, G; G, J) Punkte entlang der Zentrumskurve sind, und
Unterteilen (S2030) des Segments, um eine Vielzahl von zusätzlichen Steuerpunkten (K, N, P, O, M) zu spezifizieren, wobei einer der zusätzlichen Steuerpunkte (P) ein Punkt entlang der Zentrumskurve ist.
4. Verfahren nach Anspruch 3, wobei der Schritt zum Unterteilen des Segmentes das wiederholte Durchführen der folgenden Schritte bis zur Erfüllung von vorbestimmten Abschlußkriterien umfaßt:
Gruppieren von ausgewählten der zusätzlichen Steuerpunkte, um zusätzliche Segmente zu spezifizieren, und
Unterteilen der zusätzlichen Segmente, um eine Vielzahl von zusätzlichen Steuerpunkten zu spezifizieren, wobei einer der zusätzlichen Steuerpunkte ein Punkt entlang der Zentrumskurve ist.
5. Verfahren nach Anspruch 4, welches einen Schritt (S2040) zum Durchführen eines Abschlußtests umfaßt, um zu bestimmen, ob die vorbestimmten Abschlußkriterien erfüllt sind, wobei die vorbestimmten Abschlußkriterien angeben, daß eine vorbestimmte Anzahl von Punkten entlang der Zentrumskurve erzeugt worden ist.
6. Verfahren nach Anspruch 5, wobei der Schritt zum Durchführen des Abschlußtests die folgenden Schritte umfaßt:
Bestimmen, ob sich die Segmente einer geraden Linie annähern, und
Bestimmen, ob w(t) eine Konstante ist oder sich einer linearen Funktion annähert, wobei die vorbestimmten Abschlußkriterien erfüllt werden, wenn sich die Segmente einer geraden Linie annähern und wenn w(t) eine Konstante ist oder sich einer linearen Funktion annähert.
7. Vorrichtung zum Erzeugen und Anzeigen eines Freiformstriches, wobei die Vorrichtung umfaßt:
eine Einrichtung (20) zum Erzeugen von Punkten entlang einer Zentrumskurve des Freiformstriches, wobei die Zentrumskurve in Abhängigkeit von einem Parameter t variiert und wobei jeder der Punkte entlang der Zentrumskurve mit einer durch eine Funktion x(t) definierten horizontalen Koordinate, einer durch eine Funktion y(t) definierten vertikalen Koordinate und einer durch eine Funktion w(t) definierten Koordinate assoziiert ist,
eine Einrichtung (20) zum Erzeugen eines Normalvektors für jeden der Punkte entlang der Zentrumskurve,
eine Einrichtung (20) zum Erzeugen von Punkten entlang einer rechten Offsetkurve und einer linken Offsetkurve für entsprechende der Punkte entlang der Zentrumskurve, wobei die rechte und die linke Kurve in Abhängigkeit von dem Parameter t variieren und wobei jeder der Punkte entlang der rechten und der linken Offsetkurve mit einer horizontalen Koordinate und mit einer vertikalen Koordinate assoziiert ist, die in Übereinstimmung mit der horizontalen Koordinate, der vertikalen Koordinate, der Breite und dem Normalvektor erzeugt werden, welche mit dem entsprechenden Punkt entlang der Zentrumskurve assoziiert sind, und
eine Einrichtung (20) zum Anzeigen von graphischen Wiedergaben der Punkte entlang der rechten und der linken Offsetkurve, um eine äußere Grenze des Freiformstriches anzuzeigen.
8. Vorrichtung nach Anspruch 7, wobei die Zentrumskurve eine Splinekurve ist und wobei die Einrichtung (20) zum Erzeugen der Punkte entlang der Zentrumskurve eine Einrichtung zum Erzeugen der Punkte entlang der Zentrumskurve unter Verwendung einer Unterteilungstechnik umfaßt.
9. Vorrichtung nach Anspruch 8, wobei die Einrichtung zum Erzeugen der Punkte entlang der Zentrumskurve unter Verwendung einer Unterteilungstechnik umfaßt:
eine Einrichtung (20) zum Spezifizieren einer Vielzahl von Steuerpunkten (A-J), um die Form der Zentrumskurve zu definieren, wobei jeder der Steuerpunkte mit einer horizontalen Koordinate, einer vertikalen Koordinate und einer Breite assoziiert ist,
eine Einrichtung (20) zum Gruppieren von ausgewählten (A-D; D-G; G-J) aus der Vielzahl von Steuerpunkten, um ein Segment zu spezifizieren, wobei zwei der Steuerpunkte, welche das Segment spezifizieren, Endpunkte (A, D; D, G; G, J) des Segments sind, wobei die Endpunkte Punkte entlang der Zentrumskurve sind, und
eine Einrichtung (20) zum Unterteilen des Segments, um eine Vielzahl von zusätzlichen Steuerpunkten (K, N, P, O, M) zu spezifizieren, wobei einer der zusätzlichen Steuerpunkte ein Punkt entlang der Zentrumskurve ist.
10. Vorrichtung nach Anspruch 9, wobei die Einrichtung (20) zum Unterteilen des Segmentes eine Einrichtung umfaßt, welche bis zur Erfüllung von vorbestimmten Abschlußkriterien wiederholt
ausgewählte der zusätzlichen Steuerpunkte gruppiert, um zusätzliche Segmente zu spezifizieren, und
die zusätzlichen Segmente unterteilt, um eine Vielzahl von zusätzlichen Steuerpunkten zu spezifizieren, wobei einer der zusätzlichen Steuerpunkte ein Punkt entlang der Zentrumskurve ist.
11. Vorrichtung nach Anspruch 10, welche eine Einrichtung (20) zum Durchführen eines Abschlußtests umfaßt, um zu bestimmen, ob die vorbestimmten Abschlußkriterien erfüllt sind, wobei die vorbestimmten Abschlußkriterien angeben, daß eine vorbestimmte Anzahl von Punkten entlang der Zentrumskurve erzeugt worden sind.
12. Vorrichtung nach Anspruch 11, wobei die Einrichtung (20) zum Durchführen des Abschlußtests umfaßt:
eine Einrichtung zum Bestimmen, ob sich die Segmente einer geraden Linie annähen, und
eine Einrichtung zum Bestimmen, ob w(t) eine Konstante ist oder sich einer linearen Funktion annähert,
wobei die vorbestimmten Abschlußkriterien erfüllt sind, wenn sich die Segmente einer geraden Linie annähern und wenn w(t) eine Konstante ist oder sich einer linearen Funktion annähert.
DE69229669T 1991-12-02 1992-12-01 Verfahren und Vorrichtung zur Erzeugung und Darstellung von Freiform-Strichen Expired - Fee Related DE69229669T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/801,291 US5325477A (en) 1991-12-02 1991-12-02 Method and apparatus for generating and displaying freeform strokes

Publications (2)

Publication Number Publication Date
DE69229669D1 DE69229669D1 (de) 1999-09-02
DE69229669T2 true DE69229669T2 (de) 1999-12-16

Family

ID=25180704

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69229669T Expired - Fee Related DE69229669T2 (de) 1991-12-02 1992-12-01 Verfahren und Vorrichtung zur Erzeugung und Darstellung von Freiform-Strichen

Country Status (4)

Country Link
US (1) US5325477A (de)
EP (1) EP0545664B1 (de)
JP (1) JP3377815B2 (de)
DE (1) DE69229669T2 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473742A (en) * 1994-02-22 1995-12-05 Paragraph International Method and apparatus for representing image data using polynomial approximation method and iterative transformation-reparametrization technique
JP3641283B2 (ja) * 1994-04-08 2005-04-20 富士通株式会社 グラフィックデータ生成装置
US6509912B1 (en) * 1998-01-12 2003-01-21 Xerox Corporation Domain objects for use in a freeform graphics system
US6067094A (en) * 1998-04-07 2000-05-23 Adobe Systems Incorporated Brushstroke envelopes
US6498868B1 (en) 1998-06-11 2002-12-24 Xerox Corporation Image scaling using pattern matching to select among scaling algorithms
US6870550B1 (en) * 1999-04-26 2005-03-22 Adobe Systems Incorporated Digital Painting
US6501855B1 (en) 1999-07-20 2002-12-31 Parascript, Llc Manual-search restriction on documents not having an ASCII index
KR100519696B1 (ko) * 1999-12-27 2005-10-12 한국전자통신연구원 스윕/언스윕을 이용한 평면 물체의 오프셋 곡선 계산 방법
DE10226270A1 (de) * 2002-06-07 2004-01-08 Cocreate Software Gmbh & Co. Kg Verfahren und Computersystem zum Erzeugen einer mehrdimensionalen Abstandsfläche
MX2011002003A (es) * 2009-07-10 2011-03-29 Panasonic Corp Medio de grabacion, dispositivo de reproduccion y circuito integrado.
US8270807B2 (en) * 2009-07-13 2012-09-18 Panasonic Corporation Recording medium, playback device, and integrated circuit
US9786083B2 (en) 2011-10-07 2017-10-10 Dreamworks Animation L.L.C. Multipoint offset sampling deformation
AU2012202651A1 (en) 2012-05-04 2013-11-21 Canon Kabushiki Kaisha A method for stroking paths
TWI476640B (zh) 2012-09-28 2015-03-11 Ind Tech Res Inst 時間資料序列的平滑化方法與裝置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4674058A (en) * 1981-12-07 1987-06-16 Dicomed Corporation Method and apparatus for flexigon representation of a two dimensional figure
US4620287A (en) * 1983-01-20 1986-10-28 Dicomed Corporation Method and apparatus for representation of a curve of uniform width
JPS61246877A (ja) * 1985-04-25 1986-11-04 Canon Inc 図形変換装置
US4855935A (en) * 1987-05-08 1989-08-08 Sun Microsystems, Inc. Method and apparatus for rendering vectors using bresenham parameters
JP2752975B2 (ja) * 1987-09-25 1998-05-18 株式会社東芝 3次曲線プロット方法
US4912659A (en) * 1987-10-30 1990-03-27 International Business Machines Corporation Parallel surface processing system for graphics display
US4933889A (en) * 1988-04-29 1990-06-12 International Business Machines Corporation Method for fine decomposition in finite element mesh generation
JP2659557B2 (ja) * 1988-07-27 1997-09-30 株式会社日立製作所 描画システム及び描画方法
US5212769A (en) * 1989-02-23 1993-05-18 Pontech, Inc. Method and apparatus for encoding and decoding chinese characters

Also Published As

Publication number Publication date
JP3377815B2 (ja) 2003-02-17
EP0545664A3 (de) 1994-01-05
EP0545664A2 (de) 1993-06-09
JPH05250480A (ja) 1993-09-28
DE69229669D1 (de) 1999-09-02
US5325477A (en) 1994-06-28
EP0545664B1 (de) 1999-07-28

Similar Documents

Publication Publication Date Title
DE3689654T2 (de) Rechnergraphik, prozessor für parallele subdivision.
DE69229669T2 (de) Verfahren und Vorrichtung zur Erzeugung und Darstellung von Freiform-Strichen
DE69032932T2 (de) System und Verfahren zum unverfälschten Polygonenzeichnen
DE68927471T2 (de) Verfahren zur Schattierung eines graphischen Bildes
DE69224499T2 (de) Dreidimensionale graphische Verarbeitung
DE3854543T2 (de) Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung.
DE69032387T2 (de) Vorrichtung und Verfahren zum rechnergestützten Entwurf von Blechteilen
DE69130123T2 (de) Anzeigegerät und Verfahren zum Betreiben eines solchen Geräts
DE69328850T2 (de) Hybrides Vorwärts-Differenzierungsverfahren und System zur Darstellung von Bezier-Splines-Kurven
DE69014392T2 (de) Verfahren zum Zeichnen mit einem Computer.
DE69524330T2 (de) Anordnung von Knotenverbindungstruktur in einem Raum mit negativer Krümmung
DE68919024T2 (de) Verfahren und Prozessor zur Abtastumsetzung.
DE69423129T2 (de) System und Verfahren zur Kurvendarstellung
DE68925399T2 (de) Verfahren und Gerät zur Bildtransformation
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
DE69428482T2 (de) Verfahren und Vorrichtung zur Bildverarbeitung
DE3751259T2 (de) Kurvenerzeugungsverfahren.
EP3830660B1 (de) Verfahren und assistenzsystem zur parametrisierung eines anomalieerkennungsverfahrens
DE69802802T2 (de) Verfahren und vorrichtung zum ändern der farbe eines bildes
DE102007021753A1 (de) System und Verfahren zum Analysieren von Modellierungsgenauigkeit während einer Durchführung von reverser Konstruktion mit 3D-Abtastdaten
DE69915837T2 (de) Parametrische Flächenauswertung im Eigenraum der Unterteilungsmatrix eines irregulären Flächenstücks
DE69426042T2 (de) Verfahren und Gerät zur Erzeugung von phantomen Kontrollwerten einer B-spline Kurve
DE69231049T2 (de) Bildverarbeitung
DE69529732T2 (de) Korrektur der Perspektive von Texturen in graphischen Bildern durch adaptive Approximation
DE69924230T2 (de) Verfahren zur Modellierung von durch Oberflächenelemente dargestellten grafischen Objekten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee