-
Hintergrund
-
1. Technisches Gebiet
-
Eine oder mehrere Ausführungsformen der vorliegenden Offenbarung betreffen allgemein Kurvenbearbeitungssysteme. Eine oder mehrere Ausführungsformen der vorliegenden Offenbarung betreffen insbesondere Systeme und Verfahren zum Nachbearbeiten von Kurven unter Verwendung von nichtgleichmäßig skalierten CVC-Kurven (Cubic Variation of Curvature CVC, kubische Krümmungsvariation).
-
2. Hintergrund und Stand der Technik
-
Herkömmliche Kurvenbearbeitungssysteme ermöglichen, dass Nutzer glatte bzw. stetige Kurven beispielsweise zu Zwecken einer Freihandillustration, einer ingenieurstechnischen Konstruktion oder für andere Typen von technischen oder nichttechnischen Zeichnungen designen. Kurven, die von diesen herkömmlichen Systemen erzeugt werden, werden oftmals als „Splines” (Polynomzüge) bezeichnet. Ein Spline ist eine kontinuierliche Kurve, die aus kleineren Kurvenelementen zusammengesetzt ist, die „Kurvenprimitive” (oder einfach „Kurven”) genannt werden. Kurvenprimitive sind Ende an Ende stetig bzw. glatt in einem Spline derart zusammengefügt, dass der Spline wie eine lange kontinuierliche Kurve aussieht. Herkömmliche Systeme berechnen jede Kurvenprimitive als kompakte mathematische Gleichung unter Verwendung einer festen Anzahl von Parametern. Herkömmliche Systeme definieren beispielsweise oftmals eine konische Kurve unter Verwendung von fünf Parametern, eine quadratische Bézier-Kurve unter Verwendung von sechs Parametern und eine kubische Bézier-Kurve unter Verwendung von acht Parametern.
-
Ganz allgemein stellen herkömmliche Systeme eine Nutzerschnittstelle bereit, die ermöglicht, dass Nutzer Splines durch Interagieren mit einer Anzeige und einer Eingabevorrichtung spezifizieren. Üblicherweise ermöglichen herkömmliche Systeme, dass ein Nutzer diskrete Punkte bearbeitet (beispielsweise erstellt oder durch Dragging zieht), die wiederum die Form der Splines steuern bzw. regeln. Daher werden diese diskreten Punkte Steuer- bzw. Regelpunkte genannt. Steuer- bzw. Regelpunkte können interpolierte Steuer- bzw. Regelpunkte und nichtinterpolierte Steuer- bzw. Regelpunkte beinhalten. Interpolierte Steuer- bzw. Regelpunkte befinden sich auf einer Kurve und bilden direkt Randbedingungen für die Kurve. Nichtinterpolierte Steuer- bzw. Regelpunkte steuern bzw. regeln die Tangente an der Kurve und sind einem nahegelegenen interpolierten Steuer- bzw. Regelpunkt zugeordnet. Das Bewegen eines nichtinterpolierten Steuer- bzw. Regelpunktes ändert die Richtung der Kurve an dem zugeordneten interpolierten Steuer- bzw. Regelpunkt. Im Sinne des Vorliegenden kann ein interpolierter Steuer- bzw. Regelpunkt ein Endpunkt oder ein Zwischensteuer- bzw. Regelpunkt sein.
-
Ein Problem bei einfacheren herkömmlichen Systemen, also bei solchen, die nur interpolierte Steuer- bzw. Regelpunkte verwenden, besteht darin, dass derartige Systeme Tangentenwinkel an den Steuer- bzw. Regelpunkten bereitstellen müssen. Es ist oftmals schwierig, Tangentenwinkel, die die Absichten eines Nutzers vorwegnehmen, bereitzustellen, was zu Nachteilen bei derartigen Systemen führt. Einige herkömmliche Systeme verfügen über die kürzlich verbesserte Fähigkeit, Kurven und Splines zu zeichnen und zu erstellen. Solche Systeme verwenden beispielsweise Bézier-Kurven bei dem Versuch, natürlich aussehende Kurven zu erstellen. In einigen Fällen verwenden diese herkömmlichen Systeme eine quadratische Bézier-Kurvenanpassung, um Punkte innerhalb einer Kurve zu steuern bzw. zu regeln, damit sich eine besser aussehende Kurve ergibt. Ungeachtet dieser Verbesserungen weisen derartige herkömmliche Systeme weiterhin eine Anzahl von Nachteilen auf.
-
Bei einem Beispiel für einen derartigen Nachteil stellen diese herkömmlichen Systeme üblicherweise nur eine G1-Kontinuität für einen Spline bereit. Die „G1-Kontinuität” ist ein Maß für die Kurvenglattheit bzw. Stetigkeit, bei dem zwei Kurven (üblicherweise in einem Spline) derart verbunden sind, dass die Tangentenwinkel der beiden Kurven an der Verbindung zusammenpassen. Kurven in einem Spline können jedoch auch eine G2-Kontinuität aufweisen, bei der die Krümmung zudem über verschiedene Kurven in einem Spline hinweg kontinuierlich ist. Insbesondere bezeichnet die „G2-Kontinuität” ein Maß für die Kurvenglattheit bzw. Stetigkeit, bei dem zwei verschiedene Kurven derart verbunden sind, dass sowohl die Tangentenwinkel wie auch die Krümmungen der beiden Kurven an der Verbindung zusammenpassen. Splines mit G2-Kontinuität verfügen oftmals über ein ästhetischeres Aussehen als Splines, die lediglich eine G1-Kontinuität aufweisen, da sich die Krümmung von Kurven mit G2-Kontinuität tendenziell gradueller bzw. allmählicher ändert. Viele Applikationen, darunter auch einige ingenieurstechnische Applikationen, benötigen für Kurven eine G2-Kontinuität, die viele herkömmliche Systeme nicht bereitstellen können.
-
Bei einem weiteren Beispiel für einen Nachteil platzieren einige herkömmliche Systeme, die Bézier-Kurven verwenden, Steuer- bzw. Regelpunkte im Zentrum einer Kurvenprimitive. Als Ergebnis besteht die Kurve zwischen zwei Steuer- bzw. Regelpunkten aus zwei Hälften von zwei quadratischen Bézier-Kurven. Dies kann zu einem Konflikt mit bestehenden Systemen erführen, die eine Primitive zwischen Steuer- bzw. Regelpunkten benötigen. Im Ergebnis macht diese Problematik die Rückwärtskompatibilität schwieriger.
-
Bei einem weiteren Problem geben herkömmliche Systeme, die Bézier-Kurven verwenden, oftmals ungeeignete Ergebnisse aus. Insbesondere weisen kubische Bézier-Kurven jeweils theoretisch genug Freiheitsgrade auf, um sowohl die Tangente wie auch die Krümmung an beiden Endpunkten einzustellen. In Wirklichkeit sind jedoch, nachdem die Endpunkte und die Tangentenrichtungen in einer Bézier-Kurve fest sind, die verbleibenden Freiheitsgrade durch die Lösungen einer quartischen bzw. biquadratischen Polynomgleichung eingeschränkt. Dies kann gelegentlich zu mehr als einer gültigen Lösung führen, oder es kann in einigen Fällen auch zu keiner gültigen Lösung führen (beispielsweise dann, wenn nicht alle Wurzeln des Polynoms reell sind oder die Wurzeln nicht auf die Kurvenrichtung ausgerichtet sind). Herkömmliche Systeme brechen oftmals ab oder fallen aus, wenn sie mit einer dieser ungeeigneten Lösungen konfrontiert sind.
-
Sogar dann, wenn herkömmliche Systeme zu einem korrekten Ergebnis für eine Kurve gelangen, ist eine solche Kurve bisweilen nicht ansehnlich. Im Sinne des Vorliegenden bezeichnet „ansehnlich” oder „Ansehnlichkeit” das ästhetische Aussehen einer Kurve. Eine „ansehnliche” Kurve sieht für das Auge gefällig und ästhetisch aus. Die Begriffe „Rundheit” und „Vollheit” können ebenfalls zur Beschreibung der Ansehnlichkeit einer Kurve verwendet werden. Die Ansehnlichkeit wird heuristisch verwirklicht, indem der Änderungsgrad der Krümmung in einer Kurve minimiert wird. Der Begriff „Krümmung” betrifft die Änderungsrate eines Tangentenwinkels der Kurve als Funktion der Bogenlänge. Für einen Kreis mit Radius R ist die Krümmung beispielsweise konstant gleich 1/R. Intuitiv ist die Krümmung an einem Punkt umso höher, je stärker sich die Kurve an jenem Punkt wendet. Man beachte, dass die Krümmung positiv oder negativ sein kann. Üblicherweise ist eine Kurve, deren Richtung sich im Gegenuhrzeigersinn ändert, wenn man entlang der Kurve wandert, positiv, während eine Änderung im Uhrzeigersinn negativ ist. Wie vorstehend erläutert worden ist, können herkömmliche Systeme eine kubische Kurve bereitstellen, die bei stark gekrümmten Kurven nicht ansehnlich ist, da die Krümmung entlang der Kurve sehr stark variieren kann. Mit anderen Worten, sogar dann, wenn ein herkömmliches System eine Kurve mit G2-Kontinuität herstellen kann, kann das herkömmliche System Kurven herstellen, die nicht ästhetisch gefällig oder ansehnlich sind.
-
Diese und weitere Probleme bestehen im Zusammenhang mit dem Erstellen und Nachbearbeiten von Kurven.
-
Kurze Zusammenfassung
-
Ausführungsformen der vorliegenden Offenbarung beinhalten Systeme und Verfahren zum Erzeugen von nachbearbeiteten Kurven. Insbesondere erzeugen die offenbarten Systeme und Verfahren nachbearbeitete Kurven unter Verwendung von nichtgleichmäßig skalierten CVC-Kurven (Cubic Variation of Curvature CVC, kubische Krümmungsvariation). Illustrationshalber detektieren bei einer oder mehreren Ausführungsformen die offenbarten Systeme und Verfahren von einem Nutzer eingegebene Definitionspunkte einer Kurve in einem Spline. Die Systeme und Verfahren skalieren die Kurve in einer einzelnen Richtung nichtgleichmäßig, um die Krümmung der Kurve innerhalb des Splines nachzubearbeiten. Die Systeme und Verfahren berechnen sodann mehrere CVC-Kurven entsprechend der nichtgleichmäßig skalierten Kurve. Als Teil der Berechnung der mehreren CVC-Kurven identifizieren die Systeme und Verfahren neue Endpunktrandbedingungen auf Grundlage der nichtgleichmäßig skalierten Kurve. Die Systeme und Verfahren nehmen sodann ein Herabskalieren der nichtgleichmäßig skalierten Kurve vor und behalten dabei die neuen Endpunktrandbedingungen bei, um eine nachbearbeitete Kurve zu erzeugen, die voller und ansehnlicher ist. Beinhaltet ein Spline mehrere Kurven, so können die Systeme und Verfahren individuell jede Kurve in dem Spline nach Bedarf nachbearbeiten, um einen reicheren, volleren und ansehnlicheren Spline zu erstellen.
-
Entsprechend stellen die offenbarten Systeme und Verfahren eine verbesserte Ansehnlichkeit für eine Kurve in einem Spline durch Verringern der Änderungsrate der Krümmung einer oder mehrerer Kurven in dem Spline bereit. Insbesondere durch Verwendung von neuen Kurvenprimitiven mit nichtgleichmäßig skalierten CVC-Kurven verbessern die Systeme und Verfahren die Ansehlichkeit einer Kurve in einem Spline. Zusätzlich können die Systeme und Verfahren eine G2-Kontinuität an beiden Endpunkten für die inneren Punkte (das heißt dort, wo die beiden Kurven in einem Spline verbunden sind) von nachbearbeiteten Kurven in einem Spline verwirklichen.
-
Zusätzliche Merkmale und Vorteile einer oder mehrerer Ausführungsformen der vorliegenden Offenbarung sind in der nachfolgenden Beschreibung dargestellt und ergeben sich teilweise aus der Beschreibung oder der praktischen Umsetzung derartiger exemplarischer Ausführungsformen.
-
Kurzbeschreibung der Zeichnung
-
Verschiedene Ausführungsformen werden nachstehend mit zusätzlicher Spezifität und Detailtiefe anhand der begleitenden Zeichnung, die sich wie folgt zusammensetzt, beschrieben und erläutert.
-
1A und 1B zeigen exemplarische Vergleiche zwischen nichtnachbearbeiteten Kurven und nachbearbeiteten Kurven entsprechend einer oder mehreren Ausführungsformen.
-
2A bis 2I zeigen einen exemplarischen Prozess der Nachbearbeitung einer Kurve in einem Spline mit einer oder mehreren Kurvenprimitiven entsprechend einer oder mehreren Ausführungsformen.
-
3A bis 3D zeigen ein Beispiel für einen Spline mit mehreren Kurven, in dem jede Kurve in einem separaten kanonischen Koordinatensystem entsprechend einer oder mehreren Ausführungsformen nichtgleichmäßig gestreckt ist.
-
4 zeigt ein Flussdiagramm einer Abfolge von Vorgängen bei einem weiteren Verfahren zum Nachbearbeiten von Kurven entsprechend einer oder mehreren Ausführungsformen.
-
5 zeigt ein Flussdiagramm einer Abfolge von Vorgängen bei einem Verfahren zum Nachbearbeiten von Kurven entsprechend einer oder mehreren Ausführungsformen.
-
6 zeigt ein exemplarisches schematisches Diagramm einer exemplarischen Architektur eines Kurvennachbearbeitungssystems entsprechend einer oder mehreren Ausführungsformen.
-
7 zeigt ein Blockdiagramm einer exemplarischen Rechenvorrichtung entsprechend einer oder mehreren Ausführungsformen.
-
Detailbeschreibung
-
Eine oder mehrere Ausführungsformen der vorliegenden Erfindung beinhalten ein Kurvennachbearbeitungssystem, das die Ansehnlichkeit von gekrümmten Splines verbessert. Insbesondere verwenden eine oder mehrere Ausführungsformen des Kurvennachbearbeitungssystems nichtgleichmäßig skalierte CVC-Kurven (Cubic Variation of Curvature CVC, kubische Krümmungsvariation), um nachbearbeitete Kurven in Splines zu erzeugen. Durch Verwenden von nichtgleichmäßig skalierten CVC-Kurven erzeugt das Kurvennachbearbeitungssystem Kurven, die ansehnlicher und ästhetisch gefälligerer sind, da die Kurven stärker gerundet aussehen.
-
Wie nachstehend noch detaillierter beschrieben wird, erzeugt das Kurvennachbearbeitungssystem ansehnlichere Kurvenprimitive aufgrund von zwei Steuer- bzw. Regelpunkten zusammen mit entsprechenden Tangenten und Krümmungen für die beiden Steuer- bzw. Regelpunkte. Bei einer oder mehreren Ausführungsformen sind die beiden Steuer- bzw. Regelpunkte Endpunkte einer Kurve in dem Spline. Bei einigen Ausführungsformen sind die beiden Steuer- bzw. Regelpunkte benachbarte Steuer- bzw. Regelpunkte in einem Spline, wobei die Tangenten und Krümmungen von den entsprechenden Tangenten und Krümmungen der Kurven in dem Spline stammen.
-
Illustrationshalber empfängt bei einer exemplarischen Ausführungsform das Kurvennachbearbeitungssystem eine Nutzereingabe, die wenigstens einen Abschnitt eines Splines definiert, der eine oder mehrere Kurvenprimitive (das heißt Kurven) beinhaltet, oder empfängt wenigstens einen Satz von Interpolationssteuer- bzw. Regelpunkten (beispielsweise Endpunkte) für eine Kurve. Das Kurvennachbearbeitungssystem berechnet separat Skalierungsfaktoren für jede Kurve. Das Kurvennachbearbeitungssystem skaliert für jede Kurve die Kurve in einer einzelnen Richtung nichtgleichmäßig auf Grundlage des entsprechenden berechneten Skalierungsfaktors, so beispielsweise entlang der y-Achse eines kanonischen Koordinatensystems, das für die Kurve erstellt worden ist. Für jede nichtgleichmäßig skalierte Kurve berechnet das Kurvennachbearbeitungssystem CVC-Kurven und identifiziert Endpunktrandbedingungen aus den CVC-Kurven. Das Kurvennachbearbeitungssystem nimmt sodann ein Herabskalieren (was gleichbedeutend zu „es skaliert herab” verwendet wird) an jeder nichtgleichmäßig skalierten Kurve in dem Spline vor und behält dabei die entsprechenden identifizierten Endpunktrandbedingungen der CVC-Kurven bei.
-
Verschiedene Ausführungsformen des Kurvennachbearbeitungssystems verwenden eine neue Kurvenprimitive anstelle von kubischen Bézier-Kurven, die zu Tangentenwinkeln und Krümmungen einer Eingabekurve in einem Spline passen. Insbesondere berechnet das Kurvennachbearbeitungssystem ein oder mehrere neue Kurvenprimitive, die nichtgleichmäßig skalierte CVC-Kurven sind. CVC-Kurven sind unter Verwendung eines kubischen Polynoms definiert, nämlich k(s) = a × s3 + b × s2 + c × s + d. Hierbei ist die unabhängige Variable s die Bogenlänge der Kurve von einem festen Referenzpunkt auf der Kurve aus, während k(s) die Krümmung an dem Punkt mit der Bogenlänge s vom Referenzpunkt aus angibt. Eine CVC-Kurve beinhaltet vier Parameter (a, b, c und d), die eine Vorlage für die CVC-Kurve bilden. Diese Parameter können vertikal und horizontal verschoben, gedreht und skaliert werden, wodurch der CVC-Kurve insgesamt acht Freiheitsgrade zur Verfügung stehen, was die erforderliche Anzahl von Freiheitsgraden für ein kubisches Polynom ist.
-
Es sei zudem darauf verwiesen, dass eine CVC-Kurve eine Näherung einer Minimalvariation der Krümmungskurve (oder „MVC-Kurve”), jedoch rechentechnisch effizienter ist. MVC-Kurven verfügen über die Eigenschaft, dass sie auf gegebene G2-Endpunktrandbedingungen beschränkt sind und dabei die Krümmung möglichst wenig ändern. Insbesondere minimiert eine MVC-Kurve das Integral des Quadrates der Änderungsrate der Kurve in Abhängigkeit von der Bogenlänge über die Länge der Kurve mit den Randbedingungen, die durch einen Anfangspunkt, einen Endpunkt, einen Anfangstangentenwinkel und einen Endtangentenwinkel gegeben sind. Mathematisch minimiert eine MVC-Kurve das nachfolgende Integral:
Hierbei ist s die Bogenlänge, während k'(s) die Ableitung der Krümmung nach s darstellt. Da eine MVC-Kurve die Änderung der Krümmung minimiert, herstellt eine MVC-Kurve tendenziell ansehnliche und ästhetisch gefällige Kurven und ist daher eine ideale Wahl beim Erstellen von neuen Kurvenprimitiven. Eine MVC-Kurve ist jedoch rechentechnisch aufwändig und schwierig in der genauen Berechnung. Als solches verwenden Ausführungsformen CVC-Kurven als Näherung für MVC-Kurven. Es sollte einsichtig sein, dass in einigen Fällen MVC-Kurven anstelle von CVC-Kurven entsprechend gewissen hier offenbarten Ausführungsformen verwendet werden.
-
Sowohl MVC-Kurven wie auch CVC-Näherungskurven sind jedoch nicht dafür ausgelegt, großen Änderungen der Krümmung, die über kleine Abstände auftreten (beispielsweise ein schneller Übergang von einer engen Wende zu einer weiteren Wende), gerecht zu werden. Für den Fall von engen Kurven fügt der Einsatz entweder von MVC-Kurven oder von CVC-Näherungskurven zu den Kurven zwischen den erforderlichen Änderungen der Krümmung eine unerwünschte Länge hinzu. Das Anwenden einer MVC- oder CVC-Näherung bezüglich einer Kurve mit einer Haarnadelwende bewirkt beispielsweise, dass die Kurve zu einer großen Schleife vergrößert wird, sodass die Rate der Krümmung kleiner wird, was die grundsätzliche Form der Kurve ändert. Bei einer oder mehreren der hier beschriebenen Ausführungsformen ist die Flexibilität bei MVC- oder CVC-Kurven derart vergrößert, dass sie engen Wendungen gerecht werden, ohne die grundlegende Form einer Kurve merklich zu ändern. Beispielsweise verwenden, wie nachstehend noch beschrieben wird, ein oder mehrere Ausführungsformen ein nichtgleichmäßiges Skalieren und/oder Herabskalieren, um die Endpunktrandbedingungen (beispielsweise Position, Winkel und Krümmung) zu interpolieren, was zu ansehnlicheren Kurven als in einem Fall führt, in dem herkömmliche Bézier-Kurven hergestellt werden.
-
Um den Umgang mit den Berechnungen im Zusammenhang mit MVC- und CVC-Kurven zu unterstützen, verwendet das Kurvennachbearbeitungssystem ein kanonisches Koordinatensystem. Insbesondere bewegt das Kurvennachbearbeitungssystem separat jede Kurve in dem Spline von einem ursprünglichen Koordinatensystem zu einem angepassten kanonischen Koordinatensystem. Das Kurvennachbearbeitungssystem positioniert jede Kurve zu Beginn am Ursprung (beispielsweise (0, 0)) des kanonischen Koordinatensystems. Darüber hinaus dreht das Kurvennachbearbeitungssystem jede Kurve derart, dass der Endpunkt einer jeden Kurve auf der Horizontalachse (beispielsweise der x-Achse) des kanonischen Koordinatensystems liegt. Des Weiteren skaliert das Kurvennachbearbeitungssystem jede Kurve derart, dass sie zwischen dem Ursprung und einer ersten Einheit (beispielsweise (1, 0)) eingepasst ist. Sodann nimmt das Kurvennachbearbeitungssystem innerhalb des kanonischen Koordinatensystems ein nichtgleichmäßiges Skalieren vor und berechnet die CVC-Kurven. Die Verwendung des kanonischen Koordinatensystems kann Berechnungen vereinfachen und die Verarbeitungszeit senken. Die gesenkte Verarbeitungszeit verringert die Latenz bei der Erstellung der nachbearbeiteten Kurven.
-
Bei einigen Ausführungsformen passt das Kurvennachbearbeitungssystem eine oder mehrere Bézier-Kurven an die erzeugten nachbearbeiteten Kurven in einem Spline an. Allgemein sind Bézier-Kurven in der Zeichen- und Designindustrie stärker verbreitet als CVC-Kurven. Als solches können Designapplikationen Bézier-Kurven ohne Weiteres lesen und erstellen. Im Gegensatz hierzu sind CVC-Kurven nicht derart verbreitet, und es sind viele Designapplikationen gegebenenfalls noch nicht in der Lage, CVC-Kurven zu lesen oder zu erstellen. Daher ermöglicht das Anpassen einer Bézier-Kurve an die erzeugten nachbearbeiteten Kurven in einem Spline, dass die nachbearbeiteten Kurven universell angezeigt/verwendet werden.
-
Beim Anpassen einer Bézier-Kurve an eine CVC-Kurve, passt die angepasste Bézier-Kurve gegebenenfalls nicht perfekt zu der nachbearbeiteten Kurve. Die Anpassung der Bézier-Kurve ist indes eine sehr gute Näherung. Illustrationshalber versucht das Kurvennachbearbeitungssystem, dass die Gesamtform der Bézier-Kurve zur ansehnlicheren CVC-Kurvenprimitive passt, ohne jedoch explizit zu fordern, dass die Krümmung an den Endpunkten genau passt. Insbesondere sieht das Kurvennachbearbeitungssystem, dass die Tangentenwinkel derart passen, dass die G1-Kontinuität gewahrt ist. Das Kurvennachbearbeitungssystem behält des Weiteren die genäherte G2-Kontinuität bei, benötigt jedoch keine genaue G2-Kontinuität. Auf diese Weise stellt das Kurvennachbearbeitungssystem ansehnlichere Splines her, da der Umstand, dass die Form der herabskalierten CVC-Kurve zu eine Bézier-Kurve passt, tendenziell bewirkt, dass die Bézier-Kurve annähernd zur Krümmung der nachbearbeiteten Kurve passt. Des Weiteren ist, obwohl eine genaue G2-Kontinuität nicht immer erreicht wird, das menschliche Auge gegebenenfalls nicht fähig, den Unterschied zwischen der genäherten G2-Kontinuität und einer genauen oder tatsächlichen G2-Kontinuität beim Betrachten der angepassten Kurve in einem Spline zu erkennen.
-
Zusätzliche Merkmale und Eigenschaften einer oder mehrerer Ausführungsformen eines Dokumentorganisationssystems werden nachstehend anhand der Figuren beschrieben. 1A und 1B zeigen exemplarische Vergleiche zwischen nichtnachbearbeiteten Kurven 100a–c und nachbearbeiteten Kurven 110a–c entsprechend einer oder mehreren Ausführungsformen. Die Linien in 1A und 1B sind als kubische Bézier-Kurven gezeigt. Wie dargestellt worden ist, ist eine kubische Bézier-Kurve eine parametrische Kurve, die acht Freiheitsgrade verwendet, um die Parameter der Kurve zu definieren. Als solches sieht eine kubische Bézier-Kurve oftmals wie ein Spline mit einer oder mehreren Kurvenprimitiven aus.
-
1A zeigt drei nichtnachbearbeitete Kurven 100a–c. Bei näherer Ansicht scheinen die Enden der drei nichtnachbearbeiteten Kurven 100a–c der Form nach missglückt. Illustrationshalber weist die erste nichtnachbearbeitete Kurve 100a ein erstes Ende 102a auf, an dem die nichtnachbearbeitete Kurve 100a abflacht. Die zweite nichtnachbearbeitete Kurve 100b beinhaltet zwei Enden 102b und 102c, die leicht missglückt erscheinen. Insbesondere erscheinen die beiden Enden 102b und 102c nahe an den Endpunkten punktartig und nahe am Zentrum abgeflacht, was dann auftritt, wenn die Krümmung nahe an den Endpunkten zu stark variiert. Auf gleiche Weise beinhaltet die dritte nichtnachbearbeitete Kurve 100c zudem zwei Enden 102d und 102e, die leicht missglückt erscheinen.
-
Wie vorstehend erläutert worden ist, tritt eine Verzerrung einer Kurve auf, wenn die die Kurve bereitstellende Zeichenapplikation den Maximalkrümmungspunkt in der Kurve leicht fehlausrichtet und Übergänge in der Kurve zu abrupt sind. Sogar dann, wenn die Zeichenapplikation den Maximalkrümmungspunkt einer Kurve in den meisten Fällen korrekt ausrichtet, ist ein Künstler, der die Zeichenapplikation verwendet, gegebenenfalls jedes Mal frustriert, wenn die Zeichenapplikation eine missglückte Kurve herstellt. Des Weiteren bleibt die Frustration des Künstlers über die Zeichenapplikation eingedenk dessen erhalten, dass die Zeichenapplikation gegebenenfalls weitere missglückte Kurven herstellt.
-
Im Gegensatz zu den drei missglückten nichtnachbearbeiteten Kurven 100a–c in 1A zeigt 1B drei entsprechende nachbearbeitete Kurven 110a–c. Die drei nachbearbeiteten Kurven 110a–c sind Kurven, die jeweils unter Verwendung von Ausführungsformen des hier beschriebenen Kurvennachbearbeitungssystems erstellt worden sind. Wie gezeigt ist, erscheinen die nachbearbeiteten Kurven 110a–c runder, voller und ansehnlicher. Die nachbearbeiteten Kurven 110a–c weisen beispielsweise keine allzu abrupten Übergänge auf (das heißt die Kurven gehen von einer Kreisform in eine weitgehend flache Form und zurück in eine Kreisform ohne ausreichenden Übergang über). Das Kurvennachbearbeitungssystem minimiert vielmehr die Krümmung der Kurven (ändert beispielsweise die Krümmung gradueller bzw. allmählicher), um eine reichere und vollere Kurve, die ästhetisch gefällig ist, herzustellen.
-
2A bis 2I zeigen einen exemplarischen Prozess der Erzeugung einer nachbearbeiteten Kurve (das heißt einer Kurvenprimitive) in einem Spline entsprechend einer oder mehreren Ausführungsformen. Insbesondere zeigen 2A bis 2I einen exemplarischen Prozess, den das Kurvennachbearbeitungssystem einsetzt, um eine nachbearbeitete Kurve zu erstellen, die Teil eines Splines ist. 2A bis 2I zeigen visuell den Prozess der Erstellung einer nachbearbeiteten Kurve. Es sollte im Lichte der vorliegenden Offenbarung einsichtig sein, dass das Kurvennachbearbeitungssystem bei Verwendung nur die nachbearbeitete Kurve erzeugen kann. Daher werden die Zwischenschritte/Kurven, die in 2A bis 2I gezeigt sind, gegebenenfalls nicht erzeugt, sondern stellen nur mathematische Berechnungen als Teil des Prozesses der Erzeugung der nachbearbeiteten Kurve dar. Des Weiteren sind die Zwischenschritte/Kurven, die in 2A bis 2I gezeigt sind, nur zu illustrativen Zwecken dargestellt und sollen eine beliebige bestimmte Ausführungsform nicht einschränken.
-
Allgemein gilt im Zusammenhang mit 2A bis 2I, dass das Kurvennachbearbeitungssystem eine Nutzereingabe empfängt, die wenigstens zwei Steuer- bzw. Regelpunkte einer Eingabekurve definiert, die Teil eines Splines ist (2A). Das Kurvennachbearbeitungssystem dreht und verschiebt die Eingabekurve von einem ursprünglichen Koordinatensystem in ein kanonisches Koordinatensystem (2B). Unter Verwendung des kanonischen Koordinatensystems identifiziert das Kurvennachbearbeitungssystem die Kurvenprimitive in der Eingabekurve (2C) und nimmt ein nichtgleichmäßiges Skalieren der Eingabekurve in einer Richtung vor (2E), um skalierte CVC-Kurven zu erstellen (2F). Als Nächstes nimmt das Kurvennachbearbeitungssystem ein Herabskalieren der nichtgleichmäßig skalierten Kurve vor (2G) und behält dabei die Endpunktrandbedingungen der CVC-Kurven bei, um eine nachbearbeitete Kurve zu erzeugen (2H). Das Kurvennachbearbeitungssystem dreht sodann die nachbearbeitete Kurve zurück in ihre ursprüngliche Orientierung und erstellt die nachbearbeitete Kurve (oder eine Bézier-Kurvenanpassung) in dem ursprünglichen Koordinatensystem (2I).
-
Zusammengefasst bedeutet dies, dass, wie in 2A gezeigt ist, das Kurvennachbearbeitungssystem eine Nutzereingabe empfängt, die eine Eingabekurve 200 definiert, die bei der in 2A gezeigten Ausführungsform eine Parabelkurve ist. Bei einigen Ausführungsformen ist die Eingabe eine kubische Kurve. Die Eingabe kann mindestens einen Anfangssteuer- bzw. Regelpunkt und einen Endsteuer- bzw. Regelpunkt beinhalten, die zum Bilden einer Kurve verwendet werden können. Die Kurve 200 beginnt beispielsweise an einem ersten Endpunkt P0 und endet an einem zweiten Endpunkt P1. Die zwei Endpunkte P0 und P1 dienen als Steuer- bzw. Regelpunkte, die Information über den Ort wie auch die Richtung der Kurve 200 und die Krümmung in Bezug auf die Endpunkte bereitstellen. Zu Zwecken der Erläuterung erfolgt die Beschreibung von 2 anhand einer von einem Nutzer eingegeben Kurve. Es sollte jedoch einsichtig sein, dass das Kurvennachbearbeitungssystem die gleichen in Verbindung mit 2 beschriebenen Funktionen auch an bestehenden Kurven unter Verwendung der beiden Endpunkte P0 und P1 zusammen mit entsprechenden Tangenten und Krümmungen wahrnehmen kann.
-
Bei einer oder mehreren Ausführungsformen kann das Kurvennachbearbeitungssystem eine Komponente innerhalb einer Zeichnung und/oder einer Designapplikation auf einer Clientvorrichtung sein, die ermöglicht, dass ein Nutzer eine Nutzereingabe zur Erstellung von. Linien, Formen und Designs eingibt. Bei anderen Ausführungsformen kann das Kurvennachbearbeitungssystem von der Zeichen- und/oder Designapplikation getrennt sein und anderswo auf derselben Clientvorrichtung oder einem anderen Clientrechner (beispielsweise auf einer Servervorrichtung) befindlich sein. Bei einigen Ausführungsformen kann das Kurvennachbearbeitungssystem eine Hardwarekomponente auf einer Rechenvorrichtung sein.
-
Das Kurvennachbearbeitungssystem zeigt bei verschiedenen Ausführungsformen die Kurve 200 dem Nutzer gegebenenfalls nicht an, bis die Kurve nachbearbeitet ist und/oder zu einem Spline mit anderen nachbearbeiteten Kurven hinzugefügt worden ist. Der Prozess der Nachbearbeitung einer Kurve in einem Spline kann jedoch ausreichend schnell erfolgen, sodass der Nutzer nicht wahrnimmt, dass das Kurvennachbearbeitungssystem die Kurve nachbearbeitet. Vielmehr stellt der Nutzer eine Eingabe bereit, die eine Kurve definiert, und das Kurvennachbearbeitungssystem bietet dem Nutzer fortwährend eine ästhetisch gefällige Kurve, wie sie der Nutzer erwartet, ohne merkliche Latenz.
-
Das Kurvennachbearbeitungssystem stellt für einen Nutzer eine digitale Leinwand innerhalb eines ursprünglichen Koordinatensystems bereit. Im Sinne des Vorliegenden bezeichnet ein „ursprüngliches Koordinatensystem” ein System, das ein oder mehrere Zahlen oder Koordinaten verwendet, um die Position eines Punktes oder eines anderen geometrischen Elementes eindeutig zu bestimmen. Ein Beispiel für ein ursprüngliches Koordinatensystem ist ein einfaches zweiachsiges Kartesisches (x, y)-Koordinatensystem, dessen Ursprung bei (0, 0) ist.
-
In 2B positioniert das Kurvennachbearbeitungssystem die Kurve 200 innerhalb eines kanonischen Koordinatensystems. Das kanonische Koordinatensystem ist ebenfalls ein einfaches zweiachsiges Kartesisches (x, y)-Koordinatensystem, dessen Ursprung bei (0, 0) ist. Das kanonische Koordinatensystem wird jedoch für jede nachbearbeitete Kurve in einem Spline angepasst. Wenn also ein Spline mehrere nachzubearbeitende Kurven beinhaltet, erzeugt das Kurvennachbearbeitungssystem ein neues und angepasstes kanonisches Koordinatensystem für jede nachzubearbeitende Kurve in dem Spline. Illustrationshalber entspricht in einem kanonischen Koordinatensystem der erste Endpunkt einer Kurve (das heißt p0) dem Ursprung (0, 0). Der zweite Endpunkt der Kurve (das heißt P1) entspricht (1, 0) auf der x-Achse, was nachstehend noch beschrieben wird. Durch Erzeugen eines angepassten kanonischen Koordinatensystems für jede Kurve kann das Kurvennachbearbeitungssystem die Kurve in einer einzelnen Richtung relativ zur y-Achse des bestimmten Koordinatensystems nichtgleichmäßig strecken.
-
Beim Bewegen einer Kurve (beispielsweise einer Kurve 200) von dem ursprünglichen Koordinatensystem zu dem kanonischen Koordinatensystem verschiebt das Kurvennachbearbeitungssystem die Kurve um –P0 (bewegt beispielsweise den ersten Endpunkt P0 zum Ursprung (0, 0) des kanonischen Koordinatensystems). Darüber hinaus dreht das Kurvennachbearbeitungssystem die Kurve derart, dass P1 auf der x-Achse des kanonischen Koordinatensystems rechts vom Ursprung liegt. Die Kurve beginnt damit im Ursprung des kanonischen Koordinatensystems und wandert in der positiven Richtung (das heißt bezüglich des Ursprungs nach rechts).
-
Des Weiteren skaliert als Teil der Bewegung einer Kurve das Kurvennachbearbeitungssystem die Kurve um 1/B, wobei B der Abstand zwischen dem ersten Endpunkt PO und dem zweiten Endpunkt P1 ist. Mit anderen Worten, das Kurvennachbearbeitungssystem stellt den x-Koordinatenwert derart ein, dass er gleich der horizontalen Länge der Kurve (gemessen vom ersten Endpunkt P0 zum zweiten Endpunkt P1) ist, sodass die Kurve vom Ursprung (0, 0) zu den ersten x-Koordinaten (1, 0) läuft. Wie vorstehend erläutert worden ist, erstellt das Kurvennachbearbeitungssystem ein eigenes kanonisches Koordinatensystem für jede Kurve mit einem Paar von benachbarten Steuer- bzw. Regelpunkten. 2B zeigt das Kurvennachbearbeitungssystem, bei dem die Kurve 200 von dem ursprünglichen Koordinatensystem in 2A in ein kanonisches Koordinatensystem verbracht worden ist.
-
Wie in 2C gezeigt ist, identifiziert das Kurvennachbearbeitungssystem unter Verwendung des kanonischen Koordinatensystems die Krümmung der Kurve 200. Zu Zwecken der Erläuterung sind die Tangentenwinkellinien 206a und 206b und der Schmiegekreis 208 visuell zu 2C hinzugefügt, um die Krümmung der Kurve 200 insbesondere am ersten Endpunkt P0 darzustellen. Gleichwohl kann das Kurvennachbearbeitungssystem bei einigen Ausführungsformen die Krümmung ohne Verwendung von Schmiegekreisen und/oder Tangentenwinkellinien bestimmen. Mit anderen Worten, bei einigen Ausführungsformen dienen Schmiegekreise als Darstellungshilfe. Im Sinne des Vorliegenden bezeichnet ein „Schmiegekreis” einen Kreis an einem Endpunkt einer Kurve, der tangential zu der Kurve am Endpunkt ist. Ein Schmiegekreis weist einen Radius von 1/k(t) auf, wobei k(t) die Krümmung der Kurve an der Position t darstellt. Als solches ist ein Schmiegekreis ein Kreis, der sich der Kurve am Endpunkt (beispielsweise am Endpunkt P0 oder P1) einer Kurve am stärksten nähert, wenn sowohl der Tangentenwinkel wie auch die Krümmung des Schmiegekreises zu denjenigen der entsprechenden Kurve passen. Mit anderen Worten, ein Schmiegekreis passt zur Kurve sowohl hinsichtlich der ersten Ableitung (das heißt hinsichtlich des Winkels) wie auch hinsichtlich der zweiten Ableitung (das heißt hinsichtlich der Krümmung) an einem Endpunkt und stellt daher eine gute lokale G2-Näherung der entsprechenden Kurve dar.
-
Das Kurvennachbearbeitungssystem skaliert sodann nichtgleichmäßig die Kurve 200 in y-Richtung des kanonischen Koordinatensystems unter Verwendung eines y-Skalierungsfaktors, um eine Kurve mit gewünschten Winkeln und Krümmungen an den Endpunkten P0, P1 zu berechnen. Das Kurvennachbearbeitungssystem setzt einen variablen y-Skalierungsfaktor ein, wobei s in Abhängigkeit von der x-Achse variiert. Das Kurvennachbearbeitungssystem identifiziert den Winkel der Tangente für eine bestimmte x-Koordinate (beispielsweise den Anfangspunkt oder den Endpunkt der Kurve) und verwendet den Winkel der Tangente zum Bestimmen eines Skalierungsfaktors s für die entsprechende y-Koordinate. Ist beispielsweise der Tangentenwinkel einer x-Koordinate gegeben, so wendet das Kurvennachbearbeitungssystem eine trigonometrische Funktion und/oder eine kubische Gleichung an, um den Skalierungsfaktor s (oder den reziproken Skalierungsfaktor 1/s) zu bestimmen und ihn auf die entsprechende y-Koordinate anzuwenden. Bei verschiedenen Ausführungsformen setzt das kanonische Koordinatensystem zudem Krümmungswerte, einen Grundlinienwert und/oder einen konstanten Wert ein, um den y-Skalierungsfaktor zu bestimmen.
-
2D zeigt einen Skalierungsfaktor s für die Kurve 200. Das Kurvennachbearbeitungssystem bestimmt den Wert des Skalierungsfaktors für x-Werte zwischen 0 und 1 oder anders gesagt vom ersten Endpunkt P0 zum zweiten Endpunkt P1. Der Skalierungsfaktor s in Verbindung mit dem ersten Endpunkt P0 und dem zweiten Endpunkt P1 ist in 2D mit YS0 beziehungsweise YS1 bezeichnet. Bei verschiedenen Ausführungsformen ist der Skalierungsfaktor s zwischen YS0 und YS1 beispielsweise unter Verwendung einer glatten bzw. stetigen Mischfunktion (blending function) oder einer Mischfunktion, wie sie nachstehend noch beschrieben wird, gemischt.
-
Vor dem Anwenden eines Skalierungsfaktors auf die Kurve nimmt das Kurvennachbearbeitungssystem bei einer oder mehreren Ausführungsformen eine Prüfung vor und bestimmt, ob die Verwendung von nichtgleichmäßig skalierten CVC-Kurven bei der Erzeugung von ansehnlicheren Kurven von Nutzen sein wird. Das Kurvennachbearbeitungssystem vergleicht beispielsweise den Radius eines Schmiegekreises mit einem Grundlinienabstand V (das heißt dem Bewegungsabstand entlang der entsprechenden Kurve), um intensiver zu behandelnde Fälle zu bestimmen. Ist der Radius eines Schmiegekreises beispielsweise kleiner als 1/6 des Grundlinienabstandes (B), so setzt das Kurvennachbearbeitungssystem nichtgleichmäßig skalierte CVC-Kurven und ein Herabskalieren zum Erzeugen von ästhetisch gefälligeren Kurven ein. Andernfalls verwendet das Kurvennachbearbeitungssystem herkömmliche CVC-Kurven zum Erzeugen einer nichtnachbearbeiteten Kurve. Bei einigen Ausführungsformen verwendet das Kurvennachbearbeitungssystem ein Viertel des Abstandes anstelle eines Sechstels des Abstandes als Grundlinienabstand beim Prüfen, ob eine nichtgleichmäßige Skalierung, CVC-Kurven und ein Herabskalieren eingesetzt werden sollen.
-
Bei einigen Ausführungsformen fokussiert das Kurvennachbearbeitungssystem auf einen Wert des Skalierungsfaktors s nahe am ersten Endpunkt P0 der Kurve (0, 0) und nahe am zweiten Endpunkt P1 der Kurve (1, 0). Beispielsweise ist, wie in 2D gezeigt ist, der Skalierungsfaktor s bei YS0 etwa bei 2, während in der Mitte der Kurve bei x = 0,5 der Skalierungsfaktor s nahe an 1 ist, was keine Skalierung angibt. Nahe am zweiten Endpunkt flacht der Skalierungsfaktor s ab. Mit anderen Worten, das Kurvennachbearbeitungssystem wendet einen größeren Skalierungsfaktor s an den Endpunkten der Kurve an, wobei die Skalierung nahe am ersten Endpunkt P0 größer die Skalierung nahe am zweiten Endpunkt P1 im Verhältnis zu dem in 2D gezeigten Skalierungsfaktor s ist.
-
2E zeigt eine skalierte Kurve 202, die nichtgleichmäßig in einer einzelnen Richtung auf Grundlage des in 2D gezeigten Skalierungsfaktors s skaliert ist. Da die skalierte Kurve 202 bei diesem Beispiel in y-Richtung größer geworden ist, erscheint die skalierte Kurve 202 nahe am ersten Endpunkt P0 und am zweiten Endpunkt P1 höher und daher runder als die in 2C gezeigte Kurve 200. Illustrationshalber sind die geänderten Tangentenwinkellinien 206c und 206b stärker vertikal als die ursprünglichen Tangentenwinkellinien 206a und 206b der in 2C gezeigten vorskalierten Kurve 200, wo stärker vertikale Tangentenwinkellinien eine verringerte Rate der Krümmungsänderung einer Kurve und daher eine ansehnlichere Kurve ergeben.
-
2F zeigt CVC-Kurven 210, die auf Grundlage der skalierten Kurve 202 erstellt sind, siehe 2E. 2F zeigt zudem einen skalierten Schmiegekreis. Insbesondere skaliert das Kurvennachbearbeitungssystem den Schmiegekreis 208 (2C) nichtgleichmäßig in y-Richtung in Verbindung mit einer nichtgleichmäßigen Skalierung der Kurve, um eine Schmiegeellipse 212 zu bilden. Das Kurvennachbearbeitungssystem rundet sodann den verzerrten (skewed) Schmiegekreis oder die Schmiegeellipse 212 ab, um den gestreckten Schmiegekreis 214 zu erhalten. Auf diese Weise verringert das Kurvennachbearbeitungssystem die Krümmung der Kurve nahe am ersten Endpunkt P0 durch Skalieren und Strecken des Schmiegekreises 208 (2C), um den gestreckten Schmiegekreis 214 zu erhalten.
-
Obwohl dies nicht dargestellt ist, bestimmt das Kurvennachbearbeitungssystem bei einigen Ausführungsformen einen Schmiegekreis für jeden Endpunkt einer Kurve. Für den Fall des Einsatzes eines Schmiegekreises für beide Endpunkte kann das Kurvennachbearbeitungssystem den zweiten gestreckten Schmiegekreis, wie vorstehend beschrieben worden ist, in Bezug auf den Schmiegekreis 208 und den verzerrten Schmiegekreis (beispielsweise die Schmiegeellipse 212) strecken. Des Weiteren wird für den Fall des Einsatzes von zwei Schmiegekreisen jeder Schmiegekreis entsprechend dem Skalierungsfaktor, der dem Endpunkt entspricht, zu dem der Schmiegekreis gehört, skaliert und gestreckt. Als solches ist, wenn der Skalierungsfaktor s nahe an YS0 größer als nahe an YS1 ist, die Skalierung des ersten Schmiegekreises entsprechend YS0 größer als die Skalierung des zweiten Schmiegekreises entsprechend YS1.
-
Bei einer oder mehreren Ausführungsformen verwendet das Kurvennachbearbeitungssystem die gestreckten Schmiegekreise, um den Winkel und die Krümmung einer jeden Kurve zu erhalten, und dies in einigen Fällen ohne Kenntnis der tatsächlichen Kurve. Das Kurvennachbearbeitungssystem kann diese „geänderten” Winkel (das heißt die geänderten Tangentenwinkellinien 206c und 206d) und die Krümmungen der gestreckten Kreise sodann als Eingaben beim Bestimmen der CVC-Kurvenparameter verwenden. Wird eine Kurve herabskaliert (nachstehend noch beschrieben), so weist die Kurve die korrekten Eingabewinkel und Eingabekrümmungen auf.
-
Wie vorstehend beschrieben worden ist, zeigt 2F CVC-Kurven 210, die auf Grundlage der skalierten Kurve 202 erstellt worden sind. Durch Berechnen einer oder mehrerer CVC-Kurven aus der skalierten Kurve 202 identifiziert das Kurvennachbearbeitungssystem die gewünschten Winkel und Krümmungen an einer Abfolge von Punkten entlang der CVC-Kurven (mit oder ohne Verwendung der gestreckten Schmiegekreise), darunter an den Endpunkten der Kurve. Insbesondere beinhalten die Endpunkte Endpunktrandbedingungen (beispielsweise eine Anfangsrichtung, eine Endrichtung, eine Anfangskrümmung und eine Endkrümmung), die ermöglichen, dass das Kurvennachbearbeitungssystem die Krümmung und Richtung der CVC-Kurven erfasst.
-
Werden die Endpunktrandbedingungen beibehalten (das heißt, werden die Endpunktrandbedingungen angewendet), so nimmt das Kurvennachbearbeitungssystem ein Herabskalieren vor oder skaliert die skalierte Kurve 202 herab. Das Beibehalten der Endpunktrandbedingungen ermöglicht, dass das Kurvennachbearbeitungssystem die skalierte Kurve 202 herabskaliert und dabei die nachbearbeitete Krümmung beibehält. Das Kurvennachbearbeitungssystem nimmt ein Herabskalieren der skalierten Kurve 202 unter Verwendung eines invertierten Skalierungsfaktors s–1 vor, der invers proportional zum Skalierungsfaktor YS0 und YS1 ist (beispielsweise die Umkehrung der nachbearbeiteten y-Skalierungsfaktoren oder 1/YS0 und 1/YS1). 2G zeigt den Skalierungsfaktor s–1, der daher beim vorliegenden Beispiel für die Kurve 200 verwendet wird. Der invertierte Skalierungsfaktor s–1 erscheint etwa bei y = 1 symmetrisch zu dem Skalierungsfaktor s, wie in 2D gezeigt ist. Man beachte, dass in 2G die reziproke Kurve zwischen 0,5 und 1,0 auf der y-Achse verläuft.
-
Bei einigen Ausführungsformen wendet das Kurvennachbearbeitungssystem beim Herabskalieren der skalierten Kurve 202 jeweils einen invertierten Skalierungsfaktor s–1 auf die gestreckten Schmiegekreise für die nachbearbeitete Kurve bei (0, 0) und (1, 0) an. Beim Herabskalieren der gestreckten Schmiegekreise behält das Kurvennachbearbeitungssystem den nachbearbeiteten Winkel und die nachbearbeitete Krümmung der nachbearbeiteten Kurven bei, da das Herabskalieren des Radius der gestreckten Schmiegekreise um den entsprechenden invertierten Skalierungsfaktor s–1 den Winkel oder die Krümmung der gestreckten Schmiegekreise nicht (oder allenfalls minimal) ändert. Als solches verwendet das Kurvennachbearbeitungssystem die herabskalierten, gestreckten Schmiegekreise, um die Endpunktrandbedingungen, die unter Verwendung der CVC-Kurven ausfindig gemacht worden sind, zu erhalten. Das Kurvennachbearbeitungssystem verwendet beispielsweise die herabskalierten, gestreckten Schmiegekreise und den invertierten Skalierungsfaktor, um auf gleiche Weise die nichtgleichmäßig skalierte Kurve zu einer nachbearbeiteten Kurve auf Grundlage der Herabskalierung der gestreckten Schmiegekreise herabzuskalieren. Wie vorstehend erwähnt und ausgeführt worden ist, kann das Kurvennachbearbeitungssystem unter Verwendung dieses Verfahrens die tatsächliche G2-Kontinuität nicht verwirklichen, wobei jedoch das Kurvennachbearbeitungssystem eine genäherte G2-Kontinuität verwirklichen kann, bei der die Differenz zwischen der tatsächlichen G2-Kontinuität und der genäherten G2-Kontinuität für das menschliche Auge nicht detektierbar ist.
-
Illustrationshalber zeigt 2H eine nachbearbeitete Kurve 204, die die herabskalierte Version der skalierten Kurve 202 ist. Die nachbearbeitete Kurve 204 liegt an dem herabskalierten Schmiegekreis 218 an, der um den invertierten Skalierungsfaktor s–1 (jeweils 1/YS0 und 1/YS1) herabskaliert worden ist und dieselben Winkel und dieselbe Krümmung wie der gestreckte Schmiegekreis 214 aufweist. Da der gestreckte Schmiegekreis 214 und daher der herabskalierte Schmiegekreis 218 die Krümmung der Kurve 200 verringert haben, ist die nachbearbeitete Kurve 204 eine vollere und rundere Kurve, die für einen Nutzer ansehnlicher und ästhetisch gefälliger aussieht. Alternativ kann bei einigen Ausführungsformen 2H eine oder mehrere CVC-Kurven darstellen, die herabskaliert und nachbearbeitet worden sind. Bei diesen Ausführungsformen passt das Kurvennachbearbeitungssystem eine oder mehrere Bézier-Kurven an die herabskalierten CVC-Kurven an, wie nachstehend noch beschrieben wird.
-
2I zeigt das Kurvennachbearbeitungssystem, das die nachbearbeitete Kurve 204 zurück in ihre ursprüngliche Orientierung dreht. Das Kurvennachbearbeitungssystem relokalisiert die nachbearbeitete Kurve 204 beispielsweise durch Bewegen der nachbearbeiteten Kurve 204 um +P0 (siehe 2A) innerhalb des kanonischen Koordinatensystems. Des Weiteren relokalisiert, siehe 2I, das Kurvennachbearbeitungssystem die nachbearbeitete Kurve 204 in dem ursprünglichen Koordinatensystem. Beim Vergleichen der Eingabekurve 200 mit der nachbearbeiteten Kurve 204 ist ersichtlich, dass die nachbearbeitete Kurve 204 ansehnlicher ist. Für viele Menschen macht die hinzugefügte Rundheit die nachbearbeitete Kurve 204 ästhetisch gefälliger.
-
Bei einer oder mehreren Ausführungsformen kann die nachbearbeitete Kurve 204 in 2I eine Bézier-Kurve sein. Das Kurvennachbearbeitungssystem kann beispielsweise eine oder mehrere Bézier-Kurven an die herabskalierte Kurve 202 vor der Umwandlung der nachbearbeiteten Kurve 204 zurück in das ursprüngliche Koordinatensystem anpassen. Alternativ kann das Kurvennachbearbeitungssystem eine oder mehrere Bézier-Kurven an die gestreckte Kurve 202 (oder direkt an die CVC-Kurven 210) anpassen und die inverse Skalierung (das heißt die Herabskalierung) und Drehung auf die eine oder die mehreren Bézier-Kurven anwenden, um die nachbearbeitete Kurve 204 zu erzeugen. Zusätzliche Details im Zusammenhang mit dem Anpassen einer einzelnen Bézier-Kurve oder mehrerer Bézier-Kurven an eine gestreckte Kurve 202, eine herabskalierte Kurve 204 oder eine CVC-Kurve 210 werden nachstehend angegeben.
-
3A bis 3D zeigen ein Beispiel für einen Spline mit mehreren Kurven, wobei jede Kurve nichtgleichmäßig in einem separaten kanonischen Koordinatensystem entsprechend einer oder mehreren Ausführungsformen gestreckt ist. Wie vorstehend erwähnt worden ist, kann das Kurvennachbearbeitungssystem mehrere Kurven in einem Spline nachbearbeiten, um einen reicheren und volleren Spline zu erstellen. Illustrationshalber zeigt 3A einen Spline 300, der eine erste Kurve 302, eine zweite Kurve 304 und eine dritte Kurve 306 beinhaltet.
-
Wie vorstehend beschrieben worden ist, benötigt das Kurvennachbearbeitungssystem lediglich zwei Steuer- bzw. Regelpunkte zur Nachbearbeitung einer Kurve. Sind mehrere Kurven in einem Spline, so kann das Kurvennachbearbeitungssystem mittlere Steuer- bzw. Regelpunkte zur Nachbearbeitung der Kurve einer jeden Kurve verwenden. Allgemein gilt, dass dann, wenn N Kurven in einem Spline vorhanden sind, das Kurvennachbearbeitungssystem N + 1 Steuer- bzw. Regelpunkte zur Nachbearbeitung einer jeden Kurve in dem Spline benötigt.
-
Wie gezeigt ist, weist jede Kurve 304 bis 306 zwei Steuer- bzw. Regelpunkte auf.
-
Die erste Kurve 302 beginnt an dem Steuer- bzw. Regelpunkt P0 und endet an dem Steuer- bzw. Regelpunkt P1. Die zweite Kurve 304 beginnt an dem Steuer- bzw. Regelpunkt P1 und endet an dem Steuer- bzw. Regelpunkt P2. Die dritte Kurve 306 beginnt an dem Steuer- bzw. Regelpunkt P2 und endet an dem Steuer- bzw. Regelpunkt P3. Man beachte, dass jede Kurve 304 bis 306 in dem Spline 300 wenigstens einen Steuer- bzw. Regelpunkt mit einer weiteren Kurve gemeinsam hat.
-
Das Kurvennachbearbeitungssystem bearbeitet jede Kurve 304 bis 306 in dem Spline 300, wie vorstehend beschrieben worden ist, separat nach. Illustrationshalber verschiebt und dreht das Kurvennachbearbeitungssystem die erste Kurve 302 in ein erstes angepasstes kanonisches Koordinatensystem 310, wie in 3B gezeigt ist. Das Kurvennachbearbeitungssystem verschiebt und dreht die zweite Kurve 304 in ein zweites angepasstes kanonisches Koordinatensystem 320, wie in 3C gezeigt ist. Auf gleiche Weise verschiebt und dreht das Kurvennachbearbeitungssystem die dritte Kurve 306 in ein drittes angepasstes kanonisches Koordinatensystem 330, wie in 3D gezeigt ist.
-
Da jede Kurve in einem angepassten kanonischen Koordinatensystem ist, kann das Kurvennachbearbeitungssystem jede Kurve 304 bis 306 in Bezug auf das angepasste kanonische Koordinatensystem, dem die Kurve entspricht, wie vorstehend beschrieben worden ist, nichtgleichmäßig skalieren. Des Weiteren kann das Kurvennachbearbeitungssystem unter Verwendung des angepassten kanonischen Koordinatensystems jede Kurve unter Verwendung der vorbeschriebenen Systeme und Verfahren unabhängig nachbearbeiten, was nachstehend noch beschrieben wird. Nachdem jede Kurve nachbearbeitet worden ist, kann das Kurvennachbearbeitungssystem einen nachbearbeiteten Spline oder einen Spline mit nachbearbeiteten Kurven erzeugen.
-
Da nunmehr eine Übersicht über die Prozesse der Nachbearbeitung eines eingegebenen Splines anhand 2A bis 2I und 3A bis 3D gegeben worden ist, werden nachstehend zusätzliche Details dieses Prozesses angegeben.
-
Wie vorstehend erwähnt worden ist, berechnet das Kurvennachbearbeitungssystem CVC-Kurven innerhalb des kanonischen Koordinatensystems. Vor einer Beschreibung dessen, wie das Kurvennachbearbeitungssystem CVC-Kurven berechnet, wird eine verallgemeinerte Beschreibung des Berechnens von CVC-Parametern vorgestellt. Insbesondere wird ein verallgemeinerter Algorithmus, den das Kurvennachbearbeitungssystem bei einigen Ausführungsformen einsetzen kann, beschrieben. Man beachte, dass die Ausgabe des Algorithmus eine Abfolge von CVC-Kurven ist. Des Weiteren wird in dem Algorithmus jede CVC-Kurve durch eine Struktur mit zehn Feldern dargestellt, die die Parameter angeben, die zum Konstruieren von Punkten auf der CVC-Kurve benötigt werden. Diese Parameter sind nachstehend in Tabelle 1 zusammengefasst. Bei einigen Ausführungsformen sind die Felder in Tabelle 1 als Fließkommazahlen dargestellt. Bei anderen Ausführungsformen können die Felder in Tabelle 1 von einem beliebigen anderen Datentyp sein. Tabelle 1
Parameternamen | Bedeutung |
a, b, c, d | Koeffizienten des Krümmungspolynoms k(s) = a × s3 + b × s2 + c × s + d |
YS0, YS1, | Nichtgleichmäßige Skalierung für den Anfangspunkt und den Endpunkt einer Kurve |
tx, ty | erforderliche Verschiebung der Kurve |
R und S | erforderliche Drehung und Skalierung der Kurve |
-
Das Kurvennachbearbeitungssystem nimmt als Eingabe eine Abfolge von N Steuer- bzw. Regelpunkten P(1), P(2), ..., P(N) und erzeugt als Ausgabe eine Abfolge von N – 1 CVC-Kurven, die mit C(1), C(2), ..., C(N – 1) bezeichnet sind. Insbesondere werden die Variablen A und K berechnet. Die Variablen A und K stellen Feldanordnungen dar, die den benötigten Winkel und die benötigte Krümmung an jedem der N Steuer- bzw. Regelpunkte vorhalten. Das Kurvennachbearbeitungssystem berechnet A und K auf Grundlage der Steuer- bzw. Regelpunkte (p) unter Verwendung eines quadratischen k-Kurven-Algorithmus, der quadratische Kappa-Kurven berechnet. Das Kurvennachbearbeitungssystem implementiert beispielsweise den quadratischen k-Kurven-Algorithmus, wie er in der Veröffentlichung des
US-Patentes Nr. 2015/0062129 beschrieben ist, das hiermit in Gänze durch Verweisung mit aufgenommen ist. Nach der Verwendung des quadratischen k-Kurven-Algorithmus zur Berechnung von A und K berechnet das Kurvennachbearbeitungssystem jede der CVC-Kurven zwischen benachbarten Steuer- bzw. Regelpunkten unter Verwendung eines CVC-Algorithmus. Das Kurvennachbearbeitungssystem verwendet den CVC-Algorithmus in Bezug auf das kanonische Koordinatensystem, wie vorstehend beschrieben worden ist. Eine Ausführungsform eines CVC-Algorithmus nimmt als Eingaben (P0, P1, A0, A1, K0, K1) und stellt eine Ausgabe (C) bereit. Wie vorstehend beschrieben worden ist, sind die Eingaben P0 und P1 die Steuer- bzw. Regelpunkte, die die Kurve beginnen (beispielsweise der erste Endpunkt P0) und beenden (beispielsweise der zweite Endpunkt P1), die Eingaben A0 und A1 sind die Winkel der Tangenten am Anfang und Ende der Kurve, und die Eingaben K0 und K1 sind die Krümmungen am Anfang und Ende der Kurve.
-
Das Kurvennachbearbeitungssystem berechnet den Abstand zwischen dem Anfangspunkt und dem Endpunkt unter Verwendung des nachfolgenden Abstandsalgorithmus: B = sqrt((P1.x – P0.x)2 + (P1.y – P0.y)2). Im Allgemeinen bezeichnet die Schreibweise „p.x” die x-Koordinate des Punktes, der mit der Variablen p bezeichnet ist. Auf gleiche Weise ist „p.y” die y-Koordinate des Punktes, der mit der Variablen p bezeichnet ist. Darüber hinaus bezeichnet die Schreibweise „A.b” A, das eine Struktur ist, und b, das ein Feldname dieser Struktur ist. Des Weiteren ist „A.b” selbst der Wert des Feldes.
-
Das Kurvennachbearbeitungssystem berechnet Kmax, das die maximal zulässige Krümmung an den Endpunkten für die in Rede stehende Kurve ist, als Kmax = H/B. Das Kurvennachbearbeitungssystem definiert eine Konstante H, die zum Bestimmen verwendet wird, wann und um wie viel die Kurve nichtgleichmäßig skaliert werden muss. Die Konstante H kann physikalisch interpretiert werden und ist dann die maximal zulässige Krümmung an jedem Ende einer CVC-Kurve, wenn der Abstand zwischen den Kurvenendpunkten gleich 1 ist. Bei einer oder mehreren Ausführungsformen definiert das Kurvennachbearbeitungssystem H beispielsweise als 4. Bei alternativen Ausführungsformen verwendet das Kurvennachbearbeitungssystem andere konstante Werte.
-
Das Kurvennachbearbeitungssystem berechnet die Reziproken der nichtgleichmäßigen Skalierungsfaktoren (1/YS0) und (1/YS1), die am Anfang beziehungsweise Ende der Kurve angewendet werden. Das Kurvennachbearbeitungssystem speichert sodann die Reziproken der nichtgleichmäßigen Skalierungsfaktoren in der Struktur C. In vielen Fällen ist das Arbeiten mit den Reziproken der Skalierungsfaktoren rechentechnisch weniger aufwändig als das direkte Arbeiten mit den Skalierungsfaktoren selbst.
-
Zur Berechnung der nichtgleichmäßigen Skalierungsfaktoren (1/YS0) und (1/YS1) werden die nachfolgenden Formeln verwendet: 1/YS0 = SyForKRatio(K0/Kmax, A0) und 1/YS1 = SyForKRatio(K1/Kmax, A1). Hierbei ist die Funktion Sy gleich 1, wenn abs(a) < 1e–10 gilt. Ansonsten gilt: SySq = –cot(a)2 + SySq = cot(a)2 + (2 × cos(π/6 + (1/3) × asin((3/2) × sqrt(3) × Cr × cos(a)2 × sin (a))))/(sin(a)3 × sqrt(3) × Cr und Sy = sqrt(SySq). Die Eingabe Cr ist das Verhältnis der benötigten Krümmung zur maximal zulässigen Krümmung. Die Eingabe a ist der Tangentenwinkel am Endpunkt. Wie gezeigt ist, prüft das Kurvennachbearbeitungssystem einen sehr kleinen Winkel, da die Hauptberechnung in jenem Fall nummerisch instabil ist. Das Kurvennachbearbeitungssystem berechnet das Quadrat der geänderten Krümmung. Die Berechnung impliziert das Lösen einer kubischen Gleichung und das Ziehen der mittleren Wurzel. Diese kubische Gleichung wird direkt über das trigonometrische Verfahren gelöst. Diese Funktion gibt das Reziproke des Skalierungsfaktors zur Verwendung bei der Berechnung der Kurve aus der CVC-Kurve aus.
-
Als Nächstes berechnet das Kurvennachbearbeitungssystem die geänderten Winkel und Krümmungen. Beim Berechnen der geänderten Winkel und Krümmungen wird davon ausgegangen, dass das kanonische Koordinatensystem um eine Mischung zwischen C.YS0 (C.YS0 = 1/InvYS0) und C.YS1 (C.YS1 = 1/InvYS1) vom Anfangspunkt zum Endpunkt gestreckt worden ist. Der erste geänderte Winkel wird als A0Altered = atan2(InvYS0 × sin(A0), cos(A0)) berechnet. Der zweite geänderte Winkel wird als A1Altered = atan2(InvYS1 × sin(A1), cos(A1)) berechnet.
-
Die geänderten Krümmungen (K0Altered und K1Altered) sind im Allgemeinen kleiner als Kmax. Insbesondere berechnet das Kurvennachbearbeitungssystem die geänderten Winkel und Krümmungen folgendermaßen: kSc = (sqrt(8) × k. × Sy)/((1 + SySq – 1) × cos(2 × ang)).3/2). Die Eingaben k und ang sind die erforderliche Krümmung und der erforderliche Winkel im ursprünglichen Koordinatensystem, während die Eingabe Sy der reziproke Skalierungsfaktor mit SySq = Sy. × Sy. ist. Die nachfolgende Funktion gibt die Krümmung des Schmiegekreises bei (0, 0) aus, der in y-Richtung um Sy skaliert worden ist. Der Schmiegekreis ist ein eindeutiger Kreis durch (0, 0) mit dem Radius 1/k, einem Verlauf durch (0, 0) und dem Winkel ang.
-
Als Nächstes berechnet das Kurvennachbearbeitungssystem die Koeffizienten von k(s) = a × s3 + b × s2 + c × s + d, das dasjenige Polynom ist, das die Krümmung und daher die Form der CVC-Kurve in dem kanonischen Koordinatensystem unter Verwendung von A0Altered, A1Altered, B × K0Altered, B × K1Altered als Eingaben bestimmt. Nebenbei bemerkt ist das kanonische Koordinatensystem B-mal kleiner als das ursprüngliche Koordinatensystem, sodass die Krümmungen entsprechend hinaufskaliert werden können, wobei 1/B die Länge einer Kurve vom Anfangspunkt zum Endpunkt ist.
-
Das Kurvennachbearbeitungssystem berechnet die Reziproken von 1/YS0 und 1/YS1 und speichert sie zur Ausgabe in der CVC-Struktur. Das Kurvennachbearbeitungssystem berechnet sodann die benötigte Verschiebung, Drehung und Skalierung von dem kanonischen Koordinatensystem in das ursprüngliche Koordinatensystem als C.tx = P0.x, C.ty = P0.y, C.R = atan2(P1.y – P0.y, P1.x – P0.x) und C.S = B.
-
Zusätzliche Details im Zusammenhang mit dem Strecken und Herabskalieren durch das Kurvennachbearbeitungssystem werden nunmehr beschrieben. Die variable y-Skalierung, die zum Skalieren von CVC-Kurven verwendet werden kann, kann in einigen Fällen eine Voraussetzung zur Erzeugung von Punkten auf einer CVC-Kurve sein. Wie vorstehend beschrieben worden ist, kann das Ausmaß der y-Skalierung durch das Kurvennachbearbeitungssystem von der x-Koordinate in dem kanonischen Koordinatensystem abhängen. Das Ausmaß der Skalierung an Zwischenpunkten wird beispielsweise durch eine Mischfunktion b(x) gesteuert bzw. regelt, die bei gegebener x-Koordinate aussagt, wie viel von YS0 und wie viel von YS1 an dem Punkt (x, y) verwendet werden soll. Wie vorstehend beschrieben worden ist, verwendet die Mischfunktion die gegebene x-Koordinate und berechnet eine Mischung aus YS0 und YS1 zur Verwendung an dem Punkt (x, y).
-
Die Mischfunktion verwendet a = x/B und b = 3 × a2 – 2 × a3. Das erste Eingabeargument x ist die x-Koordinate eines Punktes, während das zweite Argument B die Grundlinienlänge ist. Wie gezeigt ist, ist a gleich 0, wenn x = 0 gilt, und es ist a gleich 1, wenn x = B gilt. Bei vielen Ausführungsformen verwendet das Kurvennachbearbeitungssystem keine einfache lineare Mischfunktion. Ein Grund hierfür liegt darin, dass die Mischfunktion die Ableitung 0 in Bezug auf x haben sollte, wenn x = 0 oder x = B gilt. Diese Eigenschaft ermöglicht, dass sich Krümmungen auf vorhersagbare Weise bei Verwendung einer variablen y-Skalierung ändern. Alternativ verwendet das Kurvennachbearbeitungssystem bei einigen Ausführungsformen eine einfache lineare Mischfunktion mit den hinzugefügten Bedingungen, dass das Kurvennachbearbeitungssystem 0 ausgibt, wenn x = 0 gilt, und 1 ausgibt, wenn x = B gilt.
-
Bei einer oder mehreren Ausführungsformen kann das Kurvennachbearbeitungssystem zum Erreichen einer größeren Genauigkeit eine variable y-Skalierung mit der Mischfunktion anwenden, die die Krümmungen an den Endpunkten auf dieselbe Weise ändert, wie eine gleichmäßige Skalierung von YS0 die Krümmung am Anfangspunkt ändern würde und eine gleichmäßige Skalierung von YS1 die Kurve am Endpunkt ändern würde. Dieser Punkt ist nicht trivial bei der Verwendung einer festen y-Skalierung an den Schmiegekreisen zur Berechnung der geänderten Winkel und Krümmungen in den CVC-Kurven, wie vorstehend beschrieben worden ist (Man beachte, dass die vorgenannte Mischfunktion das einfachste Polynom ist, das gleich 0 bei x = 0 und gleich 1 bei x = 1 ist und das eine Nullableitung bei x = 0 und x = 1 aufweist).
-
Das Kurvennachbearbeitungssystem berechnet die variable y-Skalierung beispielsweise als Funktion von x, y, B, YS0, YS1. Insbesondere gilt S = (1 – b)/YS0 + b/YS1. Als Teil einer komplexeren Mischfunktion ist yS = S × y und sX = x, wie vorstehend erläutert worden ist. Wie gezeigt ist, ist die Eingabe x die x-Koordinate eines Punktes, die Eingabe B ist die Grundlinienlänge, die Eingabe y ist die y-Koordinate des Punktes, und die Eingaben YS0 und YS1 sind die linken und rechten y-Skalierungsfaktoren. Die komplexere Mischfunktion gibt den neuen Wert der y-Koordinate des Punktes aus. Diese Funktion ist eine Vorwärts-y-Skalierung, die y-Koordinaten derart verringern soll, dass diese näher an der Grundlinie sind, und die Krümmungen an den Endpunkten vergrößern soll. Man beachte, dass diese Funktion den Mischfaktor b verwendet, um die Reziproken von YS0 und YS1 zur Berechnung von yS zu interpolieren, was dann als reziproker Skalierungsfaktor verwendet wird. Zur Umkehrung oder Anwendung einer inversen variablen y-Skalierung (beispielsweise einer Herabskalierung) kann das Kurvennachbearbeitungssystem die folgenden Funktionen verwenden: S = (1 – b)/YS0 + b/YS1; yS = y/S und xS = x.
-
Auf Grundlage eines Verständnisses für die Streckung und Herabskalierung durch das Kurvennachbearbeitungssystem werden nunmehr Ausführungsformen des Kurvennachbearbeitungssystems beschrieben, die das Erzeugen von Steuer- bzw. Regelpunkten auf einer CVC-Kurve beinhalten. Diese Ausführungsformen gehen davon aus, dass das Kurvennachbearbeitungssystem innerhalb des kanonischen Koordinatensystems arbeitet und eine Feldanordnung von Strukturen verwendet, die aufeinanderfolgende CVC-Kurven für die gewünschte Kurve beschreiben.
-
Das Ziel des Kurvennachbearbeitungssystems besteht in der Erzeugung der Illusion einer glatten bzw. stetigen Kurve durch Ausdrucken von Linien zwischen einer Abfolge von eng beabstandeten Punkten entlang dieser Kurve. Ein nützlicher Eingabeparameter für diesen Prozess ist daher der gewünschte Abstand zwischen derartigen aufeinanderfolgenden Punkten. Es sollte einsichtig sein, dass bei gegebener Beschreibung zur Erzeugung eines derartigen Satzes von Punkten für eine CVC-Kurve zusätzliche Sätze von Punkten für zusätzliche CVC-Kurven in einem Spline ebenfalls erzeugt werden können. Als solches wird aus Gründen der Einfachheit nur ein Verfahren zum Umwandeln einer CVC-Kurve in eine Abfolge von Punkten in dem ursprünglichen Koordinatensystem mit einem spezifizierten Abstand zwischen den Punkten beschrieben.
-
Das nachstehend beschriebene Verfahren zum Erzeugen von Steuer- bzw. Regelpunkten auf einer CVC-Kurve geht vom Verständnis der Erzeugung einer Abfolge von Punkten für eine CVC-Kurve in dem kanonischen Koordinatensystem aus. Auf diese Weise muss das Kurvennachbearbeitungssystem nur eine Funktion ausführen, die (a) den Abstand von Punkten in dem kanonischen Koordinatensystem von dem gewünschten Abstand in dem ursprünglichen Koordinatensystem schätzt, (b) die variable y-Skalierung anwendet, um die skalierte Kurve aus der CVC-Kurve zu erhalten, und (c) Punkte, die in dem ursprünglichen Koordinatensystem erzeugt werden, verschiebt.
-
Die CVC-Kurvenfunktion nimmt als Eingaben C und den benötigten Punktabstand. Das Kurvennachbearbeitungssystem berechnet den benötigten Punktabstand in dem kanonischen Koordinatensystem als cSpc = spacing × C.S. Das Kurvennachbearbeitungssystem berechnet die CVC-Punkte vor dem Herabskalieren in dem kanonischen Koordinatensystem als [cx, cy, n] = PointsOnCVC(C.a, C.b, C.c, C.d, cSpc). Das Kurvennachbearbeitungssystem berechnet vorab Werte zur Verwendung bei der Drehung und Skalierung von dem kanonischen Koordinatensystem in das ursprüngliche Koordinatensystem als scC = C.S × cos(C.R) und scS = C.S × sin(C.R). Das Kurvennachbearbeitungssystem weist die Feldanordnungen zu, die die Liste von Punkten vorhalten, die als x = allocate(n) und y = allocate(n) ausgegeben werden sollen. Das Kurvennachbearbeitungssystem führt sodann die variable y-Skalierung (Skalierung) über die vorbeschriebene Funktion aus, wobei gilt: [xs, ys] = VariableYScale(cx(i), cy(i), C.B, C.B.YS0, C.B.YS1). Das Kurvennachbearbeitungssystem führt die Umwandlung von dem kanonischen Koordinatensystem in das ursprüngliche Punktkoordinatensystem als x(i) = C.tx + scC × xs – scS × ys und y(i) = C.ty + scS × xs + scC × ys aus.
-
Als Nächstes kann das Kurvennachbearbeitungssystem eine einzelne Bézier-Kurve oder mehrere Bézier-Kurven an eine oder mehrere CVC-Kurven anpassen. Aus Gründen der Kürze wird im Folgenden das Anpassen von Bézier-Kurven an die Punkte einer CVC-Kurve beschrieben, wobei das Anpassen von Bézier-Kurven an zusätzliche CVC-Kurven hieraus extrapoliert werden kann. Es sollte daher einsichtig sein, dass unabhängig davon, woher die Punkte stammen, Ausführungsformen des Kurvennachbearbeitungssystems der vorliegenden Beschreibung ein beliebiges Verfahren zum Durchführen der Kurvenanpassung einsetzen können.
-
Bei einer oder mehreren Ausführungsformen verwendet das Kurvennachbearbeitungssystem zur Durchführung einer kubischen Bézier-Kurvenanpassung eine Funktion, die als Eingabe eine Feldanordnung von x- und y-Koordinaten entsprechend einer Abfolge von Punkten und Tangentenwinkeln für den ersten und letzten Punkt nimmt und als Ausgabe die acht Koeffizienten einer kubischen Bézier-Kurve herstellt. Die acht Koeffizienten einer kubischen Bézier-Kurve sollen möglichst gut zu den ersten und letzten Punkten zusammen mit einem Fehlerterm, der den Maximalabstand von einem Eingabepunkt zu der berechneten kubischen Bézier-Kurve angibt, passen.
-
Bei einer oder mehreren Ausführungsformen ist die Nennform dieser Funktion gleich [P1, P2, maxError] = FitCubicBezier(x, y, n, a0, a1), wobei die Eingaben x und y Koordinaten der anzupassenden n Punkte angeben und die Eingaben a0 und a1 die benötigten Tangentenwinkel am ersten beziehungsweise letzten Punkt angeben. Wie vorstehend beschrieben worden ist, weist eine kubische Bézier-Kurve vier Steuer- bzw. Regelpunkte auf, die jeweils eine x- und eine y-Koordinate aufweisen, die üblicherweise mit P0, P1, P2 und P3 bezeichnet werden. Der erste Steuer- bzw. Regelpunkt P0 passt im Allgemeinen zu dem ersten Punkt in der x- und y-Koordinateliste (das heißt P0 = (x(1), y(1)) und wird im Allgemeinen nicht ausgegeben. Auf gleiche Weise soll der letzte Steuer- bzw. Regelpunkt P3 gleich der Position des letzten Punktes in der Liste sein (das heißt p3 = (x(n), y(n))) und ebenfalls nicht ausgegeben werden. Als solches muss die Anpassungsroutine nur die mittleren beiden Steuer- bzw. Regelpunkte P1 und P2 ausgeben.
-
Wie vorstehend erwähnt worden ist, kann bei einigen Ausführungsformen das Kurvennachbearbeitungssystem eine einzelne kubische Bézier-Kurve an die Punkte einer jeden skalierten CVC-Kurve anpassen. Bei diesen Ausführungsformen ruft das Kurvennachbearbeitungssystem die vorgenannte Kurvenanpassungsfunktion für diejenigen Punkte auf, die aus jeder einzelnen skalierten CVC-Kurve bezogen werden.
-
Das Kurvennachbearbeitungssystem ermittelt die benötigten Winkel und Krümmungen aus dem quadratischen Kurvensystem, so beispielsweise aus den quadratischen Kappa-Kurven (oder „QKC”), wie vorstehend beschrieben worden ist. Das Kurvennachbearbeitungssystem erzeugt die CVC-Parameter, wie vorstehend beschrieben worden ist. Das Kurvennachbearbeitungssystem weist eine Feldanordnung Z zu, die die Steuer- bzw. Regelpunkte für die kubische Bézier-Kurve als Z = allocatePoints(3 × (N – 1) + 1) vorhalten soll. Das Kurvennachbearbeitungssystem setzt den ersten Bézier-Steuer- bzw. Regelpunkt auf den ersten Nutzersteuer- bzw. Regelpunkt P als Z(1) = P(1).
-
Sodann berechnet das Kurvennachbearbeitungssystem aufeinanderfolgende Bézier-Steuer- bzw. Regelpunkte für jede der CVC-Kurven. Insbesondere wandelt das Kurvennachbearbeitungssystem die CVC-Kurve in einen Satz von eng abgetasteten Punkten um. Das Kurvennachbearbeitungssystem passt eine einzelne kubische Bézier-Kurve an jene Punkte an. Man beachte, dass die Kommunikationssitzung eine G1-Kontinuität zwischen Bézier-Kurven unter Verwendung desselben Winkels am Ende einer Kurve und am Anfang der nachfolgenden Kurve durchsetzen kann. Das Kurvennachbearbeitungssystem überträgt die inneren Steuer- bzw. Regelpunkte P1 und P2 auf die Feldanordnung Z als Z((i – 1) × 3 + 2) = P1 und Z((i – 1) × 3 + 3) = P2. Das Kurvennachbearbeitungssystem kopiert den Nutzersteuer- bzw. Regelpunkt zwischen Kurven auf die Feldanordnung Z als Z((i – 1) × 3 + 4) = P(i + 1).
-
Wie vorstehend ausgeführt worden ist, kann das Kurvennachbearbeitungssystem bei einigen Ausführungsformen eine einzelne kubische Bézier-Kurve an die Punkte aus jeder skalierten CVC-Kurve vor dem nichtgleichmäßigen Skalieren und/oder Herabskalieren anpassen. Bei den vorbeschriebenen Ausführungsformen wendet das Kurvennachbearbeitungssystem die nichtgleichmäßige variable y-Skalierung auf die Punkte auf der CVC-Kurve vor dem Anpassen der Bézier-Kurve an. Bei den nunmehr beschriebenen Ausführungsformen ist die Reihenfolge der Betriebsvorgänge umgestellt. Das Kurvennachbearbeitungssystem passt die Bézier-Kurve nämlich an die Punkte auf einer nichtskalierten CVC-Kurve vor dem Anwenden der nichtgleichmäßigen variablen y-Skalierung an.
-
In der Praxis hat dieses Verfahren einige Vorteile gegenüber den vorbeschriebenen Ausführungsformen. Ein Vorteil besteht beispielsweise darin, dass das Bézier-Kurvenanpassen bei normalen CVC-Kurven im Allgemeinen besser arbeitet. Das Bézier-Kurvenanpassen ist beispielsweise ein iterativer Prozess, der für die normalen CVC-Kurven schneller und genauer konvergiert. Als weiteres Beispiel kann in einigen Fällen das Kurvenanpassungssystem ein etwas besseres Aussehen erreichen, wenn eine Bézier-Kurve die Anpassung an die normale CVC-Kurve vor der nichtgleichmäßigen Skalierung und Herabskalierung optimiert.
-
Ein Nachteil besteht jedoch darin, dass die Punkte nach der Bézier-Kurvenanpassung skaliert und herabskaliert werden, wobei die Punkte dann keine Bézier-Kurve mehr bilden. Tritt dies auf, so muss das Kurvennachbearbeitungssystem eine weitere Runde einer Bézier-Kurvenanpassung durchführen. Diese zusätzliche Runde eliminiert wahrscheinlich den vorbeschriebenen ersten Vorteil.
-
Als eine Maßnahme gegen diesen Nachteil kann das Kurvennachbearbeitungssystem den Betriebsvorgang der nichtgleichmäßigen Skalierung und Herabskalierung bei der Bézier-Kurve anwenden, um die CVC-Kurve anzupassen, indem einfach die Steuer- bzw. Regelpunkte der Bézier-Kurve modifiziert werden. In einigen Fällen liefert dies dasselbe Ergebnis, als wenn die x-Koordinaten der mittleren Steuer- bzw. Regelpunkte (beispielsweise P1 und P2 (nicht die Endsteuer- bzw. Regelpunkte P0 und P3)) gleich 1/3 und 2/3 in dem kanonischen Koordinatensystem sind.
-
In anderen Fällen ist die Kurve nicht die gleiche, wobei jedoch das visuelle Aussehen weiterhin die gewünschten Eigenschaften eines runden und ansehnlichen Aussehens beibehält, da die Anfangs- und Endtangenten korrekt sind, die Krümmungen annähernd korrekt sind und die endgültige Bézier-Kurve weiterhin der Form der nachbearbeiteten CVC-Kurve folgt. Dies wird dadurch implementiert, dass das Kurvennachbearbeitungssystem die Punkte auf der normalen CVC-Kurve ermittelt (Man beachte, dass die Punkte in dem kanonischen Koordinatensystem sind). Das Kurvennachbearbeitungssystem passt eine kubische Bézier-Kurve an diese Punkte an, wobei aufgrund dessen, dass die Eingabepunkte in dem kanonischen Koordinatensystem sind, die beiden Steuer- bzw. Regelpunkte, die ausgegeben werden, also Q1 und Q2, ebenfalls in dem kanonischen Koordinatensystem sind.
-
Das Kurvennachbearbeitungssystem wendet die y-Skalierungsfaktoren, die typischerweise die nichtgleichmäßige variable y-Skalierung einsetzen, auf die Steuer- bzw. Regelpunkte selbst an, wobei Q1.y = Q1.Y × C.YS0 und Q2.y = Q2.y × C.YS1 gilt. Nach dieser Anpassung an die y-Koordinaten der Bézier-Steuer- bzw. Regelpunkte weisen ihre Tangentenwinkel dieselben Werte auf, die von der nachbearbeiteten Kurve benötigt werden, und es ist die Endpunktkrümmung annähernd korrekt.
-
Das Kurvennachbearbeitungssystem wandelt die Steuer- bzw. Regelpunkte Q1 und Q2, die in kanonischen Koordinaten vorliegen, in Steuer- bzw. Regelpunkte P1 und P2 in den ursprünglichen Koordinaten folgendermaßen um: P1.x = C.tx + C.S × cos(C.R) × 01.x – C.S × sin(C.R) × Q1.y; P1.y = C.ty + C.S × sin(C.R) × Q1.x + C.S × cos(C.R) × Q1.y; .x = C.tx + C.S × cos(C.R) × Q2.x – C.S × sin(C.R) × Q2.y; und P2.y = C.ty + C.S × sin(C.R) × Q2.x + C.S × cos(C.R) × Q2.
-
Wie vorstehend beschrieben worden ist, kann das Kurvennachbearbeitungssystem bei einigen Ausführungsformen mehrere kubische Bézier-Kurven an eine einzelne CVC-Kurve anpassen. Insbesondere sind vorstehend Ausführungsformen beschrieben worden, die ein Anpassen von mehreren kubischen Bézier-Kurven an die Punkte aus einer einzelnen CVC-Kurve implizieren. Bei diesen Ausführungsformen kann das Kurvennachbearbeitungssystem einen maximal zulässigen Fehler zwischen den Bézier-Kurven und den ursprünglichen Endpunkten spezifizieren. In diesem Fall ermittelt das Kurvennachbearbeitungssystem eine minimale Anzahl von Bézier-Kurven und/oder Punkten aus jeder CVC-Kurve derart, dass der Maximalfehler aus jeder Kurve zu den zugehörigen Punkten kleiner als die Fehlertoleranz ist.
-
Es sollte einsichtig sein, dass das vorstehend Beschriebene leicht modifiziert werden kann, um das Ziel zu erreichen. Das Kurvennachbearbeitungssystem kann beispielsweise versuchen, die Punkte anzupassen. Ist der ausgegebene Fehler zu groß, so kann das Kurvennachbearbeitungssystem den Satz von Punkten in etwa hälftig unterteilen und sodann versuchen, eine Bézier-Kurve an jede Hälfte anzupassen. Scheitert der Versuch, die Kurve erneut anzupassen, um den benötigten Fehler herzustellen, so kann das Kurvennachbearbeitungssystem den nichtpassenden Satz von Punkten erneut hälftig unterteilen. Das Kurvennachbearbeitungssystem kann diese Prozedur rekursiv wiederholen, bis die sich ergebenden Sätze von Punkten ausreichend klein sind, damit sie genau zu dem benötigten Fehler passen. Man beachte, dass, wenn die Anzahl von Punkten gleich 4 oder weniger ist, eine einzelne Bézier-Kurve genau an die Punkte angepasst werden kann.
-
Bei einer oder mehreren Ausführungsformen benötigt die Kurvenanpassungsfunktion einen Winkel, der an jedem Endpunkt bereitgestellt werden muss. Das Kurvennachbearbeitungssystem versucht, eine Abfolge von Punkten mit Indizes beispielsweise von J bis K anzupassen. Ist J ungleich 1, so stellt das Kurvennachbearbeitungssystem einen Winkel für den ersten Punkt bereit. Ist K ungleich n, so stellt das Kurvennachbearbeitungssystem einen Winkel für den letzten Punkt bereit. Diese Winkel können jedoch aus dem Krümmungspolynom k(s) = a × s3 + b × s2 + c × s + d hergeleitet werden (Man rufe sich aus dem Vorstehenden ins Gedächtnis, dass die Koeffizienten dieses Polynoms in struct C(i) abgelegt sind). Als solches kann das Kurvennachbearbeitungssystem die Differenz des Winkels einer Kurve zwischen Punkten durch Integrieren der Krümmung nach der Bogenlänge ermitteln. Damit kann das Kurvennachbearbeitungssystem die Differenz des Winkels von dem Referenzpunkt zu einem beliebigen anderen Punkt unter Verwendung von a × s4/4 + b × s3/3 + c × s2/2 + d × s berechnen, wobei s die Bogenlänge zu dem Referenzpunkt ist. Wenn darüber hinaus der Referenzpunkt in der Mitte der Kurve verwendet wird, kann das Kurvennachbearbeitungssystem s aus dem Index J (oder K) als (J – N/2) × spacing/s berechnen. Die Winkel, die durch das Kurvennachbearbeitungssystem (in Radians) ermittelt werden, werden sodann auf die Gesamtkurvendrehung angewendet, um einen Winkel im ursprünglichen Koordinatensystem zu erhalten. Es sollte einsichtig sein, dass auch andere Techniken zum Anpassen von Bézier-Kurven an die CVC-Kurven, die von dem Kurvennachbearbeitungssystem erzeugt werden, angewendet werden können.
-
1A bis 3D, der entsprechende Text und die Beispiele stellen eine Anzahl von verschiedenen Systemen und Vorrichtungen zum Erzeugen von nachbearbeiteten Kurven und Linien entsprechend einer oder mehreren Ausführungsformen bereit. Zusätzlich zum Vorbeschriebenen können ein oder mehrere Ausführungsformen auch anhand von Flussdiagrammen beschrieben werden, die Vorgänge und Schritte eines Verfahrens zum Erreichen eines bestimmten Ergebnisses umfassen. 4 und 5 zeigen Flussdiagramme exemplarischer Verfahren entsprechend einer oder mehreren Ausführungsformen. Die anhand 3 und 4 beschriebenen Verfahren können auch mit weniger oder mehr Schritten/Vorgängen durchgeführt werden, oder es können die Schritte/Vorgänge in anderen Reihenfolgen durchgeführt werden. Zusätzlich können die Schritte/Vorgänge, die hier beschrieben werden, wiederholt oder parallel zueinander oder parallel zu anderen Instanzen derselben oder ähnlicher Schritte/Vorgänge durchgeführt werden.
-
4 zeigt ein Flussdiagramm einer Abfolge von Vorgängen bei einem weiteren Verfahren 400 zum Nachbearbeiten von Kurven entsprechend einer oder mehreren der hier beschriebenen Ausführungsformen. Bei einer oder mehreren Ausführungsformen ist das Verfahren 400 in einer Digitalmediumumgebung zum Empfangen einer Eingabe von einem Nutzer und Erstellen von splinebasierten Designs auf Grundlage der Nutzereingabe implementiert. Des Weiteren kann eine Rechenvorrichtung, so beispielsweise eine Clientvorrichtung 400 oder eine Rechenvorrichtung 600 ein Kurvennachbearbeitungssystem, das das Verfahren 400 implementiert, implementieren.
-
Das Verfahren 400 beinhaltet einen Vorgang 410 des Konstruierens eines Splines durch einen Satz von interpolierten Steuer- bzw. Regelpunkten. Ein Tangentenwinkel und eine Krümmung können an jedem interpolierten Steuer- bzw. Regelpunkt spezifiziert werden. Bei einer oder mehreren Ausführungsformen impliziert der Vorgang 410 ein Berechnen des Tangentenwinkels und der Krümmung für jeden interpolierten Steuer- bzw. Regelpunkt unter Verwendung eines quadratischen k-Kurven-Algorithmus. Insbesondere kann der Vorgang 410 die Verwendung von CVC-Kurvenprimitiven (Cubic Variation of Curvature CVC, kubische Krümmungsvariation) implizieren, um eine CVC-Kurve zwischen jedem benachbarten Paar von Punkten unter Verwendung der gegebenen Krümmung und des gegebenen Winkels zu konstruieren.
-
Wie in 4 gezeigt ist, beinhaltet das Verfahren des Weiteren einen Vorgang 420 des nichtgleichmäßigen Skalierens von Krümmungen und Winkeln zum Erzeugen einer hinaufskalierten CVC-Kurve. Insbesondere kann der Vorgang 420 ein nichtgleichmäßiges Skalieren der Krümmung und des Winkels für jeden interpolierten Steuer- bzw. Regelpunkt um einen nichtgleichmäßigen Skalierungsfaktor zur Erzeugung einer hinaufskalierten CVC-Kurve 202 implizieren. Der Vorgang 420 kann beispielsweise ein nichtgleichmäßiges Skalieren in einer einzelnen Richtung um einen Skalierungsfaktor implizieren. Der Vorgang 420 kann beispielsweise ein Skalieren unter Verwendung einer variablen y-Skalierung beinhalten. Bei verschiedenen Ausführungsformen beruht der Skalierungsfaktor des Weiteren auf einer nichtlinearen Mischfunktion als Funktion von zwei Endpunkten, wobei die nichtlineare Mischfunktion auf einem Ort der Kurve entlang der Horizontalachse eines kanonischen Koordinatensystems und einer Grundlinienlänge beruht.
-
Das Verfahren 400 beinhaltet zudem einen Vorgang 430 des Identifizierens von Endpunktrandbedingungen aus der hinaufskalierten CVC-Kurve. Bei einigen Ausführungsformen beinhalten die Endpunktrandbedingungen aus der hinaufskalierten CVC-Kurve eine Anfangsrichtung, eine Endrichtung, eine Anfangskrümmung und eine Endkrümmung. Bei einer oder mehreren Ausführungsformen können die Endpunktrandbedingungen einem Winkel und einer Krümmung eines entsprechenden Schmiegekreises entsprechen. Des Weiteren sind bei zusätzlichen Ausführungsformen die Endpunktrandbedingungen aus den mehreren CVC-Kurven derart krümmungskontinuierlich, dass Tangentenwinkel und Krümmungen von Kurvenprimitiven beginnend an Endpunkten der mehreren CVC-Kurven an einem Zusammenfügepunkt zwischen den mehreren CVC-Kurven zusammenpassen.
-
Zusätzlich beinhaltet das Verfahren 400 einen Vorgang 440 des Herabskalierens der hinaufskalierten CVC-Kurve, wobei die Endpunktrandbedingungen beibehalten werden. Insbesondere kann der Vorgang 460 ein Herabskalieren der hinaufskalierten CVC-Kurve unter Verwendung eines Herabskalierungsfaktors, der invers proportional zu dem nichtgleichmäßigen Skalierungsfaktor ist, und ein Beibehalten der Endpunktrandbedingungen beinhalten. Bei einigen zusätzlichen Ausführungsformen beinhaltet der Vorgang 440 des Herabskalierens ein Skalieren der hinaufskalierten CVC-Kurve um einen inversen variablen y-Skalierungsfaktor.
-
Das Verfahren 400 beinhaltet zudem einen Vorgang 450 des Erstellens von Kurvenprimitiven in dem Spline. Der Vorgang 450 kann beispielsweise ein Erstellen der herabskalierten Bézier-Kurvenprimitive als nachbearbeitete Kurve 204 beinhalten. Zusätzlich kann das Verfahren 400 das Anpassen einer Bézier-Kurve an die herabskalierte CVC-Kurve und das Erstellen der angepassten Bézier-Kurve beinhalten. Alternativ kann der Vorgang 450 ein Anpassen einer Bézier-Kurve an die hinaufskalierte CVC-Kurve vor dem Herabskalieren der hinaufskalierten CVC-Kurve implizieren.
-
Als weiteres Beispiel kann das Verfahren 400 einen weiteren Vorgang des Transformierens der Kurve in ein kanonisches Koordinatensystem durch Verschieben, Drehen und Skalieren der Kurve beinhalten. Beinhalten kann das Verfahren 400 bei einigen Ausführungsformen einen Vorgang des Identifizierens einer Bogenlänge der Kurve, des Berechnens eines Radius eines tangentialen Schmiegekreises benachbart zu einem Endpunkt von den Endpunkten der Kurve, eines Bestimmens, dass der Radius des tangentialen Schmiegekreises kleiner als ein Sechstel der Bogenlänge der Kurve ist, und ein auf der Bestimmung basierendes nichtgleichmäßiges Skalieren.
-
5 zeigt ein Flussdiagramm einer Abfolge von Vorgängen bei einem Verfahren 500 der Nachbearbeitung von Kurven entsprechend einer oder mehreren der hier beschriebenen Ausführungsformen. Bei einer oder mehreren Ausführungsformen ist das Verfahren 500 in einer Digitalmediumumgebung zum Empfangen einer Eingabe von einem Nutzer und Erstellen von kurvenbasierten Designs auf Grundlage der Nutzereingabe implementiert. Des Weiteren kann eine Rechenvorrichtung, so beispielsweise eine Clientvorrichtung 400 oder eine Rechenvorrichtung 600, ein Kurvennachbearbeitungssystem, das das Verfahren 500 implementiert, implementieren.
-
Das Verfahren 500 beinhaltet einen Vorgang 510 des Detektierens eines Splines. Insbesondere kann der Vorgang 510 das Detektieren einer Nutzereingabe implizieren, die wenigstens einen Abschnitt eines Splines mit einer oder mehreren Kurvenprimitiven definiert. Der Vorgang 510 des Detektierens einer Nutzereingabe kann beispielsweise ein Detektieren eines Striches auf einer berührungsempfindlichen Vorrichtung, so beispielsweise einem Stylus-Pad oder Touchscreen, implizieren. Bei einer oder mehreren Ausführungsformen kann der Vorgang 510 des Detektierens einer Nutzereingabe das Detektieren einer nutzerseitig bereitgestellten Eingabe von einem ersten Endpunkt zu einem zweiten Endpunkt implizieren.
-
Das Verfahren 500 beinhaltet des Weiteren einen Vorgang 520 des nichtgleichmäßigen Skalierens einer Kurve in dem Spline. Insbesondere kann der Vorgang 520 eine nichtgleichmäßige Skalierung einer Kurvenprimitive in einer einzelnen Richtung implizieren. Bei einigen Ausführungsformen impliziert der Vorgang 520 ein nichtgleichmäßiges Skalieren der Kurve in der einzelnen Richtung auf Grundlage eines vertikalen Wertes der Kurve entlang der Horizontalachse. Der Vorgang 520 kann beispielsweise das nichtgleichmäßige Skalieren der Kurve unter Verwendung einer variablen y-Skalierung beinhalten. Des Weiteren kann bei verschiedenen Ausführungsformen das nichtgleichmäßige Skalieren in einem kanonischen Koordinatensystem erfolgen.
-
Das Verfahren 500 beinhaltet zudem einen Vorgang 530 des Identifizierens von Endpunktrandbedingungen. Insbesondere kann der Vorgang 530 ein Identifizieren von Endpunktrandbedingungen aus der nichtgleichmäßig skalierten Kurve 202 beinhalten. Bei verschiedenen Ausführungsformen kann der Vorgang 530 zudem das Einsetzen von Schmiegekreisen implizieren, die jedem Endpunkt zugeordnet sind, um die Endpunktrandbedingungen zu identifizieren.
-
Darüber hinaus beinhaltet das Verfahren 500 einen Vorgang 540 des Berechnens von mehreren Kurven mit kubischer Krümmungsvariation. Insbesondere kann der Vorgang 540 das Berechnen von mehreren CVC-Kurven (Cubic Variation of Curvature CVC, kubische Variationskrümmung) 210 entsprechend den Endpunktrandbedingungen implizieren. Bei einer oder mehreren Ausführungsformen kann das Verfahren zudem einen Vorgang des Bestimmens einer Bogenlänge für die Kurve 200 in Bezug auf einen Referenzpunkt beinhalten, wobei das Berechnen der mehreren CVC-Kurven 210 das Berechnen der mehreren CVC-Kurven auf Grundlage der Bogenlänge für die Kurve beinhalten kann.
-
Das Verfahren 500 beinhaltet des Weiteren einen Vorgang 550 des Herabskalierens der mehreren CVC-Kurven, um eine nachbearbeitete Kurve in dem Spline zu erzeugen. Insbesondere kann der Vorgang 550 ein Herabskalieren der mehreren CVC-Kurven und ein dabei erfolgendes Beibehalten der Endpunktrandbedingungen implizieren, um eine nachbearbeitete Kurve 204 zu erzeugen. Bei einigen zusätzlichem Ausführungsformen impliziert der Vorgang 550 des Herabskalierens der nichtgleichmäßig skalierten Kurve 202 das Herabskalieren der nichtgleichmäßig skalierten Kurve 202 invers proportional zur Skalierung der nichtgleichmäßig skalierten Kurve 202.
-
Das Verfahren 500 kann auch zusätzliche Vorgänge beinhalten. Das Verfahren 500 kann beispielsweise einen Vorgang des Verschiebens der Kurve beinhalten. Bei einigen Ausführungsformen beinhaltet das Verschieben der Kurve ein Anordnen eines Anfangspunktes der Kurve am Ursprung eines kanonischen Koordinatensystems, ein Drehen der Kurve mit dem kanonischen Koordinatensystem derart, dass die Kurve horizontal zu einer Horizontalachse des kanonischen Koordinatensystems ist, und ein Skalieren der Kurve innerhalb des kanonischen Koordinatensystems derart, dass ein Endpunkt der Kurve eine erste Einheit entlang der Horizontalachse des kanonischen Koordinatensystems ist.
-
Bei einem weiteren Beispiel kann das Verfahren 500 einen weiteren Vorgang des Anpassens einer einzelnen Bézier-Kurve an die nachbearbeitete Kurve beinhalten. In einigen Fällen wird die einzelne Bézier-Kurve an die nachbearbeitete Kurve angepasst, ohne dass die Krümmung der Bézier-Kurve genau zu den Endpunkten der nachbearbeiteten Kurve passen müsste. Dieser zusätzliche Vorgang kann des Weiteren ein Anpassen einer einzelnen Bézier-Kurve an die mehreren CVC-Kurven implizieren. In einigen Fällen weisen die Kurvenformen einen Satz von interpolierten Steuer- bzw. Regelpunkten auf, wobei eine Tangente und eine Krümmung für jeden Punkt in dem Satz von interpolierten Steuer- bzw. Regelpunkten spezifiziert sind und wobei das Berechnen der mehreren CVC-Kurven ein Verwenden von Kurvenprimitiven der Kurve beinhaltet, um jede der mehreren CVC-Kurven zwischen dem Satz von interpolierten Steuer- bzw. Regelpunkten zu konstruieren.
-
6 zeigt ein exemplarisches schematisches Diagramm der Architektur eines Kurvennachbearbeitungssystems 602 entsprechend einer oder mehreren Ausführungsformen. Ein Rechensystem 600 kann, wie gezeigt ist, das Kurvennachbearbeitungssystem 602 implementieren. Die Rechenvorrichtung 600 kann eine Vielzahl von Rechenvorrichtungen beinhalten. Die Rechenvorrichtung 600 kann beispielsweise eine Mobilvorrichtung (beispielsweise ein Mobiltelefon, ein Smartphone, ein PDA, ein Tablet, ein Laptop, eine Kamera, ein Tracker, eine Armbanduhr, eine tragbare Vorrichtung und dergleichen mehr) sein. Bei einigen Ausführungsformen kann die Rechenvorrichtung 600 auch eine nichtmobile Vorrichtung (beispielsweise ein Desktopcomputer oder ein anderer Typ von Clientvorrichtung) sein. Zusätzliche Details hinsichtlich der Rechenvorrichtung 600 werden nachstehend anhand 6 beschrieben.
-
Wie in 6 gezeigt ist, kann das Kurvennachbearbeitungssystem 602 verschiedene Komponenten zum Durchführen der hier beschriebenen Prozesse und Merkmale beinhalten. Bei der in 6 gezeigten Ausführungsform beinhaltet das Kurvennachbearbeitungssystem 602 beispielsweise einen Eingabedetektor 604, einen Kurventransformator 606, einen nichtgleichmäßigen Skalierer 608, einen CVC-Kurvengenerator 610, einen Kurvenherabskalierer 612 sowie einen Bézier-Kurvenanpasser 614.
-
Die Komponenten 604 bis 514 bzw. 614 des Kurvennachbearbeitungssystems 602 können Software, Hardware oder beides beinhalten. Die Komponenten 604 bis 514 bzw. 614 können eine oder mehrere Anweisungen umfassen, die auf einem computerlesbaren Speichermedium gespeichert sind und durch Prozessoren einer oder mehrerer Rechenvorrichtungen, so beispielsweise einer Clientvorrichtung oder einer Servervorrichtung, ausführbar sind. Bei Ausführung durch den einen oder die mehreren Prozessoren können die computerausführbaren Anweisungen des Kurvennachbearbeitungssystems 602 veranlassen, dass die Rechenvorrichtung/die Rechenvorrichtungen Merkmalslernmethoden, die hier beschrieben werden, durchführt/durchführen. Alternativ können die Komponenten 604 bis 514 bzw. 614 Hardware beinhalten, so beispielsweise eine Spezialzweckverarbeitungsvorrichtung, um eine bestimmte Funktion oder Gruppe von Funktionen wahrzunehmen. Alternativ können die Komponenten 604 bis 514 bzw. 614 des Kurvennachbearbeitungssystems 602 eine Kombination von computerausführbaren Anweisungen und Hardware umfassen.
-
Wie vorstehend beschrieben worden ist, beinhaltet das Kurvennachbearbeitungssystem 602 einen Eingabedetektor 604. Bei einer oder mehreren Ausführungsformen kann der Eingabedetektor 604 eine Nutzereingabe auf geeignete Weise detektieren, empfangen und/oder erleichtern. Bei einigen Beispielen detektiert der Eingabedetektor 604 ein oder mehrere Nutzerinteraktionen in Bezug auf die Nutzerschnittstelle. Wie hier beschrieben wird, bezeichnet eine „Nutzerinteraktion” eine einzelne Interaktion oder eine Kombination von Interaktionen, die von einem Nutzer durch eine oder mehrere Eingabevorrichtungen empfangen wird.
-
Der Eingabedetektor 604 kann beispielsweise eine Nutzerinteraktion von einer Maus, einem Touchpad, einem Touchscreen, einem Stift (Stylus) und/oder einer beliebigen anderen Eingabevorrichtung empfangen. Für den Fall, dass die Clientvorrichtung 600 einen Touchscreen beinhaltet, kann der Eingabedetektor 604 eine oder mehrere Berührungsgesten (beispielsweise Wischgesten (swipe gestures), Antippgesten (tap gestures), Fingerzusammenführungsgesten (pinch gestures) oder Fingerauseinanderführungsgesten (reverse pinch gestures)) oder Striche von einem Nutzer detektieren, der eine Nutzerinteraktion durchführt. Bei einigen Beispielen stellt ein Nutzer die Berührungsgesten im Zusammenhang mit und/oder mit Blick auf ein oder mehrere grafische Objekte oder grafische Elemente einer Nutzerschnittstelle bereit.
-
Das Kurvennachbearbeitungssystem 602 nimmt eine oder mehrere Funktionen in Reaktion darauf wahr, dass der Eingabedetektor 604 eine Nutzereingabe detektiert und/oder andere Daten empfängt. Allgemein kann ein Nutzer eine nachbearbeitete Kurve dadurch erstellen, dass ein oder mehrere Nutzereingaben, die für das Kurvennachbearbeitungssystem 602 bereitgestellt werden, bereitgestellt werden. In Reaktion darauf, dass der Eingabedetektor 604 eine Nutzereingabe, so beispielsweise eine Eingabe zum Definieren einer Kurve, empfängt, erstellen eine oder mehrere Komponenten des Kurvennachbearbeitungssystems 602 beispielsweise eine nachbearbeitete Kurve.
-
Der Eingabedetektor 604 empfängt eine Nutzereingabe, so beispielsweise einen Strich. Ein Strich kann eine Kurve definieren, die einen Spline bildet. Im Sinne des Vorliegenden bezeichnet der Begriff „Strich” wenigstens einen Abschnitt eines Splines mit einer oder mehreren Kurven. Ein Strich kann beispielsweise einen gesamten Spline umfassen, der durch einen Anfangspunkt, an dem der Nutzer die Eingabevorrichtung ansetzt, einen Endpunkt, an dem der Nutzer die Eingabevorrichtung abhebt, und einen Weg zwischen dem Anfangspunkt und dem Endpunkt definiert ist. Alternativ kann ein Strich nur einen Abschnitt eines Splines umfassen, der durch einen Anfangspunkt, an dem der Nutzer eine Eingabevorrichtung ansetzt, einen Endpunkt, an dem der Nutzer die Eingabevorrichtung abhebt, und einen Weg zwischen dem Anfangspunkt und dem Endpunkt definiert ist.
-
Das Kurvennachbearbeitungssystem 602 beinhaltet zudem einen Kurventransformator 606. Allgemein transformiert der Kurventransformator 606 eine Eingabekurve oder einen Spline von einem ursprünglichen Koordinatensystem in ein kanonisches Koordinatensystem. Als Teil des Transformationsprozesses positioniert und dreht der Kurventransformator 606 die Eingabekurve innerhalb des kanonischen Koordinatensystems. Zusätzlich passt der Kurventransformator 606 die Eingabekurve innerhalb des kanonischen Koordinatensystems an. Wie beschrieben worden ist, kann der Kurventransformator 606 eine Kurve in ein angepasstes kanonisches Koordinatensystem für jede Eingabekurve oder einen Abschnitt eines Eingabesplines verschieben.
-
Wie bereits erwähnt worden ist, positioniert und dreht der Kurventransformator 606 die Eingabekurve innerhalb eines kanonischen Koordinatensystems als Teil des Transformationsprozesses. Insbesondere bewegt die Kurve bzw. der Kurventransformator die Eingabekurve in ein kanonisches Koordinatensystem und positioniert den Anfangspunkt (beispielsweise den ersten Endpunkt) der Kurve am Ursprung (das heißt bei (0, 0)) des kanonischen Koordinatensystems. Des Weiteren dreht der Kurventransformator 606 die Eingabekurve horizontal derart, dass ein Endpunkt der Kurve auf der x-Achse des kanonischen Koordinatensystems liegt.
-
Zudem passt der Kurventransformator 606 die eingegebene Kurve innerhalb des kanonischen Koordinatensystems an oder skaliert diese. Ist der Endpunkt auf der x-Achse (oder y-Achse), so passt der Kurventransformator 606 den letzten Endpunkt (beispielsweise den zweiten Endpunkt) der Kurve an die erste Koordinate der x-Achse (oder y-Achse) beispielsweise bei x = 1 an. Mit anderen Worten, der Kurventransformator 606 passt die Kurve derart an, dass diese am Ursprung (0, 0) beginnt und an der ersten Koordinate (1, 0) endet. Der Kurventransformator 606 kann die Größe der Eingabekurve derart ändern, dass diese zur ersten Koordinate des kanonischen Koordinatensystems passt, oder kann die Größe des kanonischen Koordinatensystems derart ändern, dass dieses zu der Eingabekurve passt. Beim Anpassen der Eingabekurve ändert der Kurventransformator 606 des Weiteren die Eingabekurve derart gleichmäßig, dass die Eingabekurve in alle Richtungen gleichermaßen wächst oder schrumpft.
-
Wie erläutert worden ist, beinhaltet das Kurvennachbearbeitungssystem 602 einen nichtgleichmäßigen Skalierer 608. Ist die Kurve angepasst und innerhalb des kanonischen Koordinatensystems positioniert, so wendet der nichtgleichmäßige Skalierer 608 einen Skalierungsfaktor auf die Kurve an. Der nichtgleichmäßige Skalierer 608 skaliert die Kurve in einer einzelnen Richtung nichtgleichmäßig. Allgemein skaliert der nichtgleichmäßige Skalierer 608 die Kurve senkrecht zur Achse des kanonischen Koordinatensystems, an der die Kurve beginnt und endet. Beginnt und endet die Kurve beispielsweise auf der x-Achse, so skaliert der nichtgleichmäßige Skalierer 608 die Kurve in y-Richtung.
-
Bei einer oder mehreren Ausführungsformen skaliert der nichtgleichmäßige Skalierer 608 die Kurve auf Grundlage eines Skalierungsfaktors s. Insbesondere kann das Kurvennachbearbeitungssystem einen Punkt (x, y) nichtgleichmäßig in einer Kurve skalieren, indem nur die y-Koordinate skaliert wird, sodass der sich ergebende Punkt gleich (x, s × y) für einen Skalierungsfaktor von s < 1 ist. Bei einigen Ausführungsformen ist der Skalierungsfaktor ein variabler Skalierungsfaktor und hängt von der x-Koordinate ab. Mit anderen Worten, das Kurvennachbearbeitungssystem kann einen anderen Skalierungsfaktor für jede Kurvenprimitive und/oder jeden Punkt in einer Kurve anwenden.
-
Der CVC-Kurvengenerator 610 erzeugt allgemein CVC-Kurven auf Grundlage der nichtgleichmäßig skalierten Kurve. Insbesondere erzeugt der CVC-Kurvengenerator 610 CVC-Kurven und Endpunktrandbedingungen auf Grundlage der nichtgleichmäßig skalierten Kurve, die Bedingungen bereitstellen, die wiederum ermöglichen, dass das Kurvennachbearbeitungssystem 602 nachbearbeitete Kurven und Linien erzeugt.
-
Bei einer oder mehreren Ausführungsformen verwendet der CVC-Kurvengenerator 610 Schmiegekreise zur Berechnung von Endpunktrandbedingungen für die CVC-Kurven. Wie vorstehend beschrieben worden ist, kann ein Schmiegekreis nichtgleichmäßig entlang der Kurve in einer einzelnen Richtung skaliert sein, um eine nichtgleichmäßig skalierte Ellipse zu bilden und den nachbearbeiteten Winkel und die nachbearbeitete Krümmung der nachbearbeiteten Kurven zu erhalten. Der CVC-Kurvengenerator 610 kann die nichtgleichmäßig skalierte Ellipse zurück in einen gestreckten Schmiegekreis strecken oder abrunden und dabei den nachbearbeiteten Winkel und die Krümmung der nachbearbeiteten Kurven beibehalten. Als solches kann der gestreckte Schmiegekreis die ähnlichen Parameter als gewünschte Endpunktrandbedingungen gemeinsam nutzen, darunter einen Anfangspunkt (oder Endpunkt), die Richtung und die Krümmung.
-
Der Kurvenherabskalierer 612 nimmt ein Herabskalieren der nichtgleichmäßig skalierten Kurve vor. Der Kurvenherabskalierer 612 wendet einen invertierten Skalierungsfaktor auf die nichtgleichmäßig skalierte Kurve an. Des Weiteren behält der Kurvenherabskalierer 612 beim nichtgleichmäßigen Herabskalieren der skalierten Kurve die Endpunktrandbedingungen von den CVC-Kurven bei. Auf diese Weise erzeugt der Kurvenherabskalierer 612 eine nachbearbeitete Kurve mit den nachbearbeiteten Kurven.
-
Bei einigen Ausführungsformen berechnet der Kurvenherabskalierer 612 einen invertierten Skalierungsfaktor, der invers proportional zu demjenigen Skalierungsfaktor ist, der zur nichtgleichmäßigen Skalierung der Kurve verwendet wird. Ist beispielsweise der Skalierungsfaktor gleich YS0 und YS1, so ist der invertierte Skalierungsfaktor gleich 1/YS0 und 1/YS1. Als solches kann der invertierte Skalierungsfaktor auch auf Grundlage der x-Koordinate, wie vorstehend beschrieben worden ist, variabel sein.
-
Bei einer oder mehreren Ausführungsformen nimmt der Kurvenherabskalierer 612, wenn gestreckte Schmiegekreise verwendet werden, ein Herabskalieren der gestreckten Schmiegekreise vor. Der Kurvenherabskalierer 612 wendet beispielsweise jeweils einen invertierten Skalierungsfaktor auf die gestreckten Schmiegekreise für die nachbearbeitete Kurve bei (0, 0) und (1, 0) an. Beim Herabskalieren der gestreckten Schmiegekreise behält der Kurvenherabskalierer 612 den nachbearbeiteten Winkel und die nachbearbeitete Krümmung der nachbearbeiteten Kurve bei, da das Herabskalieren des Radius der gestreckten Schmiegekreise den Winkel oder die Krümmung der gestreckten Schmiegekreise nicht ändert. Als solches kann der Kurvenherabskalierer 612 die herabskalierten Schmiegekreise verwenden, um die Endpunktrandbedingungen, die unter Verwendung der CVC-Kurven ausfindig gemacht worden sind, beizubehalten. Insbesondere verwendet der Kurventransformator 606 die herabskalierten Schmiegekreise und den invertierten Skalierungsfaktor, um auf gleiche Weise die nichtgleichmäßig skalierte Kurve in eine nachbearbeitete Kurve herabzuskalieren und dabei die nachbearbeiteten Kurven auf Grundlage der herabskalierten Schmiegekreise beizubehalten.
-
Bei einigen Ausführungsformen retransformiert der Kurventransformator 606, wie vorstehend beschrieben worden ist, die nachbearbeitete Kurve von dem kanonischen Koordinatensystem zurück in das ursprüngliche Koordinatensystem. Der Kurventransformator 606 kann die nachbearbeitete Kurve beispielsweise derart drehen, dass sie zu der ursprünglichen Orientierung der vor der Nachbearbeitung vorhandenen Kurve passt.
-
War die vor der Nachbearbeitung vorhandene Kurve beispielsweise unter einem Winkel von 47° gegeben, so kann der Kurventransformator 606 die nachbearbeitete Kurve um 47° drehen. Des Weiteren kann der Kurventransformator 606 sicherstellen, dass der Anfangspunkt (beispielsweise der erste Endpunkt) und der Endpunkt (beispielsweise der zweite Endpunkt) der nachbearbeiteten Kurve zu dem Anfangspunkt und dem Endpunkt der vor der Nachbearbeitung vorhandenen Kurve in dem ursprünglichen Koordinatensystem passen.
-
Wie in 6 dargestellt ist, beinhaltet das Kurvennachbearbeitungssystem 602 den Bézier-Kurvenanpasser 614. Der Bézier-Kurvenanpasser 614 kann bei einigen Ausführungsformen optional sein. Das Kurvennachbearbeitungssystem erzeugt beispielsweise nachbearbeitete Linien, wobei ein separates System eine Bézier-Kurvenanpassung vornimmt. Alternativ kann das Kurvennachbearbeitungssystem 602 auch direkt eine oder mehrere CVC-Kurven für eine Zeichenapplikation oder ein Erstellungsprogramm bereitstellen. Des Weiteren kann das Kurvennachbearbeitungssystem 602 auch einen anderen Typ von Kurve zur Darstellung einer nachbearbeiteten Kurve verwenden.
-
Wie vorstehend bereits erwähnt und nachstehend noch detailliert beschrieben wird, kann der Bézier-Kurvenanpasser 614 eine einzelne Bézier-Kurve oder mehrere Bézier-Kurven an die CVC-Kurven anpassen. Der Bézier-Kurvenanpasser 614 kann eine oder mehrere Bézier-Kurven an die CVC-Kurven vor oder nach dem Herabskalieren anpassen. Der Bézier-Kurvenanpasser 612 passt beispielsweise eine Bézier-Kurve an die CVC Kurven vorher an, und es nimmt der Kurvenherabskalierer 612 ein Herabskalieren der angepassten Bézier-Kurve vor, um eine nachbearbeitete Bézier-Kurve zu erzeugen. Alternativ passt der Bézier-Kurvenanpasser 614 eine Bézier-Kurve an die nachbearbeiteten CVC-Kurven an, nachdem der Kurvenherabskalierer 612 die CVC-Kurven herabskaliert hat, um eine nachbearbeitete Bézier-Kurve zu erzeugen.
-
Wie vorstehend beschrieben worden ist, sind Bézier-Kurven in der Designindustrie weiter verbreitet als CVC-Kurven. Im Ergebnis lesen und erstellen Designapplikationen oftmals Bézier-Kurven. Im Gegensatz hierzu sind CVC-Kurven nicht derart verbreitet, und es sind viele Designapplikationen nicht in der Lage, CVC-Kurven korrekt zu lesen und zu erstellen. Daher ermöglicht das Anpassen einer Bézier-Kurve an die erzeugte nachbearbeitete Kurve, dass die nachbearbeitete Kurve universell angezeigt werden kann. Auf diese Weise ermöglicht der Bézier-Kurvenanpasser 614, dass eine nachbearbeitete Kurve von durch Zeichen- und Designapplikationen erstellt werden kann.
-
Ausführungsformen der vorliegenden Offenbarung können einen Spezialzweck- oder Allzweckcomputer umfassen oder nutzen, der Computerhardware beinhaltet, so beispielsweise einen oder mehrere Prozessoren und einen Systemspeicher, wie nachstehend detailliert beschrieben wird. Ausführungsformen innerhalb des Umfanges der vorliegenden Offenbarung beinhalten zudem physische und andere computerlesbare Medien zum Tragen oder Speichern von computerlesbaren Anweisungen und/oder Datenstrukturen. Insbesondere können ein oder mehrere der hier beschriebenen Prozesse wenigstens teilweise als Anweisungen implementiert sein, die in einem nichttemporären computerlesbaren Medium verkörpert und von einer oder mehreren Rechenvorrichtungen (beispielsweise einer beliebigen Medieninhaltszugriffsvorrichtung, die hier beschrieben wird) ausführbar sind. Allgemein empfängt ein Prozessor (beispielsweise ein Mikroprozessor) Anweisungen von einem nichttemporären computerlesbaren Medium (beispielsweise einem Speicher und dergleichen) und führt diese Anweisungen aus, wodurch ein oder mehrere Prozesse durchgeführt werden, darunter ein oder mehrere der hier beschriebenen Prozesse.
-
Computerlesbare Medien können beliebige verfügbare Medien sein, auf die von einem Allzweck- oder Spezialzweckcomputersystem zugegriffen werden kann. Computerlesbare Medien, die computerausführbare Anweisungen speichern, sind nichttemporäre computerlesbare Speichermedien (Vorrichtungen). Computerlesbare Medien, die computerausführbare Anweisungen tragen, sind Übertragungsmedien. Beispiels- und nicht beschränkungshalber können Ausführungsformen der Offenbarung wenigstens zwei deutlich voneinander verschiedene Arten von computerlesbaren Medien umfassen, nämlich nichttemporäre computerlesbare Speichermedien (Vorrichtungen) und Übertragungsmedien.
-
Nichttemporäre computerlesbare Speichermedien (Vorrichtungen) beinhalten RAM, ROM, EEPROM, CD-ROM, Solid-State-Laufwerke („SSDs”) (beispielsweise auf Grundlage eines RAM), einen Flash-Speicher, einen Phasenänderungsspeicher („PCM”), andere Typen von Speicher, einen anderen optischen Plattenspeicher, einen magnetischen Plattenspeicher oder andere magnetische Speichervorrichtungen oder ein beliebiges anderes Medium, das zum Speichern von gewünschten Programmcodemitteln in Form von computerausführbaren Anweisungen oder Datenstrukturen verwendet werden kann und auf das von einem Allzweck- oder Spezialzweckcomputer zugegriffen werden kann.
-
Der Begriff „Digitalumgebung” bezeichnet im Sinne des Vorliegenden allgemein eine Umgebung, die beispielsweise als eigenständige Applikation (beispielsweise als Personalcomputer oder mobile Applikation, die auf einer Rechenvorrichtung läuft), als Modul einer Applikation, als Plug-in für eine Applikation, als Bibliotheksfunktion oder Funktionen, die von einem Netzwerkapplikationserstellungssystem aufgerufen werden können, und/oder als Cloudrechensystem implementiert ist. Eine Digitalmediumumgebung ermöglicht, dass Nutzer Zeichnungen und Skizzen, die nachbearbeitete Kurven und/oder Linien beinhalten, erstellen, betrachten und/oder bearbeiten.
-
Ein „Netzwerk” ist als ein oder mehrere Datenlinks definiert, die den Transport von elektronischen Daten zwischen Computersystemen und/oder Modulen und/oder anderen elektronischen Vorrichtungen ermöglichen. Wird Information über ein Netzwerk oder eine andere Kommunikationsverbindung (entweder verdrahtet, drahtlos oder eine Kombination aus verdrahtet oder drahtlos) an einen Computer übertragen oder für diesen bereitgestellt, so betrachtet der Computer die Verbindung korrekterweise als Übertragungsmedium. Übertragungsmedien können ein Netzwerk und/oder Datenlinks beinhalten, die zum Tragen von gewünschten Programmcodemitteln in Form von computerausführbaren Anweisungen oder Datenstrukturen verwendet werden können und auf die von einem Allzweck- oder Spezialzweckcomputer zugegriffen werden kann. Kombinationen des Vorgenannten sollen ebenfalls im Umfang der computerlesbaren Medien beinhaltet sein.
-
Des Weiteren können beim Verwirklichen von verschiedenen Computersystemkomponenten Programmcodemittel in Form von computerausführbaren Anweisungen oder Datenstrukturen automatisch von Übertragungsmedien auf nichttemporäre computerlesbare Speichermedien (Vorrichtungen) (oder umgekehrt) übertragen werden. Computerausführbare Anweisungen oder Datenstrukturen, die über ein Netzwerk oder einen Datenlink empfangen werden, können beispielsweise in einem RAM innerhalb eines Netzwerkschnittstellenmoduls (beispielsweise einem „NIC”) gepuffert und sodann gegebenenfalls an den Computersystem-RAM und/oder an weniger flüchtige Computerspeichermedien (Vorrichtungen) in dem Computersystem übertragen werden. Es sollte daher einsichtig sein, dass nichttemporäre computerlesbare Speichermedien (Vorrichtungen) in Computersystemkomponenten, die ebenfalls (oder sogar primär) Übertragungsmedien nutzen, beinhaltet sein können.
-
Computerausführbare Anweisungen umfassen beispielsweise Anweisungen und Daten, die bei Ausführung in einem Prozessor veranlassen, dass ein Allzweckcomputer, ein Spezialzweckcomputer oder eine Spezialzweckverarbeitungsvorrichtung eine bestimmte Funktion oder eine Gruppe von Funktionen wahrnimmt. Bei derartigen Ausführungsformen werden computerausführbare Anweisungen auf einem Allzweckcomputer ausgeführt, wodurch der Allzweckcomputer in einen Spezialzweckcomputer, der Elemente der Offenbarung implementiert, umgewandelt wird. Die computerausführbaren Anweisungen können beispielsweise binäre Daten, Anweisungen in einem Zwischenformat, so beispielsweise in Maschinensprache, oder sogar Quellcode sein. Obwohl der Erfindungsgegenstand in einer Sprache beschrieben worden ist, die für Strukturmerkmale und/oder methodische Vorgänge spezifisch ist, sollte einsichtig sein, dass der in den beigefügten Ansprüchen definierte Erfindungsgegenstand nicht notwendigerweise auf die beschriebenen Merkmale oder Vorgänge beschränkt ist. Vielmehr sind die vorbeschriebenen Merkmale und Vorgänge als exemplarische Formen der Implementierung der Ansprüche offenbart.
-
Einem Fachmann auf dem einschlägigen Gebiet erschließt sich, dass die Offenbarung in Netzwerkrechenumgebungen mit vielen Arten von Computersystemkonfigurationen umgesetzt werden kann, darunter PCs, Desktopcomputer, Laptopcomputer, Mitteilungsverarbeiter (message processors) portable Vorrichtungen, Multiprozessorensysteme, mikroprozessorbasierte oder programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputer, Mainframecomputer, Mobiltelefone, PDAs, Tablets, Pager, Router, Switches und dergleichen. Die Offenbarung kann zudem in verteilten Systemumgebungen umgesetzt werden, in denen ortsnahe und ortsferne Computersysteme, die miteinander (entweder durch verdrahtete Datenlinks, drahtlose Datenlinks oder eine Kombination aus verdrahteten und drahtlosen Links) über ein Netzwerk verlinkt sind, jeweils Aufgaben ausführen. In einer verteilten Systemumgebung können Programmmodule sowohl in ortsnahen wie auch ortsfernen Ablagespeichervorrichtungen befindlich sein.
-
Ausführungsformen der vorliegenden Offenbarung können auch in Cloudrechenumgebungen implementiert sein. In der vorliegenden Beschreibung ist „Cloudrechnen” als Modell dafür definiert, einen bei Bedarf erfolgenden Netzwerkzugriff auf einen gemeinsam genutzten Vorrat von konfigurierbaren Rechenressourcen zu ermöglichen. Cloudrechnen kann beispielsweise auf einem Marktplatz eingesetzt werden, um einen allgegenwärtigen und bequemen bei Bedarf erfolgenden Zugriff auf den gemeinsam genutzten Vorrat von konfigurierbaren Rechenressourcen anzubieten. Der gemeinsam genutzte Vorrat von konfigurierbaren Rechenressourcen kann schnell über eine Virtualisierung bereitgestellt und mit geringem Verwaltungsaufwand oder Service-Provider-Eingriff freigegeben und sodann geeignet skaliert bzw. angepasst werden.
-
Ein Cloudrechenmodell kann verschiedene Eigenschaften aufweisen, so beispielsweise einen on-Demand-Self-Service, einem breiten Netzwerkzugriff, Resource Pooling, Rapid Elasticity (schnelle Flexibilität), Measured Service und dergleichen mehr. Ein Cloudrechenmodell kann zudem verschiedene Dienstmodelle implizieren, so beispielsweise Software as a Service („SaaS”), Platform as a Service („PaaS”) und Infrastructure as as Service („IaaS”). Ein Cloudrechenmodell kann zudem unter Verwendung von verschiedenen Einsatzmodellen eingesetzt werden, so beispielsweise eine private Cloud, eine gemeinschaftliche Cloud, eine öffentliche Cloud, eine hybride Cloud und dergleichen mehr. In der vorliegenden Beschreibung und den Ansprüchen ist eine „Cloudrechenumgebung” eine Umgebung, in der das Cloudrechnen eingesetzt wird.
-
7 zeigt ein Blockdiagramm einer exemplarischen Rechenvorrichtung 700, die zum Durchführen eines oder mehrerer der vorbeschriebenen Prozesse konfiguriert sein kann. Es sollte einsichtig sein, dass eine oder mehrere Rechenvorrichtungen, so beispielsweise die Rechenvorrichtung 700 das Kurvennachbearbeitungssystem 602 hosten kann. Wie in 7 gezeigt ist, kann die Rechenvorrichtung 700 einen Prozessor 702, eine Ablage 704, eine Speichervorrichtung 706, eine I/O-Schnittstelle 708 und eine Kommunikationsschnittstelle 710 umfassen, die kommunikativ mittels einer Kommunikationsinfrastruktur 712 gekoppelt sein können. Obwohl in 7 eine exemplarische Rechenvorrichtung 700 gezeigt ist, sollen die in 7 dargestellten Komponenten nicht beschränkend sein. Es können zusätzliche oder alternative Komponenten bei anderen Ausführungsformen eingesetzt werden. Des Weiteren kann bei bestimmten Ausführungsformen die Rechenvorrichtung 700 weniger Komponenten, als in 7 gezeigt ist, beinhalten. Komponenten der Rechenvorrichtung 700 werden so, wie sie in 7 gezeigt sind, nunmehr zusätzlich detailliert beschrieben.
-
Bei bestimmten Ausführungsformen beinhaltet der Prozessor 702/beinhalten die Prozessoren 702 Hardware zum Ausführen von Anweisungen, so beispielsweise denjenigen, die ein Computerprogramm bilden. Beispiels- und nicht beschränkungshalber kann der Prozessor 702/können die Prozessoren 702 zur Ausführung von Anweisungen die Anweisungen aus einem internen Register, einem internen Cache, einer Ablage 704 oder einer Speichervorrichtung 706 abrufen (oder holen) und diese decodieren und ausführen.
-
Die Rechenvorrichtung 700 beinhaltet einen Speicher 704, der mit dem Prozessor/den Prozessoren 702 gekoppelt ist. Der Speicher 704 kann zum Speichern von Daten, Metadaten und Programmen zur Ausführung durch den Prozessor/die Prozessoren verwendet werden. Der Speicher 704 kann einen oder mehrere flüchtige und nichtflüchtige Speicher beinhalten, so beispielsweise einen Speicher mit wahlfreiem Zugriff („RAM”), einen Nur-Lese-Speicher („ROM”), eine Solid-State-Platte („SSD”), einen Flash, einen Phasenänderungsspeicher („PCM”) oder andere Typen von Datenspeicher. Der Speicher 704 kann ein interner oder verteilter Speicher sein.
-
Die Rechenvorrichtung 700 beinhaltet eine Speichervorrichtung 706, die eine Speicher zum Speichern von Daten oder Anweisungen beinhaltet. Beispiels- und nicht beschränkungshalber kann die Speichervorrichtung 706 ein nichttemporäres Speichermedium, wie es vorstehend beschrieben worden ist, umfassen. Das Speichermedium 706 kann ein Festplattenlaufwerk (HDD), einen Flash-Speicher, ein USB-Laufwerk (universeller serieller Bus) oder eine Kombination hieraus oder auch andere Speichervorrichtungen beinhalten.
-
Die Rechenvorrichtung 700 beinhaltet zudem eine oder mehrere Eingabe- oder Ausgabevorrichtungen/Schnittstellen 708 („I/O”), die dafür vorgesehen sind zu ermöglichen, dass ein Nutzer eine Eingabe (so beispielsweise Striche des Nutzers) bereitstellt, eine Ausgabe empfängt oder auf andere Weise Daten an die Rechenvorrichtung 700 überträgt und von dieser empfängt. Diese I/O-Vorrichtungen/Schnittstellen 708 können eine Maus, ein Keypad oder eine Tastatur, einen Touchscreen, eine Kamera, einen optischen Scanner, eine Netzwerkschnittstelle, ein Modem, andere bekannte I/O-Vorrichtungen oder eine Kombination aus derartigen I/O-Vorrichtungen/Schnittstellen 708 beinhalten. Der Touchscreen kann mit einem Stift oder einem Finger aktiviert werden.
-
Die I/O-Vorrichtungen/Schnittstellen 708 können eine oder mehrere Vorrichtungen dafür beinhalten, einem Nutzer eine Ausgabe zu präsentieren, darunter unter anderem eine Graphics Engine, eine Anzeige (beispielsweise einen Anzeigeschirm), einen oder mehrere Ausgabetreiber (beispielsweise Anzeigetreiber), einen oder mehrere Audiolautsprecher und einen oder mehrere Audiotreiber. Bei bestimmten Ausführungsformen sind die Vorrichtungen/Schnittstellen 708 dafür konfiguriert, grafische Daten für eine Anzeige zur Präsentation gegenüber einem Nutzer bereitzustellen. Die grafischen Daten können eine oder mehrere grafische Nutzerschnittstellen und/oder einen anderen grafischen Inhalt, der als spezielle Implementierung dienen kann, darstellen.
-
Die Rechenvorrichtung 700 kann des Weiteren eine Kommunikationsschnittstelle 710 beinhalten. Die Kommunikationsschnittstelle 710 kann Hardware, Software oder beides beinhalten. Die Kommunikationsschnittstelle 710 kann eine oder mehrere Schnittstellen zur Kommunikation (beispielsweise zur paketbasierten Kommunikation) zwischen der Rechenvorrichtung und einer oder mehreren anderen Rechenvorrichtungen 700 oder einem oder mehreren Netzwerken bereitstellen. Beinhalten kann die Kommunikationsschnittstelle 710 beispiels- und nicht beschränkungshalber eine Netzwerkschnittstellensteuerung bzw. Regelung (NIC) oder einen Netzwerkadapter zum Kommunizieren mit einem Ethernet oder einem anderen drahtbasierten Netzwerk oder eine drahtlose NIC (WNIC) oder einen drahtlosen Adapter zum Kommunizieren mit einem Drahtlosnetzwerk, so beispielsweise WI-FI. Die Rechenvorrichtung 700 kann des Weiteren einen Bus 712 beinhalten. Der Bus 712 kann Hardware, Software oder beides beinhalten, die Komponenten der Rechenvorrichtung 700 miteinander koppelt.
-
In vorstehender Beschreibung ist die Erfindung anhand spezifischer exemplarischer Ausführungsformen beschrieben worden. Verschiedene Ausführungsformen und Aspekte der Erfindung/Erfindungen sind anhand von hier erläuterten Details beschrieben worden, wobei die begleitende Zeichnung die verschiedenen Ausführungsformen darstellt. Die vorstehende Beschreibung und die Zeichnung sind illustrativ für die Erfindung und sollen nicht erfindungsbeschränkend gedeutet werden. Es werden zahlreiche spezifische Details beschrieben, um ein eingehendes Verständnis verschiedener Ausführungsformen der vorliegenden Erfindung zu ermöglichen.
-
Die vorliegende Erfindung kann in anderen spezifischen Formen verkörpert sein, ohne von ihrem Wesen oder von wesentlichen Merkmalen abzugehen. Die beschriebenen Ausführungsformen sollen in jeder Hinsicht als illustrativ und nicht als restriktiv betrachtet werden. Die hier beschriebenen Verfahren können beispielsweise mit weniger oder mehr Schritten/Vorgängen durchgeführt werden, oder es können die Schritte/Vorgänge in anderen Reihenfolgen durchgeführt werden. Zusätzlich können die hier beschriebenen Schritte/Vorgänge wiederholt oder parallel zueinander oder parallel zu anderen Instanzen derselben oder ähnlicher Schritte/Vorgänge durchgeführt werden. Der Umfang der Erfindung ist durch die beigefügten Ansprüche und nicht durch die vorstehende Beschreibung bestimmt. Alle Änderungen, die der Bedeutung und dem Äquivalenzbereich der Ansprüche entsprechen, sollen in ihrem Umfang umfasst sein.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-