DE102015005834A1 - Mischtechniken zur Kurvenanpassung - Google Patents

Mischtechniken zur Kurvenanpassung Download PDF

Info

Publication number
DE102015005834A1
DE102015005834A1 DE102015005834.7A DE102015005834A DE102015005834A1 DE 102015005834 A1 DE102015005834 A1 DE 102015005834A1 DE 102015005834 A DE102015005834 A DE 102015005834A DE 102015005834 A1 DE102015005834 A1 DE 102015005834A1
Authority
DE
Germany
Prior art keywords
curve
data points
techniques
points
curvature
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102015005834.7A
Other languages
English (en)
Inventor
Gregg D. Wilensky
Nathan A. Carr
Stephen N. Schiller
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Adobe Inc
Original Assignee
Adobe Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Adobe Systems Inc filed Critical Adobe Systems Inc
Publication of DE102015005834A1 publication Critical patent/DE102015005834A1/de
Pending legal-status Critical Current

Links

Images

Classifications

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

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

Es werden Mischtechniken zur Kurvenanpassung beschrieben. Bei einer oder mehreren Implementierungen wird eine Angabe über drei oder mehr Datenpunkte empfangen. Ein Mischfaktor wird auf Grundlage einer räumlichen Beziehung der drei oder mehr Datenpunkte zueinander berechnet. Eine Kurve wird an die drei oder mehr Datenpunkte durch Mischen einer Mehrzahl von Kurvenanpassungstechniken unter Verwendung des berechneten Mischfaktors angepasst.

Description

  • Verwandte Anmeldung
  • Die vorliegende Anmeldung beansprucht als nichtvorläufig (non-provisional) die Priorität der am 12. Mai 2014 eingereichten vorläufigen US-Patentanmeldung mit der Nummer 61/992,083 und dem Titel „Blending Techniques For Curve Fitting”, deren gesamte Offenbarung hiermit durch Verweisung mit aufgenommen ist.
  • Hintergrund
  • Die Kurvenanpassung betrifft das Anpassen einer Kurve (beispielsweise eines Weges) zwischen Datenpunkten. Sie kann für eine Vielzahl von verschiedenen Zwecken eingesetzt werden, so beispielsweise dafür, die Entsprechung von Datenpunkten zueinander anzugeben, sowie für Tabellen, zum Zeichnen von Animationswegen, zum Drucken von Temperaturen und dergleichen mehr.
  • Gleichwohl weichen herkömmliche Techniken, die zur Kurvenanpassung eingesetzt werden, gegebenenfalls von den Erwartungen der Anwender ab, die die Funktionalität nutzen. So können beispielsweise unerwartete Extrema, Schleifen und dergleichen mehr bei einer Kurvenanpassung unter Verwendung von herkömmlichen Techniken zwischen denjenigen Datenpunkten beobachtet werden, die dem von den Datenpunkten gezeigten „Fluss”, den der Anwender erwartet, nicht folgen. Infolgedessen sind Anwender von herkömmlichen Techniken oftmals gezwungen, die Kurve manuell zu berichtigen, was frustrierend und ineffizient sein kann.
  • Zusammenfassung
  • Es werden Mischtechniken zur Kurvenanpassung beschrieben. Bei einer oder mehreren Implementierungen wird eine Angabe über drei oder mehr Datenpunkte empfangen. Es wird ein Mischfaktor auf Grundlage einer räumlichen Beziehung der drei oder mehr Datenpunkte zueinander berechnet. Es wird eine Kurve an die drei oder mehr Datenpunkte durch Mischen einer Mehrzahl von Kurvenanpassungstechniken unter Verwendung des berechneten Mischfaktors angepasst.
  • Bei einer oder mehreren Implementierungen beinhaltet ein System ein oder mehrere Module, die wenigstens teilweise in Hardware implementiert sind. Das eine oder die mehreren Module sind zum Durchführen von Betriebsvorgängen ausgelegt, die beinhalten: Empfangen einer Angabe zum Anpassen einer Kurve an eine Mehrzahl von Datenpunkten, Bestimmen einer räumlichen Beziehung der Mehrzahl von Datenpunkten zueinander und Mischen einer Mehrzahl von Kurvenanpassungstechniken zum Durchführen der Anpassung der Kurve, wobei das Mischen wenigstens eine Heuristik verwendet, die auf der bestimmten räumlichen Beziehung beruht.
  • Bei einer oder mehreren Implementierungen ist ein Computerprogrammerzeugnis insbesondere als Signal, Datenstrom und/oder als ein oder mehrere computerlesbare Speichermedien implementiert, die insbesondere darauf gespeicherte Anweisungen umfassen, die in Reaktion auf die Ausführung durch eine Rechenvorrichtung veranlassen, dass die Rechenvorrichtung Betriebsvorgänge ausführt, die beinhalten: Wählen, welche aus einer Mehrzahl von Kurvenanpassungstechniken angewandt werden soll, auf Grundlage einer räumlichen Beziehung einer Mehrzahl von Datenpunkten, an die eine Kurve angepasst werden soll, und Anpassen der Kurve an die Mehrzahl von Datenpunkten unter Verwendung der ausgewählten aus der Mehrzahl von Kurvenanpassungstechniken.
  • Bei einer oder mehreren Implementierungen beinhaltet ein System ein oder mehrere Module, die wenigstens teilweise in Hardware implementiert sind, wobei das eine oder die mehreren Module dafür ausgelegt sind, Betriebsvorgänge auszuführen, die umfassen: Konfigurieren einer Anwenderschnittstelle zum Unterstützen eines direkten Bearbeitens von komplexen Kurven durch Konfigurieren von Kontaktpunkten, die direkt auf der komplexen Kurve angeordnet sind, um eine von einem Anwender spezifizierte Bewegung zu unterstützen; und automatisches und ohne Anwendereingriff erfolgendes Anpassen einer jeweiligen Kurve der komplexen Kurve derart, dass die jeweilige Kurve die Neigungs- und Krümmungskontinuität in Bezug auf die komplexe Kurve beibehält.
  • Die vorliegende Zusammenfassung führt in vereinfachter Form eine Auswahl von Konzepten ein, die nachstehend in der Detailbeschreibung weiter beschrieben werden. Die Zusammenfassung als solche soll die wesentlichen Merkmale des beanspruchten Gegenstandes nicht identifizieren, noch soll sie als Hilfe beim Bestimmen des Umfanges des beanspruchten Gegenstandes verwendet werden.
  • Kurzbeschreibung der Zeichnung
  • Die Detailbeschreibung erfolgt anhand der begleitenden Figuren. In den Figuren identifiziert/identifizieren die am weitesten links stehende/die am weitesten links stehenden Ziffern eines Bezugszeichens die Figur, in der das Bezugszeichen zuerst auftritt. Die Verwendung derselben Bezugszeichen in verschiedenen Zusammenhängen der Beschreibung und in den Figuren kann ähnliche oder identische Objekte angeben. Entitäten, die in den Figuren dargestellt sind, können eine oder mehrere Entitäten bezeichnen, weshalb eine Verweisung auf eine einzige oder mehrere Formen der Entitäten bei der Erläuterung austauschbar erfolgen kann.
  • 1 ist eine Darstellung einer Umgebung bei einer beispielhaften Implementierung, die dafür betreibbar ist, die hier beschriebenen Techniken einzusetzen.
  • 2 zeigt detaillierter ein System in einer beispielhaften Implementierung zur Darstellung eines Mischmoduls von 1 zusammen mit Beispielen für Kurvenanpassungstechniken, die von einem Kurvenanpassungsmodul eingesetzt werden können.
  • 3 zeigt ein Verwendungsbeispiel einer Symmetrieheuristik zum Erzeugen eines Mischfaktors durch das Mischmodul zum Spezifizieren einer Verwendung von verschiedenen Kurvenanpassungstechniken.
  • 4 zeigt ein Beispiel einer Neuanordnung einer räumlichen Beziehung eines der Datenpunkte von 3 und eine sich daraus ergebende Änderung eines Mischfaktors mit Verwendung zum Anpassen einer Kurve an die Datenpunkte.
  • 5 zeigt ein Verwendungsbeispiel einer Flachheitsheuristik zum Erzeugen eines Mischfaktors durch das Mischmodul zum Spezifizieren einer Verwendung von verschiedenen Kurvenanpassungstechniken.
  • 6 zeigt ein Verwendungsbeispiel einer Vorzeichenheuristik zum Erzeugen eines Mischfaktors durch das Mischmodul zum Spezifizieren einer Verwendung von verschiedenen Kurvenanpassungstechniken.
  • 7 zeigt ein Beispiel eines Aufbaus eines Beispiels einer zusammengesetzten Kurve, bei der eine längere κ-Kurve durch Zusammensetzen von mehreren quadratischen Bézier-Segmenten mit G1-Kontinuität aufgebaut ist.
  • 8 zeigt ein Optimierungsschema, das gemäß Darstellung bei einem beispielhaften Algorithmus formuliert sein kann.
  • 9 zeigt ein Beispiel eines lokalen Verhaltens eines Modus.
  • 10 zeigt ein beispielhaftes System zum Lösen von κ-Kurven, die bis zu 10.000 beliebig erzeugte Punkte enthalten.
  • 11 zeigt ein Beispiel eines Vergleiches einer Spline-Kurve unter Verwendung der hier beschriebenen Techniken mit einer kubischen Catmull-Rom-Spline-Interpolationstechnik.
  • 12 ist ein Flussdiagramm zur Darstellung einer Prozedur bei einer beispielhaften Implementierung, bei der ein Mischfaktor zum Anpassen einer Kurve an drei oder mehr Datenpunkte eingesetzt wird.
  • 13 ist ein Flussdiagramm zur Darstellung einer Prozedur bei einer beispielhaften Implementierung, bei der eine Mehrzahl von Kurvenanpassungstechniken zum Anpassen einer Kurve an eine Mehrzahl von Datenpunkten gewählt ist.
  • 14 zeigt ein beispielhaftes System mit verschiedenen Komponenten einer beispielhaften Vorrichtung, die als ein Typ von Rechenvorrichtung gemäß Beschreibung implementiert sein kann und/oder im Zusammenhang mit 1 bis 13 zum Implementieren von Ausführungsformen der hier beschriebenen Techniken genutzt werden kann.
  • Detailbeschreibung
  • Übersicht
  • Herkömmliche Techniken, die zum Anpassen von Kurven an Datenpunkte eingesetzt werden, implizieren gegebenenfalls keine ausreichend intuitive Interaktion und Einfachheit der Verwendung. Des Weiteren können derartige herkömmliche Techniken gegebenenfalls auch zu einer Kurve führen, die von den Erwartungen eines Anwenders abweicht, und zwar beispielsweise infolge des Auftretens von Extrema, Schleifen und dergleichen mehr, die beim Verfolgen der übrigen Datenpunkte nicht auftreten und daher von den Erwartungen eines Anwenders beim Anpassen der Kurve abweichen.
  • Es werden Mischtechniken zur Kurvenanpassung beschrieben. Bei einer oder mehreren Implementierungen werden Mischtechniken eingesetzt, um verschiedene Kurvenanpassungstechniken zum Anpassen einer Kurve an eine Mehrzahl von Datenpunkten zu mischen, so beispielsweise für Tabellen, zum Zeichnen von Animationswegen, zum Drucken von Temperaturen und dergleichen mehr. Eine Rechenvorrichtung kann beispielsweise eine Angabe über aufeinanderfolgende Datenpunkte empfangen, durch die eine Kurve als Weg zwischen den Punkten angepasst werden soll. Es werden Heuristiken zum Berechnen eines Mischfaktors auf Grundlage einer räumlichen Beziehung der Datenpunkte zueinander, so beispielsweise Symmetrie, Flachheit, Krümmungsvorzeichen und dergleichen mehr, verwendet.
  • Dieser Mischfaktor kann sodann zum Wählen dessen verwendet werden, welche aus einer Mehrzahl von Kurvenanpassungstechniken zum Anpassen der Kurve verwendet werden soll, wie auch dafür, wie zwei oder mehr der Techniken miteinander gemischt werden sollen. Die Rechenvorrichtung kann beispielsweise eine Schätzung unter Verwendung einer quadratischen Bézier-Kurvenanpassungstechnik vornehmen, und zwar beispielsweise zum Schätzen einer Tangentenrichtung und eines Krümmungsradius bei der Kurve für die Datenpunkte. Diese Schätzungen können sodann als Grundlage zum Bestimmen dessen dienen, wie weitere Kurvenanpassungstechniken miteinander gemischt werden sollen, so beispielsweise eine kubische Bézier-Kurvenanpassungstechnik mit einer Kreiskurvenschätztechnik. Auf diese Weise kann eine Mischung zum auf intuitive Weise erfolgenden Anpassen einer Kurve verwendet werden, was im Zusammenhang mit den nachfolgenden Abschnitten weiter erläutert wird.
  • Bei den nachfolgenden Erläuterungen wird zunächst eine beispielhafte Umgebung beschrieben, die die hier beschriebenen Mischtechniken einsetzen kann. Sodann werden beispielhafte Prozeduren beschrieben, die in der beispielhaften Umgebung wie auch in anderen Umgebungen durchgeführt werden können. Infolgedessen ist das Leistungsvermögen der beispielhaften Prozeduren nicht auf die beispielhafte Umgebung beschränkt, und die beispielhafte Umgebung ist nicht auf das Leistungsvermögen der beispielhaften Prozeduren beschränkt.
  • Beispielhafte Umgebung
  • 1 ist eine Darstellung einer Umgebung 100 in einer beispielhaften Implementierung, die zum Einsetzen der hier beschriebenen Techniken betreibbar ist. Die dargestellte Umgebung 100 beinhaltet eine Rechenvorrichtung 102, die auf eine Vielzahl von Arten konfiguriert sein kann.
  • Die Rechenvorrichtung 102 kann beispielsweise als Desktopcomputer, Laptopcomputer, Mobilvorrichtung (unter Annahme einer handgerechten Konfiguration, so beispielsweise bei einem Tablet oder einem Mobiltelefon) und dergleichen mehr konfiguriert sein. Wie dargestellt ist, ist beispielsweise die Rechenvorrichtung 102 in einer mobilen Konfiguration als Tablet konfiguriert, der eine Anzeigevorrichtung 104 mit der Funktionalität eines berührungsempfindlichen Bildschirmes (touch screen) aufweist, die zum Erkennen von Berührungspunkten konfiguriert ist, so beispielsweise denjenigen der Hand 106 des Anwenders. Damit kann die Rechenvorrichtung 102 von Vollressourcenvorrichtungen mit beträchtlichen Speicher- und Prozessorressourcen (beispielsweise Personalcomputer, Spielekonsolen) zu einer geringe Ressourcen aufweisenden Vorrichtung mit begrenztem Speicher und/oder begrenzten Verarbeitungsressourcen (beispielsweise Mobilvorrichtung) reichen. Obwohl darüberhinaus eine einzelne Rechenvorrichtung 102 gezeigt ist, kann die Rechenvorrichtung 102 eine Mehrzahl von verschiedenen Vorrichtungen darstellen, so beispielsweise mehrere Server, die von einer Firma verwendet werden, um Betriebsvorgänge „über die Cloud” auszuführen, wie nachstehend im Zusammenhang mit 14 beschrieben wird.
  • Die Rechenvorrichtung 102 ist derart dargestellt, dass sie ein Kurvenanpassungsmodul 108 beinhaltet. Das Kurvenanpassungsmodul 108 stellt eine Funktionalität im Zusammenhang mit dem Anpassen einer Kurve an eine Mehrzahl von Datenpunkten 110 wie auch eine Funktionalität im Zusammenhang mit der Interaktion (beispielsweise durch Modifizieren) der Kurve dar. Obwohl das Kurvenanpassungsmodul 108 als auf der Rechenvorrichtung 102 implementiert dargestellt ist, kann es auf eine Vielzahl von Arten implementiert sein, so beispielsweise entfernt über einen Webdienst eines Serviceproviders, der „via Cloud” über das Netzwerk 112 zugänglich ist, zwischen dem Serviceprovider und der Rechenvorrichtung 102 verteilt ist, und dergleichen mehr.
  • Bei dem dargestellten Beispiel wird eine Anwenderschnittstelle 114 derart dargestellt, dass sie eine Mehrzahl von Datenpunkten 116, 118, 120, 122 anzeigt, die über eine Geste bzw. Handbewegung eingegeben werden, die über die Funktionalität eines berührungsempfindlichen Schirmes der Anzeigevorrichtung 104 erfasst wird, so beispielsweise durch Verwendung eines oder mehrerer kapazitiver Sensoren. Dies wird als Teil einer Vielzahl von verschiedenen Funktionalitäten durchgeführt, so beispielsweise zum Spezifizieren eines Weges, über den ein Objekt animiert werden soll, zum Spezifizieren eines Randes bei der Bildbearbeitung und dergleichen mehr. Weitere Beispiele sind ebenfalls mit einbezogen, so beispielsweise Datenpunkte 110, die von einer Tabelle empfangen werden, Ablesungen eines Sensors, Präsentationssoftware und dergleichen mehr.
  • Das Kurvenanpassungsmodul 108 kann sodann bei Empfang der Datenpunkte 116 bis 122 eine Kurve 124 automatisch und ohne Anwendereingriff auf Grundlage der Datenpunkte 116 bis 122 anpassen. Das Kurvenanpassungsmodul 108 kann beispielsweise derart konfiguriert sein, dass es eine Mehrzahl von verschiedenen Kurvenanpassungstechniken 126 einsetzt, so beispielsweise quadratische Bézier-Kurventechniken, kubische Bézier-Kurventechniken und Kreiskurvenschätztechniken. Jede dieser Kurvenanpassungstechniken 126 weist angesichts verschiedener räumlicher Beziehungen der Datenpunkte 110 Stärken und Schwächen auf. Entsprechend kann das Kurvenanpassungsmodul 108 ein Mischmodul 128 einsetzen, das eine Funktionalität zum Wählen dessen darstellt, welche von den Kurvenanpassungstechniken 116 für einen bestimmten Satz von Datenpunkten 110 verwendet werden soll und wie die Mehrzahl von Kurvenanpassungstechniken 126 zusammengemischt werden soll, um das Endergebnis einer Kurve 124, die an die Punkte angepasst ist, zu erreichen. Auf diese Weise kann das Kurvenanpassungsmodul 108 dafür konfiguriert sein, eine Kurve 124 anzupassen, die visuell gefällig und daher von einem Anwender des Kurvenanpassungsmoduls 108 „erwartet” wird, was im Folgenden weiter erläutert wird und in der entsprechenden Figur dargestellt ist.
  • 2 zeigt ein System 200 einer beispielhaften Implementierung zur detaillierteren Darstellung des Mischmoduls 128 von 1 zusammen mit Beispielen der Kurvenanpassungstechniken 126, die von dem Kurvenanpassungsmodul 108 eingesetzt werden können. Das Kurvenanpassungsmodul 108 ist derart dargestellt, dass es Eingaben zum Spezifizieren von Datenpunkten 110 empfängt und eine Kurve 124 ausgibt, die an diese Datenpunkte angepasst ist. Zur Durchführung dieser Anpassung kann das Kurvenanpassungsmodul 108 ein Mischmodul 128 einsetzen, das eine Funktionalität zum Wählen dessen darstellt, welche (und sogar „wie viele”) Kurvenanpassungstechniken 126 zum Anpassen der Kurve 124 eingesetzt werden sollen.
  • Zur Unterstützung dieser Wahl kann das Mischmodul 128 ein Heuristikmodul 202 einsetzen, das eine Funktionalität zum Einsetzen einer oder mehrerer Heuristiken zum Initiieren der Anpassung der Kurve darstellt. Die Heuristiken können beispielsweise auf einer räumlichen Beziehung der Datenpunkte 110 zueinander zum Anpassen der Kurve beruhen, so beispielsweise auf einer spezifizierten Ordnung der Datenpunkte 110 und einer Beziehung eines jeden der Datenpunkte zu vorherigen und/oder nachfolgenden Bereichen von Datenpunkten. Beispiele für derartige Heuristiken beinhalten eine Symmetrie 204, eine Flachheit 206 und ein Vorzeichen 208, deren Verwendung in den nachfolgenden Figuren weiter beschrieben wird.
  • Die Heuristiken aus der Berechnung durch das Heuristikmodul 202 können sodann zum Erzeugen eines Mischfaktors verwendet werden, der spezifizieren kann, welche der Kurvenanpassungstechniken 126 beim Anpassen der Kurve eingesetzt werden sollen, sie können eine Gewichtung spezifizieren, die jeder der Kurvenanpassungstechniken 126 zugeordnet werden soll, und dergleichen mehr. Beispiele für derartige Kurvenanpassungstechniken 126 beinhalten eine quadratische Bézier-Kurve 210, eine kubische Bézier-Kurve 212, eine Kreiskurvenschätzung 214 und dergleichen mehr, was ebenfalls bei den nachfolgenden Beispielen weiter erläutert wird.
  • 3 zeigt ein Verwendungsbeispiel 300 einer Symmetrieheuristik 204 zum Erzeugen eines Mischfaktors durch das Mischmodul 128 zum Spezifizieren einer Verwendung von verschiedenen der Kurvenanpassungstechniken 126. Erste und zweite Beispiele 302, 304 von Kurven 306, 308 mit Anpassung an die Datenpunkte 310, 312, 314, 316 sind gezeigt. Beim ersten Beispiel 302 wird eine Kurve 306 an die Datenpunkte 310, 312, 314, 316 unter Verwendung der quadratischen Bézier-Kurve 210 von 2 angepasst. Tangenten mit Steuerungen bzw. Regelungen (controls) sind an jeweiligen Datenpunkten 310 bis 316 zum Spezifizieren von Skalierungsfaktoren zum Kurvenabgleich zwischen benachbarten Kurven dargestellt.
  • Gezeichnete Kreise im Inneren der Kurve 306 zeigen einen Krümmungsradius an jeweiligen Datenpunkten 310 bis 316. Damit weisen, wie durch die Kreise angegeben ist, die Kurven, die zwischen den Datenpunkten 310 bis 316 bei dem ersten Beispiel 302 gezeigt sind, Krümmungen auf, die variieren, die also beispielsweise hin zu einem Mittelpunkt abnehmen und sodann bei Annäherung an einen weiteren Datenpunkt wieder zunehmen. Daher kann die Kurve 306 von der anwenderseitigen Erwartung eines Kreises abweichen.
  • Bei dem zweiten Beispiel 304 ist eine Kurve 308 ebenfalls zwischen den Datenpunkten 310 bis 316 angepasst, wobei jedoch in diesem Fall eine Kreiskurvenschätztechnik 214 unterstützend wirkt. Die Kreiskurvenschätztechnik 214 schätzt einen Kreis für jede Ansammlung von drei aufeinanderfolgenden Datenpunkten. Daher folgt, wie dargestellt ist, der Krümmungsradius an jeweiligen Datenpunkten 310 bis 316 (beispielsweise innere Kreise) zudem einem Kreis, der durch die Kurve 308 definiert ist, was zum Erreichen eines gewünschten Ergebnisses für einen Anwender, so beispielsweise für die Wahrscheinlichkeit dessen, dass bei diesem Beispiel ein Kreis gezeichnet wird, verwendet werden kann.
  • Das Heuristikmodul 202 des Mischmoduls 128 von 2 kann eine Vielzahl von verschiedenen Heuristiken einsetzen, um zu einem Mischfaktor, der beschreiben kann, welche der Kurvenanpassungstechniken 126 verwendet werden soll, und sogar zu einer Gewichtung, die den verschiedenen Faktoren zugewiesen werden soll, zu gelangen. Wie beim zweiten Beispiel 204 gezeigt ist, können beispielsweise drei Datenpunkte 310, 312, 314 in Aufeinanderfolge definiert werden. Eine Grundlinie 318 kann zwischen den ersten und dritten Datenpunkten 310, 314 definiert werden, sowie eine Beziehung 320 des zweiten Datenpunktes 312 (das heißt des Datenpunktes, der in Aufeinanderfolge zwischen den beiden anderen Datenpunkten 310, 314 definiert ist) zu der Grundlinie 318 mit Verwendung zum Definieren des Mischfaktors. Die Beziehung 320 kann beispielsweise auf Grundlage eines Punktes definiert werden, der annähernd senkrecht von der Grundlinie 318 zu dem zweiten Datenpunkt 312 ist. Dies kann zum Bestimmen dessen verwendet werden, ob der zweite Datenpunkt 312 zwischen die ersten und dritten Datenpunkte 310, 314 entlang der Grundlinie 318 fällt, wobei dann, wenn dem so ist, die Kurvenanpassungstechnik 126 der Kreiskurvenschätzung 214 bevorzugt wird, das heißt, es wird ihr eine höhere Gewichtung als der quadratischen Bézier-Kurventechnik 210 zugeordnet.
  • Gewichtungen können beispielsweise auf Grundlage einer Nähe der Beziehung 320 zu einem Mittelpunkt der Grundlinie 318 eingesetzt werden, wobei beispielsweise eine größere Gewichtung der Kreiskurvenschätztechnik 214 zugeordnet wird, je näher der Mittelpunkt ist. Sobald man „außerhalb” der Grundlinie 318 zwischen den ersten und dritten Datenpunkten 310, 314 ist, kann eine größere Gewichtung einer anderen Kurvenanpassungstechnik 126, so beispielsweise der quadratischen Bézier-Kurventechnik 210, zugeordnet werden. Ein Beispiel hierfür ist im Folgenden beschrieben und in der entsprechenden Figur dargestellt.
  • 4 zeigt ein Beispiel 400 einer Neuanordnung einer räumlichen Beziehung eines der Datenpunkte 312 von 3 und eine entsprechende Änderung eines Mischfaktors mit Verwendung zum Anpassen einer Kurve an die Datenpunkte 310 bis 316. Wie dargestellt ist, bewegt eine Cursorsteuer- bzw. Regelvorrichtung (beispielsweise eine Maus) bei diesem Beispiel den Datenpunkt 310 von einem ursprünglichen Ort, wie er in 3 gezeigt ist, zu einem neuen Ort, wie durch einen gestrichelten Pfeil dargestellt ist.
  • Dies führt zu einer neuen symmetrischen Beziehung zwischen den Datenpunkten 310, 312, 314 dahingehend, dass die Beziehung 402 des zweiten Datenpunktes 312 zu der Grundlinie 318 mit Bildung zwischen den ersten und dritten Datenpunkten 310, 314 „außerhalb” der Punkte liegt, das heißt nicht zwischen den Datenpunkten 310, 314 entlang der Grundlinie 318 angeordnet ist. Daher kann das Mischmodul 128 zu einem Mischfaktor gelangen, der der quadratischen Bézier-Kurventechnik 210 ein größeres Gewicht als der Kreiskurvenschätztechnik 214 bei diesem Beispiel zuordnet, um eine Kurve entsprechend der wahrscheinlichen Intuition des Anwenders anzupassen. Damit kann ein Mischen auf Grundlage dessen durchgeführt werden, wie gut die Datenpunkte 310 bis 316 einen Kreis annähern, indem die verschiedenen Kurvenanpassungstechniken gewichtet werden.
  • 5 zeigt ein Verwendungsbeispiel 500 einer Flachheitsheuristik 206 zum Erzeugen eines Mischfaktors durch das Mischmodul 128 zum Spezifizieren der Verwendung von verschiedenen Kurvenanpassungstechniken 126. Bei diesem Beispiel wird der zweite Datenpunkt 312 hin zu der Grundlinie 318, die durch die ersten und dritten Datenpunkte 310, 314 definiert ist, bewegt. Dies bewirkt, dass die Krümmung für die Kurvensegmente, die durch die ersten, zweiten und dritten Datenpunkte 310 bis 312 und 312 bis 314 definiert ist, „ausflacht” (flatten out). Hierfür kann das Mischmodul 128 der quadratischen Bézier-Kurve 210 eine größere Gewichtung, je näher der zweite Datenpunkt 312 zu der Grundlinie 318 gelangt, als der Kreiskurvenschätztechnik 214 zuweisen, so beispielsweise dann, wenn eine vordefinierte Schwelle überschritten ist. Damit kann, wie ohne Weiteres aus der Erläuterung zu 3 bis 5 ersichtlich ist, eine Mehrzahl von Heuristiken gleichzeitig verwendet werden, um einen Mischfaktor für eine Mehrzahl von Kurvenanpassungstechniken 126 zu berechnen.
  • 6 zeigt ein Verwendungsbeispiel 600 der Vorzeichenheuristik 208 zum Erzeugen eines Mischfaktors durch das Mischmodul 128 zum Spezifizieren der Verwendung von verschiedenen Kurvenanpassungstechniken 126. Das dargestellte Beispiel 600 beinhaltet erste, zweite und dritte Datenpunkte 602, 604, 606, an die eine Kurve 608 angepasst werden soll. Bei diesem Beispiel untersucht das Mischmodul 128 ein Krümmungsvorzeichen an benachbarten Datenpunkten, um zur Berechnung des Mischfaktors beizutragen.
  • Wie für die ersten und zweiten Datenpunkte 602, 604 gezeigt ist, ist beispielsweise ein Krümmungsvorzeichen 602 für den ersten Datenpunkt 602 von einem Krümmungsvorzeichen des zweiten Datenpunktes 602 bzw. 604 verschieden. Mit anderen Worten, die Kurven biegen sich in entgegengesetzten Richtungen. Das Mischmodul 128 kann daher in diesem Fall einen Mischfaktor erzeugen, bei dem keine Kreiskurvenschätztechnik 214 verwendet wird, weshalb eine andere Technik, so beispielsweise die quadratische Bézier-Kurventechnik 210 gewählt wird. Auf diese Weise können aus der Reihe fallende Kurven, die durch die Verwendung der Kreiskurvenschätztechnik 214 bewirkt werden, vermieden werden, wodurch bewirkt werden kann, dass die Kurve 604 bei diesem Beispiel von den Datenpunkten 602 bis 606 „wegdriftet” (swoop away). Es sind weitere Beispiele für Kurvenanpassungstechniken in der nachfolgenden Erläuterung zu finden.
  • In der nachfolgenden Erläuterung werden Beispiele für Heuristiken und Kurvenanpassungstechniken detaillierter beschrieben.
  • Quadratische Bézier-κ-Kurven
  • Man betrachte eine quadratische Bézier-Kurve der nachfolgenden Form: r(t) = (1 – t)2r0 + 2t(1 – t)rm + t2r1 (1)
  • Die Funktion r(t) spezifiziert die Koordinatentrajektorie der Kurve mit Parametrisierung durch den Zeitparameter t, dessen Wert zwischen 0 und 1 variiert. Man beachte, dass bei t = 0 die Kurve genau durch den Steuer- bzw. Regelpunkt r0 verläuft, während bei t = 1 die Kurve durch den Steuer- bzw. Regelpunkt r1 verläuft. Die Kurve verläuft jedoch im Allgemeinen nicht durch den mittleren Steuer- bzw. Regelpunkt rm.
  • Quadratisches Interpolieren von Bézier-Kurven
  • Es kann ein quadratisches Bézier-Drei-Punkt-Interpolationsschema erstellt werden, bei dem der Ort des Punktes rc derart gesteuert bzw. geregelt wird, dass er auf der Kurve an einer Position der Maximalkrümmung liegt. Für einen Satz von Datenpunkten r0, rc, r1 beginnt die Kurve beispielsweise bei r0, verläuft durch rc und endet bei r1. Es kann ein beliebiger Zeitwert tc ∊ (0, 1) ausgewählt und für den mittleren Bézier-Steuer- bzw. Regelpunkt gelöst werden. Hier sowie für die restliche Erläuterung wird die Schreibung (0, 1) verwendet, um ein offenes Intervall von 0 bis 1 darzustellen, das heißt ein Intervall, das die Endpunkte nicht enthält.
  • Auf Grundlage von Gleichung (1) kann daher der nachfolgende Ausdruck geschrieben werden. rc = (1 – tc)2r0 + 2tc(1 – tc)rm + t 2 / cr1 (2)
  • Eine einfache Umformung der Terme von 2 ergibt:
    Figure DE102015005834A1_0002
  • Aus Gleichung 3 ist ersichtlich, dass eine Lösung stets für Werte mit tc ∊ (0, 1) existiert. Die entarteten Fälle von tc gleich 0 oder 1 sind gerade Liniensegmente.
  • Bogenlänge
  • Die Bogenlänge s(t) einer Kurve ist durch Integrieren der Geschwindigkeit der Kurve über die Zeit folgendermaßen gegeben: s(t) = ∫ t / 0|r'(u)|du (4)
  • Man beachte, dass die mit Strich versehene (primed) Schreibung Ableitungen in Bezug auf den Zeitparameter bezeichnet.
  • Maximalkrümmung
  • Die Krümmung κ(t) einer kontinuierlichen Raumkurve ist als Änderungsrate pro Einheitsbogenlänge des Einheitstangentenvektors entlang der Kurve definiert. Der Einheitstangentenvektor ist gegeben durch: T(t) = r'(t)/|r'(t)| (5)
  • Per definitionem kann Nachfolgendes angegeben werden:
    Figure DE102015005834A1_0003
  • Für 2D-Kurven (2D zweidimensional) kann Gleichung (6) folgendermaßen zu einem einfacheren Ausdruck umgeformt werden:
    Figure DE102015005834A1_0004
  • Hierbei bezeichnet der Operator den Kreuzproduktoperator (das heißt bei zwei gegebenen Vektoren p = [px, py] und q = [qx, qy], p × q = pxqy – pyqx). Der quadratische Bézier-Ausdruck, der in Gleichung (1) angegeben ist, kann sodann differenziert werden, was Nachfolgendes ergibt: r'(t) = v(t) = (2t – 2)r0 + 2(1 – 2t)rm + (2t)r1 (8) r''(t) = a(t) = 2r0 – 4rm + 2r1 (9)
  • Hierbei werden die Variablen v(t) und a(t) verwendet, um die Geschwindigkeit beziehungsweise die Beschleunigung der Kurve zu bezeichnen. Der Nenner gibt die „Geschwindigkeit” der Kurve zur Zeit t an. Man beachte, dass bei einem quadratischen Bézier-Ausdruck der Beschleunigungsterm konstant ist. Zur Zeit t = 0 und t = 1 sind die Geschwindigkeiten der Kurve sodann gegeben durch: v0 = 2(rm – r0) (10) v1 = 2(r1 – rm) (11)
  • Für eine quadratische Bézier-Kurve variiert die Geschwindigkeit folgendermaßen linear mit t: v(t) = v0 + ta0 (12)
  • Diese Werte können in den Ausdruck für die Krümmung (7) aufgenommen werden, was Nachfolgendes ergibt:
    Figure DE102015005834A1_0005
  • Man beachte, dass der Zähler des Ausdruckes (13) konstant ist. Wie vorstehend beschrieben worden ist, ist dennoch wünschenswert, einen Steuer- bzw. Regelpunkt an einem angenäherten Ort zu platzieren, an dem die Krümmung ihren Maximalwert erreicht. Dies beinhaltet ein Bestimmen des Zeitparameters, für den der Maximalkrümmungswert erreicht wird. Da der Zähler in Ausdruck (13) konstant ist, kann ein Maximum der Funktion durch Minimieren des Nenners ausfindig gemacht werden. Gleichwertig kann das Quadrat der Geschwindigkeit dadurch minimiert werden, dass es differenziert und gleich 0 gesetzt wird: 0 = d / dt(v0 + tca0)2 = d / dt(v0·v0 + 2tcv0·a0 + a0·a0t 2 / c) = 2(v0·a0 + a0·a0tc) (14)
  • Durch Lösen für tc erreicht eine Kurve ihren Maximalkrümmungswert bei:
    Figure DE102015005834A1_0006
  • Maximalkrümmungszeit
  • Man gehe davon aus, dass drei Punkte zur Interpolation gegeben sind, nämlich r0, rc, r1, wobei rc genau an dem Punkt der Maximalkrümmung entlang der quadratischen Bézier-Kurve liegt. Aus Gleichung (3) ergibt sich, dass die Kurve die drei Punkte genau für einen beliebigen Zeitwert tc ∊ [0, 1] interpoliert. Damit kann nach einem Zeitwert tc ∊ [0, 1] gesucht werden, für den die quadratische Bézier-Kurve ein lokales Krümmungsmaximum zur Zeit tc erreicht (das heißt, es wird Gleichung (15) erfüllt).
  • Unter Verwendung von Gleichung (10) und Gleichung (3) können die Geschwindigkeitsvektoren für die neue Kurve folgendermaßen ausgedrückt werden:
    Figure DE102015005834A1_0007
  • Hierbei wird die Schreibung ri,j zur Bezeichnung der Differenz von Positionen verwendet, das heißt für ri,j = ri – rj. Die Beschleunigung kann unter Verwendung von Gleichungen (9) und (3) folgendermaßen berechnet werden:
    Figure DE102015005834A1_0008
  • Dies ist entlang der Kurve konstant. Schließlich kann durch Kombinieren von Gleichung (15) mit den Ausdrücken für die Geschwindigkeit (16) und die Beschleunigung (18) ein Ausdruck für die Zeit tc ermittelt werden, zu der die Maximalkrümmung in dem quadratischen Bézier-Ausdruck auftritt:
    Figure DE102015005834A1_0009
  • Gleichung (19) ist eine kubische Gleichung: r 2 / 1,0t 3 / c – 3rc,0·r1,0t 2 / c + (2r 2 / c,0 + rc,0·r1,0)tc – r 2 / c,0 = 0 (20)
  • Die Lösung kann entweder durch die kubische Formel oder durch einen nummerischen Lösungsansatz erfolgen. Aus Gründen der Einfachheit können einige wenige Iterationen nach dem Halley'schen Verfahren verwendet werden, was eine kubische Konvergenz zur Lösung bereitstellt. Damit erhält man eine Lösung für eine quadratische Bézier-Drei-Punkt-κ-Kurve. Zusammenfassend heißt dies, dass dann, wenn drei beliebige Punkte r0, rc und r1 gegeben sind, wobei rc der Ort der Maximalkrümmung ist, Gleichung (20) gelöst werden kann, um die Maximalkrümmungszeit tc zu berechnen, woraufhin eine Lösung für den Ort des mittleren Bézier-Steuer- bzw. Regelpunktes rm unter Verwendung von Gleichung (3) erfolgt.
  • Beweis einer einzigen Lösung
  • Man beachte, dass die kubische Gleichung (20) eine einzige reale Wurzel innerhalb der von Interesse seienden Zeitdomäne 0 ≤ t ≤ 1 besitzt. Dies ist der Fall, da, wie durch (12) angegeben ist, eine quadratische Bézier-Kurve einer Trajektorie folgt, die gleichwertig zu derjenigen eines Objektes ist, das sich mit konstanter Beschleunigung bewegt, was als parabolischer Weg bekannt ist. Als solches kann nur ein einziges Kurvenmaximum vorhanden sein. Dies kann durch Untersuchung des Wesens der Wurzeln von kubischen Gleichungen direkt bewiesen werden, was man durch Umschreiben der Gleichung auf folgende Weise ohne Weiteres sehen kann: f(t) = t3 – 3λcos(θ)t2 + λ(2λ + cos(θ))t – λ2 = 0 (21)
  • Hierbei sind λ = |rc,0|/|r1,0| (22) und cos(θ) = r1,0·rc,0/(|rc,0||r1,0| (23)
  • Die Werte von f(t) an den beiden Endpunkten für t = 0 und t = 1 sind: f(0) = –λ2 (24) und f(1) = 1 – 2λcos(θ) + λ2 = (1 – λ)2 + (2λsin(θ/2))2 (25)
  • Hierdurch wird unter Vernachlässigung des trivialen Spezialfalles für λ = 0 und tc = 0 angegeben, dass die Funktion f(t) bei t = 0 streng negativ ist, und es wird unter Vernachlässigung des Spezialfalles mit λ = 1, λ = 0 und tc = 1, angegeben, dass diese streng positiv bei t = 1 ist. Es folgt, dass wenigstens eine reale Wurzel vorhanden ist, die zwischen t = 0 und t = 1 liegt.
  • Es kann nunmehr gezeigt werden, dass nur eine einzige reale Wurzel vorhanden ist. Die alternative Situation mit drei realen Wurzeln kann folgendermaßen bestimmt werden. Man nehme an, dass tatsächlich drei reale Wurzeln in dem bezeichneten Bereich vorhanden sind. Sodann muss die Ableitungsfunktion df(t) = dt bzw. df(t)/dt zwei Nullen bzw. Nullstellen in jenem Bereich aufweisen, und die zweite Ableitungsfunktion d2f(t)/dt2 muss zudem in dem Bereich verschwinden. Die letztgenannte Bedingung impliziert: d2f(t)/dt2 = 6(t – λcos(θ)) = 0 (26)
  • Dies impliziert wiederum: 0 ≤ τ ≤ 1 (27)
  • Hierbei ist die Variable t folgendermaßen definiert: τ = λcos(θ) (28)
  • Die Anforderung, dass die Ableitungsfunktion gleich 0 ist, also df(t)/dt = 3t2 – 6λcos(θ)t + λ(2λ + cos(θ)) = 0 (29) erzeugt zwei Wurzeln, nämlich:
    Figure DE102015005834A1_0010
  • Der Term unter der Quadratwurzel kann folgendermaßen umgeschrieben werden: –[τ(1 – τ) + 2λ2sin2(θ)]/3 (31)
  • Dies ist unter Vernachlässigung der vorgenannten Spezialfälle negativ, und zwar mit der Implikation, dass keine realen Wurzeln der Ableitungsfunktion in dem gewünschten Bereich von t vorhanden sind. Die Annahme von drei realen Wurzen ist daher nicht stichhaltig, weshalb nur eine einzige reale Wurzel der kubischen Gleichung (21) vorhanden ist, die innerhalb des gewünschten Bereiches liegt.
  • Man beachte zudem, dass bei λ > 0 der kubische Ausdruck keine Wurzel bei t = 0 aufweisen kann. Damit ist, solange r0 und rc verschieden sind, tc von 0 verschieden. Auf gleiche Weise ist symmetriebedingt dann, wenn r1 und r2 verschieden sind, tc von 1 verschieden.
  • Zusammengesetzte quadratische Bézier-κ-Kurven
  • Die vorstehende Diskussion hat detailliert ausgeführt, wie quadratische Bezier-Drei-Punk-κ-Kurven aufgebaut werden. in diesem Abschnitt ergibt die Diskussion, wie mehrere quadratische Bézier-Segmente miteinander verbunden werden sollen, um kontinuierliche C1-κ-Kurren zu bilden. 7 zeigt ein Beispiel 700 des Aufbaus eines Beispiels einer zusammengesetzten Kurve, bei der eine längere κ-Kurve dadurch aufgebaut wird, dass mehrere quadratische Bézier-Segmente mit G1-Kontinuität zusammengesetzt werden.
  • Für N Maximalkrümmungspunkte sind N quadratische Bézier-Kurvensegmente und N entsprechende Randbedingungsgleichungen vorhanden. Um die nachfolgenden Gleichungen zu vereinfachen, werden die quadratischen Bézier-Komponenten folgendermaßen definiert:
    Figure DE102015005834A1_0011
  • Hierbei bezeichnet tci die Maximalkrümmungszeit für jeden der N spezifischen Maximalkrümmungsorte, von denen jeder mit dem Index i indiziert ist.
  • Für jede quadratische Bézier-Kurve können die gekoppelten Gleichungen folgendermaßen geschrieben werden:
    Figure DE102015005834A1_0012
  • G1-Kontinuität erfordert, dass die Tangentenrichtungen und Größen (Geschwindigkeiten) am Übergangspunkt zwischen Kurvensegmenten kontinuierlich sind. Diese Bedingung impliziert, dass die Bézier-Endpunkte auf halbem Wege zwischen ihren benachbarten mittleren Steuer- bzw. Regelpunkten sind:
    Figure DE102015005834A1_0013
  • Zur Formulierung der Lösung werden die mittleren Steuer- bzw. Regelpunkte gelöst, aus denen die Lösung für die Bézier-Endpunkte sodann hergeleitet werden kann. Unter Verwendung von Gleichungen 33 und 34 ergibt dieser Lösungsansatz für die Steuer- bzw. Regelpunkte die nachfolgende Rekurrenzbeziehung:
    Figure DE102015005834A1_0014
  • Die Randbedingung der bekannten Randendpunkte r0 und rN-1 führt zu den nachfolgenden Gleichungen an den Rändern:
    Figure DE102015005834A1_0015
    Figure DE102015005834A1_0016
  • Zusammen ergibt dies die Matrixgleichung Axm = b, die für die unbekannten Vektoren
    Figure DE102015005834A1_0017
    hinsichtlich der bekannten Randbedingungsvektoren b gelöst werden kann. Die Matrix hat Dreieckform:
    Figure DE102015005834A1_0018
  • Man beachte, dass mit Ausnahme der ersten und letzten Reihen die Summe aller Elemente einer Reihe gleich 1 ist, was aus der Vollständigkeitsredaktion αn + βn + γn = 1 folgt. Zudem liegen die Diagonalelemente, die gleichwertig zu (1 + βn)/2 sind, in einem Bereich von 1/2 bis 3/4. Der Maximalwert von 3/4 tritt auf, wenn die entsprechende Maximalkrümmungszeit gleich 1/2 ist. Des Weiteren ist die Matrix diagonal dominant, wobei dann, wenn keiner der Zeitparameter die Werte 0 oder 1 aufweist, die Matrix streng diagonal dominant ist. In diesen Fällen ist die Matrix infolge des Levy-Desplanques-Theorems als nicht singulär (det (A) ≠ 0) bekannt.
  • Algorithmus für quadratische κ-Kurven
  • Das vorbeschriebene System ist dem Wesen nach nicht linear. Man beachte, dass der Aufbau der Matrix A und des Vektors b der rechten Seite von der Kenntnis der Maximalkrümmungszeiten für jeden der Maximalkrümmungspunkte ausgeht. Das Berechnen der Maximalkrümmungszeiten tci impliziert die Kenntnis der Orte der Bézier-Endpunkte ri, die die Lösungen für das Matrixsystem sind. Diese nichtlineare Abhängigkeit verhindert die Formulierung einer analytischen Lösung. Anstatt dessen kann ein Optimierungsschema formuliert werden, wie es bei dem Beispielsalgorithmus 800, der in 8 gezeigt ist, angegeben ist.
  • Die Analyse beginnt mit einer Schätzung der Anfangspositionen ri der Kurve durch Mitteln der benachbarten Maximalkrümmungspunkte. Die innere Schleife betrifft das Aktualisieren von Schätzungen für die Maximalkurvenzeiten, gefolgt von einem Aktualisieren der Koordinatenpositionen durch Lösen der vorbeschriebenen Matrixgleichung. Die Subroutine „computeMaxCurvatureTime” löst die kubische Gleichung (20). Ein intuitives Verständnis geht dahin, dass Zeitschätzungen verbessert und sodann zur Erzeugung von verbesserten Orten verwendet werden können. Diese Orte können sodann zum Neuberechnen eines neuen Satzes von Zeitschätzungen und so fort verwendet werden, bis das System eine Konvergenz erreicht. Es kann eine Vielzahl von verschiedenen Konvergenzkriterien verwendet werden, so beispielsweise dann, wenn die Zeitwerte tci während aufeinanderfolgender Iterationen nahezu unverändert bleiben.
  • Lokalität für kollineare Randbedingungspunkte
  • Die vorbeschriebene quadratische Bézier-Formulierung impliziert eine globale Lösung. Für eine derartige Lösung wächst, wenn die Anzahl von Punkten auf der Kurve zunimmt, die entsprechende Berechnung. Des Weiteren legt die globale Natur der Lösung nahe, dass lokale Änderungen an den Interpolationspunkten globalen Auswirkungen auf die Form der Kurve haben. Ein derartiges Verhalten kann sowohl aus der Perspektive der Leistungsfähigkeit wie auch aus der Perspektive der Konzeption in einigen Fällen unerwünscht sein. In der Praxis findet man die Lösungen als stabil und lokal vor, wobei nichtlokale Effekte verschwinden, wenn man sich weiter entlang des Weges von Bézier-Segment zu Bézier-Segment bewegt. In diesem Abschnitt wird eine theoretische Erläuterung für diese Beobachtungen bereitgestellt, indem auf eine spezielle Anordnung von Punkten abgestellt wird, die ein oszillatorisches Verhalten in einem bestimmten Fall zeigen, wobei jedoch in einem gängigeren Fall auch ein exponentiell gedämpftes Verhalten unterstützt wird.
  • Dieser Charakter der Ausbreitung einer Änderung auf der Kurve kann durch Betrachten des speziellen Beispieles einer Kurve untersucht werden, die durch einen Satz von kollinearen κ-Punkten gebildet wird, wobei die Schreibung κ-Punkte zur Bezeichnung der Maximalkrümmungspunkte verwendet wird. Diese Punkte können derart gewählt sein, dass sie alle entlang einer horizontalen Linie liegen, wobei der Vertikalachsenkoordinatenwert gleich 0 ist. Auf gleiche Weise wird auch der letzte Kurvenendpunkt beschränkt. Man stelle sich beispielsweise eine lange Kette von Maximalkrümmungspunkten vor, bei denen das Verhalten eines Abschnittes betrachtet wird, der keinen Endpunkt beinhaltet. Die κ-Punkte sind sodann von nachfolgender Form:
    Figure DE102015005834A1_0019
  • Es wird sodann eine Lösung der nachfolgenden Form angegeben:
    Figure DE102015005834A1_0020
  • Eine derartige Lösung weist für ein positives λ eine exponentiell abnehmende Amplitude auf. Für ein ω, das gleich 1 ist, ist das Verhalten oszillatorisch. Dieses oszillatorische Verhalten ist auf eine spezielle Anordnung der κ-Punkt-Kurve beschränkt. Aus (35) ergibt sich, dass beim Subtrahieren derselben Gleichung mit einem Index n, der um 1 dekrementiert ist, und bei Anwendung der Vollständigkeitsrelationen das Nachfolgende gilt:
    Figure DE102015005834A1_0021
  • Hierbei werden die nachfolgenden Definitionen verwendet: δζn = ζn – ζn-1 (44) δηn = ηn – ηn-1 (45)
  • Die sich ergebende oszillatorisch abnehmende Lösung für n führt zur nachfolgenden Form für δηn: δηn = ηn(1 + ω)/ω (46)
  • Dies bedeutet gleichwertig für δηn+1: δηn+1 = –ηn(1 + ω) (47)
  • Damit gilt: ηn = ½(1 + ω)(αn/ω + γnn (48)
  • Hierdurch gelangt man zur nachfolgenden Bedingung: 1 = ½(1 + ω)(αn/ω + γn) (49)
  • Dies ist erfüllt, wenn eine oszillatorische oder oszillatorisch abnehmende Lösung des kollinearen κ-Punkt-Problems vorhanden ist. Für den speziellen oszillatorischen Fall, für den die Größe der vertikalen Komponente der Bézier-Steuer- bzw. Regelpunkte über und unter der Linie der κ-Punkte mit konstanter Amplitude oszilliert, ist der „Abnahmefaktor” ω gleich 1, was nachfolgende Anforderung ergibt: Oszillation: 1 = αn + γn (50)
  • Dies ist für die beiden Werte der entsprechenden Maximalkrümmungszeiten erfüllt, also für t = 0 und t = 1. Die Lösung t = 0 ist konsistent zur kubischen Zeitgleichung, die die Randbedingungspunkte auf Punkte der Maximalkrümmung beschränkt. In diesem Fall reduziert sich die kubische Gleichung zu Nachfolgendem: –λ2 = 0 (51)
  • Dies gilt, wenn der Maximalkrümmungspunkt genau an der Stelle seines Endpunktes mit t = 0 liegt. Demgegenüber führt die Lösung t = 1 zur der kubischen Gleichung: 1 – 2λcos(θ) + λ2 = 0 (52)
  • Diese hat eine reale Lösung für λ nur für den Spezialfall λ = 0 und θ = 0. In diesem Fall liegt der Maximalkrümmungspunkt genau an dem Endpunkt mit t = 1.
  • Die Amplitude der Oszillation wird durch die Eigenschaften der quadratischen Bézier-Kurve begrenzt. Man betrachte ein quadratisches Bézier-Kurvensegment mit dem Endpunkt r0, der frei variieren kann, wohingegen der Maximalkrümmungssteuer- bzw. Regelpunkt rc und der Endpunkt r1 beide fest sind. Ohne Beschränkung der Allgemeinheit können die letztgenannten Punkte auf einer horizontalen Linie platziert werden, wobei eine Beabstandung zwischen ihnen von d = rc,1 = |rc,1| vorhanden ist. Der Punkt rc ist am Ursprung des Koordinatensystems platziert. Die Lösung für die Maximalvertikalabweichung des Kurvenabschnittes mit Lage zwischen rc und r1 ist in der nachfolgenden Form für den ersten Endpunkt r0 = (0, y0) mit dem Zeitparameter tc für den Maximalkrümmungspunkt durch nachfolgenden Ausdruck gegeben:
    Figure DE102015005834A1_0022
  • Das Vertikalausmaß des Kurvensegmentes ist gegeben durch:
    Figure DE102015005834A1_0023
  • Hierbei ergibt sich eine lineare Skalierung mit dem Punktbeabstandungsabstand d. Dieser Ausdruck wird durch die Wahl y0 = 1, tc = 1/2 und die Maximalkurvenvertikalabweichung δymax = (1/8)d maximiert. Die Maximalvertikalamplitude ηmax des mittleren Bézier-Steuer- bzw. Regelpunktes ist als ηmax = (1/2)d gegeben. Mit anderen Worten, das „Vertikalzittern” des Maximalkurvensegmentes bei einer Bewegung des ersten Endpunktes ist durch ein Achtel der Beabstandung d begrenzt, wovon die Amplitude ein Viertel der Maximalvertikalamplitude des Bézier-Steuer- bzw. Regelpunktes ist. Dies ist ein Ergebnis für eine einzige quadratische Bézier-Kurve. Werden mehrere Kurven zu einem derartigen Weg addiert, so wird dieses maximale „Zittern” im Allgemeinen verringert, und zwar üblicherweise auf exponentiell abnehmende Weise, wie bei dem Beispiel mit dem kollinearen Randbedingungspunkt angegeben ist.
  • Wie wiederum bei der allgemeinen oszillatorisch abnehmenden Lösung angegeben ist, wird, nachdem αn und γn explizit als Funktionen der entsprechenden Zeitparameter ausgedrückt werden, die nachfolgende Gleichung, die tn mit ω in Beziehung setzt, ermittelt: 1 = ½(1 + ω)((1 – tn)2ω + t 2 / n) (55)
  • Diese hat die nachfolgende Lösung: tn = (1 – √(ω))/(1 + ω) (56)
  • Der Zeitparameter hängt damit nicht vom Punktindex ab und ist daher entlang der Kurve konstant, abgesehen von Endpunkten, die hier nicht mit aufgenommen sind. Die Anforderung 0 ≤ tn ≤ 1 beschränkt ω auf die Lage zwischen 0 und 1. Der von Interesse seiende Wert für t ist t = 1/2, der für einen Wert von ω = 3 – 2√(2) = 0,171573 auftritt. In diesem Fall sinkt die Bézier-Steuer- bzw. Regelpunktvertikalamplitude exponentiell bei Zunahme des Punktindexes mit annähernd (0,171573...)n = exp(–1,76275n). Im Allgemeinen gilt: Je näher t an 0 ist, desto langsamer ist die Abnahmerate, und je näher t an 1 ist, desto größer ist diese Rate.
  • Es werden nunmehr die Horizontalkomponenten bestimmt, um die Abhängigkeit der Lösung von der Punktbeabstandung zu verstehen. Der Fokus liegt hierbei auf der Situation einer gleichen horizontalen Beabstandung δζ der mittleren Bézier-Kurvensteuer- bzw. Regelpunkte: δζn = δζn+1 = δζn (57)
  • Dies führt zu:
    Figure DE102015005834A1_0024
  • Der letzte Term beschreibt die Abweichung der Horizontalposition des mittleren Bézier-Steuer- bzw. Regelpunktes relativ zu dem zugehörigen κ-Punkt hiervon. Die oszillatorische Lösung mit tn = 0, ω = 1 weist daher die Bézier-Steuer- bzw. Regelpunkte mit Beabstandung auf halbem Wege zwischen den κ-Punkten auf, das heißt der Offset ist die Hälfte der κ-Punkt-Beabstandung.
    Figure DE102015005834A1_0025
  • Der vorerwähnte Spezialfall für tn = 1/2 führt nicht zu einem Offset. Für den exponentiell gedämpften Fall liegen die mittleren Bézier-Steuer- bzw. Regelpunkte an derselben Horizontalstelle wie die Maximalkrümmungsrandbedingungspunkte.
    Figure DE102015005834A1_0026
  • Daher wird eine beispielhafte Kurve beschrieben, die eine exponentielle Abnahme der Kurvenamplituden unterstützt, wie auch ein pathologischer Fall der Oszillation mit konstanter begrenzter Amplitude. Während die quadratische Bézier-Formulierung zu einer globalen Lösung mit dem Potenzial für eine nichtlokale Ausbreitung von Kurvenänderungen führt, werden in der Praxis lokale Kurvenänderungen stark gedämpft, so beispielsweise mit exponentiellem Abfall bei kollinearer Anordnung der Punkte. Wie in Beispiel 900 von 9 zu sehen ist, ist das sichtbare Verhalten des Modells dem Wesen nach vergleichsweise lokal. Eine lokale Änderung an der Kurve hat tendenziell Auswirkungen auf die Kurve in einem begrenzten lokalen Bereich.
  • Beispielhafte Implementierung
  • Es kann eine Vielzahl von verschiedenen kubischen Lösungsansätzen zum Lösen von Gleichung (20) verwendet werden, so beispielsweise ein direkter kubischer Lösungsansatz wie das Halley'sche Verfahren. In der Praxis bietet das Halley'sche Verfahren das beste Leistungsniveau wie auch die beste Stabilität. Dies ergibt sich teilweise aus der Fähigkeit, dieses Verfahren mit einem anfänglich erratenen Wert zu besetzen, der nahe an der wahren Lösung liegt, und zwar folgendermaßen: tc = |rc,0|/(|rc,0| + |rc,1|) (62)
  • Es ergibt sich die Beobachtung, dass der interpolierende quadratische Ausdruck eng der Polylinie folgt, die durch r0, rc, r1 verläuft. Der Anfangsratewert kann beispielsweise sogar genau sein, wenn die drei Punkte kollinear sind. Bei einer oder mehreren Implementierungen werden die Iterationen des Halley'schen Verfahrens ausgeführt, bis die Änderung von tc unter 1,0e–6 fällt.
  • Um das Matrixsystem A zu lösen, wird eine Grundimplementierung eines sequenziellen Dreieckslösungsansatzes verwendet, der eine bekannte Laufzeit von O(n) wie auch einen bekannten Speicher von O(n) aufweist. Für die Konvergenzkriterien bei Algorithmus 1 bei Beispiel 800 von 8 werden Iterationen durchgeführt, bis die Änderung der berechneten Maximalkurvenzeiten tci beispielsweise unter 1,0e–6 für jedes quadratische Bézier-Segment fällt.
  • Bei dem Beispiel 1000 von 10 ist ein beispielhaftes System zum Lösen von κ-Kurven gezeigt, die bis zu 10.000 beliebig erzeugte Punkte in dem Intervall [0, 1] aufweisen. Man beachte, dass die Lösungszeit insgesamt im Subsekundenbereich ist und dass die Leistungsskalierung nahezu linear hinsichtlich der Größe der Kurve infolge der Konvergenzrate und der Effizienz des gewählten Matrixlösungsansatzes ist.
  • 11 zeigt ein Beispiel 1100 eines Vergleiches einer Spline-Kurve unter Verwendung der hier beschriebenen Techniken mit einem kubischen Catmull-Rom-Spline-Interpolationsverfahren [Catmull and Rom 1974]. Die Wahl der Parametrisierung kann Auswirkungen auf die Qualität der Ergebnisse des Catmull-Rom-Modells haben. 11 zeigt eine Konfiguration, bei der sich eine Standardwahl einer Spannung ungünstig verhält und Schleifen und Zitterer (wiggles) (gestrichelt dargestellt) zwischen den Steuer- bzw. Regelvertices erzeugt, wohingegen die hier beschriebenen Techniken glatte und intuitive Ergebnisse erzeugen (durchgezogen dargestellt). Obwohl ein Anwender die Spannungsparameter global anpassen kann, um diese Schleifen und Zitterer bei der herkömmlichen Technik zu vermeiden, verringert dies die Ausgeglichenheit (fairness) der Kurve durch Konzentrieren einer hohen Krümmung an den Steuer- bzw. Regelvertices. Ein Anwender kann zudem die Spannung an jedem Vertex separat anpassen, um bessere Ergebnisse zu erzeugen, wobei dies jedoch eine manuelle Abstimmung impliziert.
  • Ästhetische kubische G2-Bézier-Kurven
  • In den vorhergehenden Abschnitten werden Techniken beschrieben, die zum Formulieren von kontinuierlichen quadratischen C1-κ-Kurven verwendet werden können. Obwohl die Lösung für quadratische κ-Kurven eine elegante Form aufweist, ist oftmals erwünscht, eine Kontinuität höherer Ordnung zu erreichen. Für CAD-Anwendungen wird beispielsweise eine G2-Kontinuität üblicherweise als Minimalanforderung betrachtet. Für zweidimensionale Zeichenanwendungen ist eine derartige Kontinuität jedoch nicht notwendig. Des Weiteren ist bekannt, dass die Glattheit höherer Ordnung nicht immer zu stärker ästhetischen Kurven führt.
  • Bei zweidimensionalen Zeichensystemen spielen die Ästhetik und die Steuer- bzw. Regelbarkeit der Kurvendarstellung eine größere Rolle als die Gesamtkontinuität. Bedauerlicherweise gibt es kein gutes bekanntes Maß für die Ausgeglichenheit (fairness), mit der Kurven zu bewerten wären, obwohl Vorschläge hierfür gemacht worden sind, so beispielsweise das Minimieren der Gesamtvariation der Krümmung. Das Minimieren der Kurvenvariation führt zu insgesamt abgerundeten oder kreisförmigen Kurven, die nicht notwendigerweise den Erwartungen eines Künstlers entsprechen. Man beachte, dass die quadratischen κ-Kurven, obwohl sie gefällige Kurven erzeugen, eine sich schnell ändernde Krümmung aufweisen können. Daher kann eine Kurve, die eine Kontinuität höherer Ordnung (das heißt G2) aufweist, mit einer geringeren Variation der Krümmung verfolgt werden, um ein visuell gefälligeres Kurvenmodell zu erzeugen.
  • Zu diesem Zweck können kubische Bézier-Kurven eingesetzt werden. Kubische Bézier-Kurven bilden die Grundlage für viele Kurvenmodellierungssysteme und werden in Standardrendersystemen dargestellt. Es existieren Unmengen von Literatur zur effizienten Renderung von kubischen Bézier-Kurven auf einer Grafikverarbeitungseinheit. Wie nachstehend gezeigt ist, können die mathematischen Anforderungen für derartige Kurven jedoch kompliziert in der Analyse sein. Um diesen Problemen beizukommen, werden nachfolgend Techniken zur Lösung des Problems und zur Demonstration dessen beschrieben, dass unter den meisten Bedingungen G2-Kurven erzeugt werden können, die sowohl ästhetisch sind als auch eine niedrige Krümmungsvariation aufweisen, wobei die Maximalkrümmungen nahe an den Steuer- bzw. Regelvertices befindlich sind.
  • Eine kubische Bézier-Kurve weist die folgende Form auf: r(t) = (1 – t)3r0 + 3t(1 – t)2rm0 + 3t2(1 – t)rm1 + t3r1 (63)
  • Die ersten und zweiten Ableitungen hiervon lauten folgendermaßen: υ(t) = –3(t2 – 2t + 1)r0 + (9t2 – 12t + 3)rm – (9t2 + t)rn + 3t2r1 (64) a(t) = 6(1 – t)r0 + 6(3t – 2)rm + 6(1 – 3t)rn + 6tr1 (65) a'(t) = –6r0 – 12rm – 12rn + 6r1 (66)
  • Die Geschwindigkeiten und die Beschleunigung am Anfang und am Ende können folgendermaßen ausgedrückt werden: υ(0) = 3(rm – r0) (67) υ(1) = 3(r1 – rn) (68) a(0) = 6(r0 – 2rm + rn) (69) a(1) = 6(r1 – 2rn + rm) (70)
  • Die Krümmungen bei t = 0 und t = 1 lauten folgendermaßen:
    Figure DE102015005834A1_0027
  • Dies vereinfacht sich weiter zu:
    Figure DE102015005834A1_0028
  • Man gehe von zwei Punkten r0 und r1 aus, die entlang Einheitslängentangentenrichtungen T0 und T1 an den zwei Punkten gegeben sind. Man gehe zudem von bestimmten Krümmungen κ0 und κ1 bei r0 und r1 aus. Es können sodann die nachfolgenden beiden Ausdrücke angesetzt werden:
    Figure DE102015005834A1_0029
    Figure DE102015005834A1_0030
  • Durch Vereinfachung dieser Ausdrücke erhält man das Nachfolgende:
    Figure DE102015005834A1_0031
  • Dies vereinfacht sich weiter zu: T0 × r0n = 3 / 2κ0λ 2 / 0 (79) T1 × r1m = 3 / 2κ1λ 2 / 1 (80)
  • Hieraus ergibt sich: T0 × (r0 – (r1 + λ1T1)) = 3 / 2κ0λ 2 / 0 (81) T1 × (r1 – (r0 + λ0T0)) = 3 / 2κ1λ 2 / 1 (82)
  • Eine Multiplikation liefert: T0 × r01 – λ1T0 × T1 = 3 / 2κ0λ 2 / 0 (83) T1 × r10 – λ0T1 × T0 = 3 / 2κ1λ 2 / 1 (84)
  • Schließlich ergibt sich: ( 3 / 2κ0)λ 2 / 0 – (T0 × T11 – (T0 × r10) = 0 (85) ( 3 / 2κ1)λ 2 / 1 – (T0 × T10 – (T1 × r10) = 0 (86)
  • Die geeigneten Tangentenskalierungsfaktoren λ0 und λ1 können nunmehr durch zunächst erfolgendes Lösen für λ1 auf Grundlage von λ0 und anschließend erfolgendes Verwenden dieses Wertes gelöst werden, um zu einem Polynomrest (depressed polynomial) vierter Ordnung zu gelangen: (α 2 / 0β0)λ 4 / 0 + (2α0α2β0)λ 2 / 0 + (β1α 2 / 1)λ0 + (β2α 2 / 1 + α 2 / 2β0) = 0 (87)
  • Hierbei gilt: α0 = 3 / 2κ0 (88) α1 = –T0 × T1 (89) α2 = –T0 × r10 (90) β0 = 3 / 2κ1 (91) β1 = –T0 × T1 (92) β2 = –T1 × r10 (93)
  • Heuristiksystemtechniken
  • Ein pragmatischer Lösungsansatz kann zum Lösen einer kubischen G2-Kurve ins Auge gefasst werden, die eine Krümmung aufweist, die an den Steuer- bzw. Regelpunkten konzentriert ist. Es kann eine große nichtlineare Optimierung formalisiert werden, die gleichzeitig eine Lösung für sämtliche freien Parameter sucht, die die Gleichungssysteme (85) und (86) erfüllen. Dieser Lösungsansatz ist aufwändig, und der Suchraum ist vergleichsweise groß. Anstatt dessen kann eine Heuristik verwendet werden, um die Tangentenrichtungen und Krümmungen für die Enden der kubischen Bézier-Kurven zu schätzen.
    0 tion wird. Es können also bis zu vier Lösungen vorhanden sein, die die G2-Eigenschaft erfüllen. Ein anderer Denkansatz dafür, dies zu erkennen, besteht darin, dass Gleichungen (85) und (86) Parabeln bilden und dass ein Schnitt dieser Parabeln gesucht wird.
    gentenvektoren ist positiv. Dies führt zu einem Problem der Bestimmung, welche der gültigen Lösungen gewählt werden soll und was insbesondere in einem Fall zu tun ist, in dem keine Lösung vorhanden ist.
  • Tangenten- und Krümmungszuweisung
  • Es kann eine einfache Heuristik verwendet werden, um Zielkrümmungen und Tangenten die Abfolge von Steuer- bzw. Regelpunkten pi weils über den Radius des Kreises passen. Für nichtkreisförmige Punkte wird die quadratische κ-Kurvenkrümmungsschätzung verwendet. Punkte, die dazwischen liegen, erhalten eine Mischform aus den beiden Krümmungswerten. Der Prozess des Mischens von Krümmungsschätzungen kann als Ausgeglichenheitsherstellung (fairing) bezeichnet werden, da er das ästhetische Erscheinungsbild des Ergebnisses verbessert.
  • Um dies zu bewerkstelligen, kann ein einzelner Mischfaktor (das heißt ein Mischterm) berechnet werden, der das Produkt von drei separaten Mischfaktoren ist, beispielsweise einer Grundlinienmischung, einer Winkelmischung und einer Krümmungsmischung. Jeder dieser Faktoren definiert eine Bedingung, durch die wiederum definiert ist, wo die Punkte in einem kreisförmigen Muster ausreichend zur Verwendung der Kreiskrümmungstangenten und Krümmungen liegen. Für jeden Term ist der Mischfaktor ein solcher, wenn die Bedingung erfüllt ist. Da der endgültige Mischfaktor ein Produkt aus allen dreien ist, werden die Kreisschätzungen verwendet, wenn alle drei Bedingungen ausreichend erfüllt sind. Darüber hinaus kann eine Nutzungssteuerung bzw. Regelung eine Unterstützung für jeden Mischfaktor durch Erheben der Faktoren zu einer Potenz γi sein. Ein Anwender kann diese Faktoren zur Erzeugung verschiedener Mischungen anpassen. Nachfolgend werden Beispiele für diese Bedingungen detailliert beschrieben.
  • Für den Grundlinienmischfaktor wird jeder Punkt ri auf das Segment r–1 und ri+1 projiziert. Es kann eine Bedingung dahingehend aufgestellt werden, dass der projizierte Punkt p(ri) (wobei p(.) der Projektionsoperator ist) idealerweise auf den Mittelpunkt des Segmentes, das durch r_1 und ri+1 gegeben ist, projiziert wird. Ist dies so, so ist der Mischterm gleich 1. Ist umgekehrt der projizierte Punkt außerhalb des Segmentes (oder an den Endpunkten des Segmentes), so fällt der Mischterm auf 0 ab. Seit b der Grundlinienvektor von r–1 bis ri+1, und sei b ⌄ die normierte Form hiervon. Sodann ist die Grundlinienmischung gegeben durch:
    Figure DE102015005834A1_0032
  • Der nächste zu betrachtende Term ist der Winkelterm. Bei einer idealen Konfiguration würde der Winkel zwischen den beiden Vektoren rir–1 und riri+1 und genau gleich 90° sein. Es seien: V ^0 = ri-1ri/||ri-1ri|| V ^1 = riri+1/||riri+1
  • Der Winkelmischterm wird: angleBlend = (max(V ^0 × V ^1, 0))γ1 (95)
  • Mit Blick auf den Krümmungsmischterm hat man in der Praxis herausgefunden, dass die Verwendung der Kreiskrümmungsschätzung an einem gegebenen Steuer- bzw. Regelpunkt sinnvoll ist, wenn die benachbarten Steuer- bzw. Regelpunkte ähnliche Kreiskrümmungen aufweisen. Mit anderen Worten, es soll eine Abfolge von Punkten entlang des Kreises liegen. Eine Krümmungsmischfunktion zwischen zwei Sätzen von Krümmungen, die symmetrisch ist, kann folgendermaßen definiert sein:
    Figure DE102015005834A1_0033
  • Es seien ǩi-1, ǩi, ǩi+1, die Kreiskrümmungsschätzungen bei ri-1, ri beziehungsweise ri+1. Gegeben ist die endgültige kombinierte Krümmungsmischfunktion durch das Produkt aus: curvatureBlend (ǩi-1, ǩi) und curvatureBlend (ǩi, ǩi+1). Man beachte, dass dann, wenn die Kreiskrümmungen nicht auf jedweder Seite des Steuer- bzw. Regelpunktes ri passen, der kombinierte Winkelmischterm gleich 0 ist.
  • Alle drei Mischterme können miteinander kombiniert werden, wodurch sich ein Produkt aus vier Mischfunktionen ergibt. Es kann beispielsweise eine Vielzahl von verschiedenen Wahlen getroffen werden, so beispielsweise γ0 = 1, γ1 = 6 und γ2 = 1, wobei jedoch auch andere Wahlen je nach Geschmack des Anwenders und je nachdem, wie sehr der Anwender wünscht, dass die Kurven einer stärker kreisförmig abgerundeten Form folgen, möglich sind.
  • Tangenten- und Krümmungszuweisung
  • Nachdem Zielkrümmungen und Tangentenrichtungen an jedem Steuer- bzw. Regelpunkt zugewiesen sind, werden die Tangentengrößen λ0, λ1 > 0 unter Verwendung von Gleichung (87) gelöst. Da dies ein restpolynombasierter (depressed) biquadratischer Ausdruck ist, kann die Ferrari-Lösung direkt verwendet werden, um eine analytische Lösung für die realen Wurzeln bereitzustellen. Für jede der realen Wurzeln werden Lösungen gefunden (pruned), wobei entweder λ0 < 0 oder λ1 < 0 gilt. Unter den verbleibenden Lösungen wird die Lösung mit dem größten kleinsten λ gewählt, das heißt, bevorzugt werden Lösungen, bei denen λ-Faktoren von 0 entfernt sind.
  • In einigen Fällen kann jedoch eine zulässige Lösung nicht ausfindig gemacht werden, so beispielsweise dann, wenn die Tangenten in einer „C”-Konfiguration vorliegen, wenn also beispielsweise die sich ergebende Kurve eine „C”-Form aufweist. Die alternative „S”-Konfiguration führt zu gültigen Lösungen. Bei der „C”-Konfiguration geht jedoch die G2-Kontinuität verloren. Eine Technik beinhaltet das Suchen einer Lösung, die die Abweichung der Krümmungen an den beiden Endpunkten minimiert. Dies erfolgt direkt durch Minimieren der Summe der quadrierten Abstände von den Sollkrümmungen, wobei die Lösungskrümmungen der Ungleichheitsrandbedingung λ0, λ1 > 0 genügen. In der Praxis führt jedoch das Durchlaufen dieser Optimierung zu einer Lösung, bei der λ0 oder λ1 gleich 0 ist.
  • Bei einer weiteren Technik ist der λ-Skalierungsfaktor am Ende der Kurve mit der kleinsten Krümmungsgröße fest. Bei einer oder mehreren Implementierungen wird ein Drittel der Länge der Grundlinie zwischen den beiden Steuer- bzw. Regelpunkten verwendet. Ist der λ-Faktor an einem Ende der Kurve gegeben, so kann ein Lösen durch direktes Vorgeben von G2 an dem eine größere Krümmung aufweisenden Ende der Kurve erfolgen. Diese Vorgehensweise verbirgt die G2-Diskontinuität an dem am wenigsten bemerkbaren Ende der Kurve. Dieser Lösungsansatz ist eine vernünftige Wahl, da die Ausfälle üblicherweise ein Ergebnis dessen sind, dass eine große Krümmung an einem Ende der Kurve und eine kleine Krümmung an dem anderen spezifiziert sind.
  • Wie erläutert worden ist, ist gegebenenfalls nicht immer möglich, eine G2-Kontinuität für einen spezifizierten Satz von Tangenten, Krümmungen und Steuer- bzw. Regelpunkten vorliegen zu haben. Darüber hinaus kann ein Problem dahingehend entstehen, dass nicht alle G2-Lösungen ästhetisch und erwünscht sind. Bei einigen „C”-Kurvenkonfigurationen erfüllen die sich ergebenden Kurven beispielsweise G2, wobei jedoch die Änderung der Krümmung an einem Ende so abrupt ist, dass sich das Ergebnis einem höckerartigen Verhalten nähert, wohingegen die sich ergebende Kurve dem oszillierenden Kreis in der Nähe eines jeden Endpunktes folgen sollte.
  • Bei einer oder mehreren Implementierungen können Techniken eingesetzt werden, die derartige Fälle erfassen und nicht zulassen, dass die λ-Skalierungsfaktoren unter einen über dem Krümmungsradius an jedwedem Ende der Kurve fallen. Tritt ein derartiger Fall auf, so wird die Krümmung eingeklemmt bzw. festgehalten (clamped), und der λ-Skalierungssterm wird zum Erfüllen von G2 am anderen Ende der Kurve präpariert (soled).
  • Beispielhafte Prozeduren
  • Die nachfolgende Erläuterung beschreibt Kurventechniken, die unter Verwendung der vorbeschriebenen Systeme und Vorrichtungen genutzt werden können. Aspekte einer jeden der Prozeduren können in Hardware, Firmware oder Software oder auch in einer Kombination hieraus implementiert werden. Die Prozeduren sind als Satz von Blöcken dargestellt, die Betriebsvorgänge spezifizieren, die von einer oder mehreren Vorrichtungen durchgeführt werden, wobei nicht notwendigerweise eine Beschränkung auf diejenigen Befehle gegeben ist, die zum Durchführen der Betriebsvorgänge durch die jeweiligen Blöcke gezeigt sind. In Abschnitten der nachfolgenden Diskussion wird auf 1 bis 11 verwiesen.
  • 12 zeigt eine Prozedur 1200 bei einer beispielhaften Implementierung, bei der ein Mischfaktor eingesetzt wird, um eine Kurve an drei oder mehr Datenpunkte anzupassen. Eine Angabe über drei oder mehr Datenpunkte wird empfangen (Block 1202). Die Angabe kann beispielsweise von einem Anwender mittels einer Interaktion mit einer Anwenderschnittstelle empfangen werden, sie kann aus einer Tabelle ermittelt werden, oder sie kann von fern über ein Netzwerk bezogen werden, und dergleichen mehr.
  • Es wird ein Mischfaktor auf Grundlage einer räumlichen Beziehung der drei oder mehr Datenpunkte zueinander berechnet (Block 1204). Die drei oder mehr Datenpunkte können beispielsweise in einer Abfolge angeordnet sein. Diese Abfolge und die räumliche Beziehung der Datenpunkte zueinander kann zum Berechnen eines Mischfaktors verwendet werden, und zwar beispielsweise auf Grundlage einer oder mehrerer Heuristiken, wie sie vorstehend beschrieben worden sind. Weitere Beispiele, die auf einer räumlichen Beziehung allein und nicht auf der Abfolge beruhen, sind ebenfalls mit einbezogen.
  • Es wird eine Kurve an die drei oder mehr Datenpunkte durch Mischen einer Mehrzahl von Kurvenanpassungstechniken unter Verwendung des berechneten Mischfaktors angepasst (Block 1206). Für das vorbeschriebene Beispiel bedeutet dies, dass der Mischfaktor verwendet werden kann, um Gewichtungen verschiedenen Kurvenanpassungstechniken und damit der Kurvenanpassung zuzuweisen, und dass die Techniken, die zur Durchführung dieser Anpassung verwendet werden, wenigstens teilweise auf der räumlichen Beziehung der Datenpunkte zueinander beruhen können.
  • 13 zeigt eine Prozedur 1300 bei einer beispielhaften Implementierung, bei der eine Mehrzahl von Kurvenanpassungstechniken zum Anpassen einer Kurve an eine Mehrzahl von Datenpunkten gewählt ist. Es wird eine Wahl dahingehend getroffen, welche aus einer Mehrzahl von Kurvenanpassungstechniken eingesetzt werden soll, und zwar auf Grundlage einer räumlichen Beziehung einer Mehrzahl von Datenpunkten, an die eine Kurve angepasst werden soll (Block 1302). Das Kurvenanpassungsmodul 108 kann beispielsweise die Mehrzahl von Datenpunkten 110 untersuchen, um eine Kurvenanpassungstechnik zu bestimmen, bei der wahrscheinlich ist, dass sie zu einer Kurve führt, die zur gewünschten Ausgabe eines Anwenders passt. Dies kann auf Grundlage einer räumlichen Beziehung der Datenpunkte, einer Quelle der Datenpunkte (beispielsweise einer Eingabe durch einen Anwender, Tabelle, Datentyp) und dergleichen mehr durchgeführt werden.
  • Die Kurve wird an die Mehrzahl von Datenpunkten unter Verwendung der gewählten aus der Mehrzahl von Kurvenanpassungstechniken angepasst (Block 1304). Für das vorhergehende Beispiel bedeutet dies, dass die gewählten Kurvenanpassungstechniken zur Bildung der Kurve eingesetzt werden können. Die Wahl kann ebenfalls eine Wahl von mehr als einer Kurvenanpassungstechnik beinhalten, weshalb in einem derartigen Fall diese Techniken miteinander gemischt werden können, um ein Endergebnis zu erhalten. Eine Vielzahl weiterer Beispiele ist ebenfalls mit einbezogen, ohne vom Wesen und Umfang hiervon abzugehen.
  • Beispielhaftes System und Vorrichtung
  • 14 zeigt allgemein bei 1400 ein beispielhaftes System, das eine beispielhafte Rechenvorrichtung 1402 beinhaltet, die ein oder mehrere Rechensysteme darstellt, und/oder Vorrichtungen, die die verschiedenen hier beschriebenen Techniken implementieren können. Dies wird durch Einbeziehung des Kurvenanpassungsmoduls 108 dargestellt, das zum Anpassen und/oder Manipulieren von Kurven unter Einbeziehung von Datenpunkten konfiguriert sein kann. Die Rechenvorrichtung 1402 kann beispielsweise ein Server eines Service-Providers, eine Vorrichtung, die einem Client zugeordnet ist (beispielsweise eine Clientvorrichtung), ein On-Chip-System und/oder eine beliebige andere geeignete Rechenvorrichtung oder ein solches Rechensystem sein.
  • Die beispielhafte Rechenvorrichtung 1402 gemäß Darstellung beinhaltet ein Verarbeitungssystem 1404, ein oder mehrere computerlesbare Medien 1406 und ein oder mehrere I/O-Schnittstellen 1408, die kommunikativ miteinander gekoppelt sind. Obwohl dies nicht dargestellt ist, kann die Rechenvorrichtung 1402 des Weiteren einen Systembus oder ein anderes Daten- und Befehlsübertragungssystem beinhalten, das die verschiedenen Komponenten miteinander koppelt. Ein Systembus kann eine beliebige oder eine Kombination aus verschiedenen Busstrukturen beinhalten, so beispielsweise einen Speicherbus oder einen Speichercontroller, einen Peripheriebus, einen universellen seriellen Bus und/oder einen Prozessor oder einen lokalen Bus, der eine beliebige aus einer Mehrzahl von Architekturen nutzt. Eine Vielzahl derartiger Beispiele ist zudem mit einbezogen, so beispielsweise Steuer- bzw. Regel- und Datenleitungen.
  • Das Verarbeitungssystem 1404 stellt eine Funktionalität zum Durchführen einer oder mehrerer Betriebsvorgänge unter Verwendung von Hardware bereit. Entsprechend ist das Verarbeitungssystem 1404 derart dargestellt, dass es ein Hardwareelement 1410 beinhaltet, das als Prozessoren, funktionelle Blöcke und dergleichen mehr konfiguriert sein kann. Dies kann eine Implementierung in Hardware als anwendungsspezifische integrierte Schaltung oder als andere logische Schaltung mit Bildung unter Verwendung eines oder mehrerer Halbleiter beinhalten. Die Hardwareelemente 1410 sind nicht auf Materialien, aus denen sie gebildet sind, oder auf die hier eingesetzten Verarbeitungsmechanismen beschränkt. So können beispielsweise Prozessoren aus einem Halbleiter oder Halbleitern und/oder Transistoren (beispielsweise elektronische integrierte Schaltungen (ICs)) gebildet sein. In diesem Zusammenhang können prozessorausführbare Anweisungen elektronisch ausführbare Anweisungen sein.
  • Die computerlesbaren Speichermedien 1406 sind derart dargestellt, dass sie einen Speicher/eine Ablage 1412 beinhalten. Der Speicher/die Ablage 1412 bietet eine Speicher-/Ablagekapazität im Zusammenhang mit einem oder mehreren computerlesbaren Medien. Die Speicher/-Ablagekomponente 1412 kann flüchtige Medien (so beispielsweise einen Speicher mit wahlfreiem Zugriff (RAM)) und/oder nichtflüchtige Medien (so beispielsweise einen Nur-Lese-Speicher (ROM), ein Flash-Speicher, optische Platten, magnetische Platten und dergleichen mehr) beinhalten. Die Speicher-/Ablagekomponente 1412 kann feste Medien (beispielsweise RAM, ROM, ein Festplattenlaufwerk und dergleichen mehr) wie auch herausnehmbare Medien (beispielsweise einen Flash-Speicher, ein herausnehmbares Laufwerk, eine optische Platte und dergleichen mehr) beinhalten. Die computerlesbaren Medien 1406 können auf eine Vielzahl von anderen Arten, wie nachstehend noch beschrieben wird, konfiguriert sein.
  • Eine Eingabe-/Ausgabeschnittstelle oder Eingabe-/Ausgabeschnittstellen 1408 stellen eine Funktionalität dar, die einem Anwender ermöglicht, Befehle und Information in die Rechenvorrichtung 1402 einzugeben, und ermöglichen zudem, dass Information dem Anwender und/oder anderen Komponenten oder Vorrichtungen unter Verwendung von verschiedenen Eingabe-/Ausgabevorrichtungen präsentiert wird. Beispiele für Eingabevorrichtungen beinhalten eine Tastatur, eine Cursorsteuer- bzw. Regelvorrichtung (beispielsweise eine Maus), ein Mikrofon, einen Scanner, eine berührungsempfindliche Funktionalität (beispielsweise kapazitive oder andere Sensoren, die zum Erfassen einer physischen Bewegung ausgelegt sind), eine Kamera (die beispielsweise sichtbare oder unsichtbare Wellenlängen, so beispielsweise Infrarotfrequenzen, einsetzen kann, um Bewegungen, so beispielsweise Gesten bzw. Handbewegungeen, die keine Berührung implizieren, zu erkennen), und dergleichen mehr. Beispiele für Ausgabevorrichtungen beinhalten eine Anzeigevorrichtung (beispielsweise einen Monitor oder Projektor), Lautsprecher, einen Drucker, eine Netzwerkkarte, eine Taktilreaktionsvorrichtung und dergleichen mehr. Die Rechenvorrichtung 1402 kann daher auf eine Vielzahl von Arten, was nachstehend noch beschrieben wird, konfiguriert sein, um die Anwenderinteraktion zu unterstützen.
  • Es sind hier verschiedene Techniken im allgemeinen Zusammenhang von Software, Hardwareelementen oder Programmmodulen beschrieben worden. Im Allgemeinen beinhalten derartige Module Routinen, Programme, Objekte, Elemente, Komponenten, Datenstrukturen und dergleichen mehr, die spezielle Aufgaben ausführen oder spezielle abstrakte Datentypen implementieren. Die Begriffe „Modul”, „Funktionalität” und „Komponente” stellen im vorliegenden Zusammenhang Software, Firmware, Hardware oder eine Kombination hieraus dar. Die Merkmale der hier beschriebenen Techniken sind plattformunabhängig, was bedeutet, dass die Techniken auf einer Vielzahl von herkömmlichen Rechenplattformen mit einer Vielzahl von Prozessoren implementiert werden können.
  • Eine Implementierung der vorbeschriebenen Module und Techniken kann auf einer Form von computerlesbaren Medien gespeichert sein oder durch diese übertragen werden. Die computerlesbaren Medien können eine Vielzahl von Medien beinhalten, auf die durch die Rechenvorrichtung 1402 zugegriffen werden kann. Beispielhalber und nicht im Sinne einer Beschränkung können computerlesbare Medien „computerlesbare Speichermedien” und „computerlesbare Signalmedien” beinhalten.
  • „Computerlesbare Speichermedien” können Medien und/oder Vorrichtungen betreffen, die eine dauerhafte und/oder nichtvorübergehende Speicherung von Information ermöglichen, was im Gegensatz zu einer bloßen Übertragung, zu Trägerwellen oder Signalen per se steht. Damit bezeichnen computerlesbare Speichermedien Nichtsignalträgermedien. Die computerlesbaren Speichermedien beinhalten Hardware, so beispielsweise flüchtige und nichtflüchtige, herausnehmbare und nichtherausnehmbare Medien, und/oder Speichervorrichtungen, die in einem Verfahren oder einer Technologie mit Eignung zur Speicherung von Information implementiert sind, so beispielsweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule, logische Elemente/Schaltungen oder andere Daten. Beinhalten können Beispiele für computerlesbare Speichermedien unter anderem RAM, ROM, EEPROM, Flash-Speicher oder eine andere Speichertechnologie' CD-ROM, DVDs (Digital Versatile Disk) oder einen anderen optischen Speicher, Festplatten, magnetische Kassetten, magnetische Bänder, magnetische Plattenspeicher oder andere magnetische Speichervorrichtungen oder eine andere Speichervorrichtung, physische Medien oder ein Objekt zur Herstellung mit Eignung zum Speichern der gewünschten Information und mit Zugänglichkeit seitens eines Computers.
  • „Computerlesbare Signalmedien” können ein Signalträgermedium bezeichnen, das dafür ausgelegt ist, Anweisungen an die Hardware der Rechenvorrichtung 1402 beispielsweise über ein Netzwerk zu übertragen. Signalmedien können üblicherweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten in einem modulierten Datensignal, so beispielsweise Trägerwellen, Datensignale oder andere Transportmechanismen, verkörpern. Signalmedien beinhalten zudem beliebige Informationsverteilungsmedien. Der Begriff „moduliertes Datensignal” bezeichnet ein Signal, das eine oder mehrere Eigenschaften aufweist, die derart gewählt oder geändert sind, dass Information in dem Signal codiert ist. Beispielhalber und nicht im Sinne einer Beschränkung beinhalten Kommunikationsmedien drahtgebundene Medien, so beispielsweise ein drahtgebundenes Netzwerk oder eine direkte Drahtverbindung, und drahtlose Medien, so beispielsweise akustische, funkbasierte, infrarotbasierte und andere drahtlose Medien.
  • Wie vorstehend beschrieben worden ist, stellen Hardwareelemente 1410 und computerlesbare Medien 1406 Module, programmierbare Vorrichtungslogiken und/oder feste Vorrichtungslogiken mit Implementierung in Hardwareform dar, die in einigen Ausführungsformen zum Implementieren wenigstens einiger Aspekte der hier beschriebenen Techniken eingesetzt werden können, so beispielsweise zum Durchführen einer oder mehrerer Anweisungen. Hardware kann Komponenten einer integrierten Schaltung oder einer chipinternen Systems, einer anwendungsspezifischen integrierten Schaltung (ASIC), eines feldprogrammierbaren Gate-Arrays (FPGA), einer komplexen programmierbaren logischen Vorrichtung (CPLD) und anderer Implementierungen in Silizium oder anderer Hardware beinhalten. In diesem Zusammenhang kann Hardware als Verarbeitungsvorrichtung arbeiten, die Programmaufgaben durchführt, die durch Anweisungen und/oder eine Logik mit Verkörperung durch die Hardware definiert sind, wie auch eine Hardware, die zum Speichern von Anweisungen zur Ausführung genutzt wird, so beispielsweise die vorstehend beschriebenen computerlesbaren Speichermedien.
  • Kombinationen aus dem Vorgenannten können zudem zum Implementieren von verschiedenen der hier beschriebenen Techniken eingesetzt werden. Entsprechend können Software, Hardware oder ausführbare Module als eine oder mehrere Anweisungen und/oder eine Logik mit Verkörperung in irgendeiner Form von computerlesbaren Speichermedien und/oder durch ein oder mehrere Hardwareelemente 1410 implementiert sein. Die Rechenvorrichtung 1402 kann dafür konfiguriert sein, bestimmte Anweisungen und/oder Funktionen entsprechend den Software- und/oder Hardwaremodulen zu implementieren. Entsprechend kann eine Implementierung eines Moduls, das von der Rechenvorrichtung 1402 ausführbar ist, als Software wenigstens teilweise in Hardware erreicht werden, beispielsweise durch Verwendung von computerlesbaren Speichermedien und/oder Hardwareelementen 1410 des Verarbeitungssystems 1404. Die Anweisungen und/oder Funktionen können durch einen oder mehrere reale Objekte (beispielsweise eine oder mehrere Rechenvorrichtungen 1402 und/oder Verarbeitungssysteme 1404) zum Implementieren von Techniken, Modulen und Beispielen gemäß vorliegender Beschreibung ausführbar/betreibbar sein.
  • Die hier beschriebenen Techniken können durch verschiedene Konfigurationen der Rechenvorrichtung 1402 unterstützt werden und sind nicht auf die spezifischen Beispiele der hier beschriebenen Techniken beschränkt. Diese Funktionalität kann auch gänzlich oder teilweise unter Verwendung eines verteilten Systems implementiert werden, so beispielsweise via „Cloud” 1414 über eine Plattform 1416, wie nachstehend noch beschrieben wird.
  • Die Cloud 1414 beinhaltet und/oder stellt eine Plattform 1416 für Ressourcen 1418 dar. Die Plattform 1416 abstrahiert eine zugrunde liegende Funktionalität der Hardware (beispielsweise Server) und Softwareressourcen der Cloud 1414. Die Ressourcen 1418 können Anwendungen und/oder Daten beinhalten, die genutzt werden, während sie bei der Computerverarbeitung auf Servern ausgeführt werden, die von der Rechenvorrichtung 1402 entfernt befindlich sind. Die Ressourcen 1418 können zudem Server beinhalten, die über das Internet und/oder über ein Teilnehmernetzwerk, so beispielsweise ein zellenbasiertes oder ein WiFi-Netzwerk, zugänglich sind.
  • Die Plattform 1416 kann Ressourcen und Funktionen zum Verbinden der Rechenvorrichtung 1402 mit anderen Rechenvorrichtungen abstrahieren. Die Plattform 1416 kann zudem zum Abstrahieren des Maßstabes der Ressourcen dienen, um ein entsprechendes Maßstabsniveau für den gewünschten Bedarf an Ressourcen 1418, die über die Plattform 1416 implementiert sind, bereitzustellen. Entsprechend kann in einer wechselseitig verbundenen Vorrichtungsverkörperung eine Implementierung der hier beschriebenen Funktionalität über das System 1400 hinweg verteilt sein. Die Funktionalität kann beispielsweise teilweise auf der Rechenvorrichtung 1402 über die Plattform 1416, die die Funktionalität der Cloud 1414 abstrahiert, implementiert sein.
  • Es werden Mischtechniken zur Kurvenanpassung beschrieben. Bei einer oder mehreren Implementierungen wird eine Angabe von drei oder mehr Datenpunkten empfangen. Es wird ein Mischfaktor auf Grundlage einer räumlichen Beziehung der drei oder mehr Datenpunkte zueinander beschrieben. Eine Kurve wird an die drei oder mehr Datenpunkte durch Mischen einer Mehrzahl von Kurvenanpassungstechniken unter Verwendung des berechneten Mischfaktors angepasst.
  • Schlussbemerkung
  • Obwohl die Erfindung in einer Sprache beschrieben ist, die für strukturelle Merkmale und/oder methodologische Vorgänge spezifisch ist, sollte einsichtig sein, dass die Erfindung gemäß Definition in den beigefügten Ansprüchen nicht notwendigerweise auf die beschriebenen spezifischen Merkmale oder Vorgänge beschränkt ist. Vielmehr sind die spezifischen Merkmale und Vorgänge als beispielhafte Formen der Implementierung der beanspruchten Erfindung offenbart.

Claims (13)

  1. Verfahren, das durch eine oder mehrere Rechenvorrichtungen implementiert wird, wobei das Verfahren umfasst: Empfangen einer Angabe über drei oder mehr Datenpunkte; Berechnen eines Mischfaktors auf Grundlage einer räumlichen Beziehung der drei oder mehr Datenpunkte zueinander; und Anpassen einer Kurve an die drei oder mehr Datenpunkte durch Mischen einer Mehrzahl von Kurvenanpassungstechniken unter Verwendung des berechneten Mischfaktors.
  2. Verfahren nach Anspruch 1, wobei die Mehrzahl von Kurvenanpassungstechniken quadratische Bézier-Kurventechniken, kubische Bézier-Kurventechniken und Kreiskurvenschätztechniken beinhalten.
  3. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Anpassen ein Berechnen einer Tangentenrichtung und eines Krümmungsradius beinhaltet; und/oder wobei die räumliche Beziehung eine Symmetrie der drei oder mehr Punkte zueinander beschreibt, wobei die Symmetrie der drei oder mehr Datenpunkte zueinander vorzugsweise darauf beruht, ob für die in Aufeinanderfolge definierten ersten, zweiten und dritten Datenpunkte der zweite Datenpunkt zwischen eine durch die ersten und dritten Datenpunkte definierte Grundlinie fällt.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei die räumliche Beziehung eine Flachheit der drei oder mehr Datenpunkte zueinander beschreibt, wobei die Flachheit der drei oder mehr Datenpunkte zueinander vorzugsweise auf einer für die in Aufeinanderfolge definierten ersten, zweiten und dritten Datenpunkte gegebenen Nähe, mit der der zweite Datenpunkt auf eine durch die ersten und dritten Datenpunkte definierte Grundlinie fällt, beruht.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei die räumliche Beziehung wenigstens teilweise auf einem Krümmungsvorzeichen des benachbarten Datenpunktes beruht, wobei das Krümmungsvorzeichen vorzugsweise durch Bestimmen dessen eingesetzt wird, ob das Krümmungsvorzeichen des benachbarten Datenpunktes von einem Vorzeichen für den aktuellen Datenpunkt verschieden ist.
  6. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Berechnen für ein Fenster durchgeführt wird, das eine Anzahl von Datenpunkten definiert, die vor und nach dem aktuellen Datenpunkt positioniert sind.
  7. Computerprogrammerzeugnis, umfassend computerlesbare Anweisungen, die, wenn sie in ein geeignetes System geladen und dort ausgeführt werden, die Schritte eines Verfahrens nach einem der vorhergehenden Ansprüche ausführen.
  8. Ein oder mehrere computerlesbare Speichermedien, umfassend darauf gespeicherte Anweisungen, die in Reaktion auf die Ausführung durch eine Rechenvorrichtung veranlassen, dass die Rechenvorrichtung Betriebsvorgänge ausführt, die umfassen: Wählen, welche aus einer Mehrzahl von Kurvenanpassungstechniken angewandt werden soll, auf Grundlage einer räumlichen Beziehung einer Mehrzahl von Datenpunkten, an die eine Kurve angepasst werden soll; und Anpassen der Kurve an die Mehrzahl von Datenpunkten unter Verwendung der ausgewählten aus der Mehrzahl von Kurvenanpassungstechniken.
  9. Ein oder mehrere computerlesbare Speichermedien nach Anspruch 8, wobei das Wählen ein Berechnen einer Schätzung unter Verwendung einer quadratischen Bézier-Kurventechnik beinhaltet und die Mehrzahl von Kurvenanpassungstechniken kubische Bézier-Kurventechniken und Kreiskurvenschätztechniken beinhaltet; und/oder wobei die räumliche Beziehung unter Verwendung einer Heuristik beschrieben wird, die eine Symmetrie oder Flachheit der Mehrzahl von Datenpunkten beinhaltet; und/oder wobei die räumliche Beziehung unter Verwendung einer Heuristik beschrieben wird, die beinhaltet, ob ein Krümmungsvorzeichen des benachbarten Datenpunktes von einem Krümmungsvorzeichen an dem aktuellen Datenpunkt verschieden ist.
  10. System, umfassend: ein oder mehrere Module, die wenigstens teilweise in Hardware implementiert sind, wobei das eine oder die mehreren Module dafür ausgelegt sind, Betriebsvorgänge auszuführen, die umfassen: Empfangen einer Angabe zum Anpassen einer Kurve an eine Mehrzahl von Datenpunkten; Bestimmen einer räumlichen Beziehung der Mehrzahl von Datenpunkten zueinander; und Mischen einer Mehrzahl von Kurvenanpassungstechniken zum Durchführen der Anpassung der Kurve, wobei das Mischen wenigstens eine Heuristik verwendet, die auf der bestimmten räumlichen Beziehung beruht.
  11. System nach Anspruch 10, wobei die Mehrzahl von Kurvenanpassungstechniken quadratische Bézier-Kurventechniken, kubische Bézier-Kurventechniken und Kreiskurvenschätztechniken beinhaltet; und/oder wobei die Heuristik eine quadratische Bézier-Kurventechnik einsetzt; und/oder wobei die Heuristik auf einer Symmetrie der Mehrzahl von Datenpunkten zueinander auf Grundlage davon beruht, ob für die in Aufeinanderfolge definierten ersten, zweiten und dritten Datenpunkte der zweite Datenpunkt zwischen eine durch die ersten und dritten Datenpunkte definierte Grundlinie fällt; und/oder wobei die Heuristik auf einer Flachheit der Mehrzahl von Datenpunkten zueinander auf Grundlage einer für die in Aufeinanderfolge definierten ersten, zweiten und dritten Datenpunkte gegebenen Nähe beruht, mit der der zweite Datenpunkt auf eine durch die ersten und dritten Datenpunkte definierte Grundlinie fällt; und/oder wobei die Heuristik auf einer Bestimmung dessen beruht, ob ein Krümmungsvorzeichen des benachbarten Datenpunktes von einem Vorzeichen für den aktuellen Datenpunkt verschieden ist.
  12. System, umfassend: ein oder mehrere Module, die wenigstens teilweise in Hardware implementiert sind, wobei das eine oder die mehreren Module dafür ausgelegt sind, Betriebsvorgänge auszuführen, die umfassen: Konfigurieren von Kontaktpunkten, die direkt auf einer komplexen Kurve angeordnet sind, in einer Anwenderschnittstelle zum Unterstützen einer von einem Anwender spezifizierten Bewegung; und in Reaktion auf die von dem Anwender spezifizierte Bewegung in Bezug auf einen jeweiligen Kontaktpunkt erfolgendes automatisches und ohne Anwendereingriff erfolgendes Anpassen der jeweiligen Kurve der komplexen Kurve derart, dass die jeweilige Kurve die Steigungs- und Krümmungskontinuität in Bezug auf die komplexe Kurve beibehält.
  13. System nach Anspruch 12, wobei die Kontaktpunkte entsprechend der von dem Anwender spezifizierten Bewegung durch die Bewegung erhalten bleiben; und/oder wobei das Anpassen derart durchgeführt wird, dass im Anschluss an die Bewegung der bei der Bewegung betroffene Kontaktpunkt nahe an einer Stelle der Maximalkrümmung der jeweiligen Kurve liegt.
DE102015005834.7A 2014-05-12 2015-05-07 Mischtechniken zur Kurvenanpassung Pending DE102015005834A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461992083P 2014-05-12 2014-05-12
US61/992,083 2014-05-12
US14/289,408 2014-05-28
US14/289,408 US9727987B2 (en) 2014-05-12 2014-05-28 Blending techniques for curve fitting

Publications (1)

Publication Number Publication Date
DE102015005834A1 true DE102015005834A1 (de) 2015-11-12

Family

ID=53489226

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015005834.7A Pending DE102015005834A1 (de) 2014-05-12 2015-05-07 Mischtechniken zur Kurvenanpassung

Country Status (4)

Country Link
US (1) US9727987B2 (de)
CN (1) CN105095560B (de)
DE (1) DE102015005834A1 (de)
GB (1) GB2528157A (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014205632A1 (en) * 2013-06-24 2014-12-31 Adobe Systems Incorporated Gravity point drawing method
US9501848B2 (en) 2013-09-03 2016-11-22 Adobe Systems Incorporated Fitting a parametric curve using maximum curvature
CN105046059B (zh) * 2015-06-24 2017-09-29 深圳市腾讯计算机系统有限公司 游戏运动轨迹确定方法及装置
CN105488827B (zh) * 2015-12-04 2018-01-26 网易(杭州)网络有限公司 一种闭合曲线的编辑方法及装置
CN106570864B (zh) * 2016-10-26 2019-08-16 中国科学院自动化研究所 基于几何误差优化的图像中二次曲线拟合方法
US11310121B2 (en) * 2017-08-22 2022-04-19 Moovila, Inc. Systems and methods for electron flow rendering and visualization correction
CN107831935B (zh) * 2017-09-27 2021-01-12 深圳市天英联合教育股份有限公司 基于拟合的触摸点轨迹追踪方法、装置及智能设备
US10810769B2 (en) 2017-11-27 2020-10-20 Adobe Inc. Continuous-curvature rational curves for drawing applications
US11188917B2 (en) * 2018-03-29 2021-11-30 Paypal, Inc. Systems and methods for compressing behavior data using semi-parametric or non-parametric models
EP3745240B1 (de) 2018-04-19 2022-08-31 Shenzhen Goodix Technology Co., Ltd. Koordinatenglättungsverfahren, berührungssteuerungschip und elektronisches endgerät
CN109035363B (zh) * 2018-07-05 2023-11-10 凌云光技术股份有限公司 一种快速迭代的线圆最优拟合方法
CN113033085B (zh) * 2021-03-11 2023-02-03 中山大学 基于粒子群优化与贝塞尔曲线的颗粒形状模拟方法及系统
KR20230059333A (ko) * 2021-10-26 2023-05-03 주식회사 엘엑스세미콘 터치 센싱 장치, 터치 센싱 장치를 포함하는 터치 센싱 디스플레이 시스템 및 터치 센싱 방법
CN114038203A (zh) * 2022-01-12 2022-02-11 成都四方伟业软件股份有限公司 一种交通仿真中两点路口车道的曲线拟合方法及装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940083A (en) * 1997-04-01 1999-08-17 Novell, Inc. Multi-curve rendering modification apparatus and method
US6268871B1 (en) 1997-04-30 2001-07-31 Silicon Graphics, Inc. Generating a curve for computer graphics through points residing on underlying geometries in a three dimensional space
US6067094A (en) * 1998-04-07 2000-05-23 Adobe Systems Incorporated Brushstroke envelopes
US6614456B1 (en) 2000-01-19 2003-09-02 Xerox Corporation Systems, methods and graphical user interfaces for controlling tone reproduction curves of image capture and forming devices
US6829380B1 (en) * 2000-04-28 2004-12-07 Advanced Micro Devices, Inc. Optimization of OPC design factors utilizing an advanced algorithm on a low voltage CD-SEM system
US6882958B2 (en) 2001-06-28 2005-04-19 National Instruments Corporation System and method for curve fitting using randomized techniques
US6641456B2 (en) 2001-10-18 2003-11-04 Jar Chen Wang Independent wheel arrangement for toy vehicle
EP1330000A1 (de) * 2002-12-06 2003-07-23 Agilent Technologies Inc Bestimmung des Arbeitspunktes für einen Laser mit Modenauswahl
EP1562138B1 (de) 2004-02-06 2009-08-19 Dassault Systèmes Methode für das Zeichnen einer Kurve in einem CAD-System
CN100576214C (zh) * 2006-12-13 2009-12-30 上海华虹Nec电子有限公司 二极管多种仿真器格式的spice模型建模方法
US7868887B1 (en) * 2007-10-18 2011-01-11 Adobe Systems Incorporated Rendering rational quadratic Bézier curves on a GPU
US20090141038A1 (en) 2007-11-02 2009-06-04 Newaskar Saket Prashant Bezier Curves for Low Memory Embedded Graphics Systems
US8102428B2 (en) * 2008-08-28 2012-01-24 Adobe Systems Incorporated Content-aware video stabilization
US8730241B2 (en) * 2008-09-08 2014-05-20 Fair Isaac Corporation Techniques for drawing curved edges in graphs
JP2012518519A (ja) * 2009-02-25 2012-08-16 モハメッド ラシュワン マーフォーズ カスタマイズされた整形外科用インプラント及び関連方法並びに変形可能な関節テンプレート
GB0903404D0 (en) * 2009-03-02 2009-04-08 Rolls Royce Plc Surface profile evaluation
US8515694B1 (en) * 2009-04-09 2013-08-20 The Boeing Company Methods and systems for gauging multiple hydrocarbon fuel mixtures
US8373702B2 (en) 2009-05-15 2013-02-12 Stmicroelectronics S.R.L. System and method for adaptive tessellation of a curve
US10146427B2 (en) * 2010-03-01 2018-12-04 Nri R&D Patent Licensing, Llc Curve-fitting approach to high definition touch pad (HDTP) parameter extraction
CN102147600B (zh) 2011-04-30 2012-09-19 上海交通大学 实时生成曲率连续路径的数控插补系统
US9286703B2 (en) * 2013-02-28 2016-03-15 Microsoft Technology Licensing, Llc Redrawing recent curve sections for real-time smoothing
US9501848B2 (en) 2013-09-03 2016-11-22 Adobe Systems Incorporated Fitting a parametric curve using maximum curvature
US9204319B2 (en) * 2014-04-08 2015-12-01 Cellco Partnership Estimating long term evolution network capacity and performance

Also Published As

Publication number Publication date
CN105095560A (zh) 2015-11-25
CN105095560B (zh) 2019-09-13
US20150325016A1 (en) 2015-11-12
GB2528157A (en) 2016-01-13
GB201507781D0 (en) 2015-06-17
US9727987B2 (en) 2017-08-08

Similar Documents

Publication Publication Date Title
DE102015005834A1 (de) Mischtechniken zur Kurvenanpassung
DE112019005750T5 (de) Erlernen des Erzeugens synthetischer Datensätze zum Trainieren neuronalerNetze
DE112017002799B4 (de) Verfahren und system zum generieren multimodaler digitaler bilder
Johannessen et al. On the similarities and differences between Classical Hierarchical, Truncated Hierarchical and LR B-splines
DE102014011900A1 (de) Fitten einer parametrischen Kurve unter Verwendung einer maximalen Krümmung
DE69927738T2 (de) Verfahren und Vorrichtung zum Editieren von skizzierten Kurven
Hennig et al. Adaptive mesh refinement strategies in isogeometric analysis—a computational comparison
DE102016011173A1 (de) Erstellen von Zusammenfassungen von Multimediadokumenten
DE102017009049A1 (de) Ermöglichen von Transformationen Skizze-zu-Gemälde
DE112020002042T5 (de) Erzeugen eines absichtserkennungsmodells auf grundlage von randomisierten absichtsvektornäherungen
DE102014002984A1 (de) Gestenvollendungspfadanzeige für gestenbasierte Tastaturen
DE102019001695A1 (de) Generieren von verbesserten Digitalbildern durch selektives Transformieren von Rasterbildern in Vektorzeichnungssegmente
DE112012005827T5 (de) Bearbeiten von Medien unter Verwendung von graphischer Darstellung der Medien
DE112014005866T5 (de) Verbesserung der plenoptischen Kameraauflösung
US11657255B2 (en) Controlling a neural network through intermediate latent spaces
DE112006002366T5 (de) Zwei-dimensionale Grafik zum Darstellen auf drei-dimensionalen Objekten
DE202013012510U1 (de) System zur Bereitstellung von Inhalten für einen Interessenpunkt
DE102019004670A1 (de) Automatisches Generieren und Anwenden von Grafiknutzerschnittstellenskalierungsrandbedingungen auf Grundlage von Gestaltungssemantiken
DE102013215438A1 (de) System zum Unterstützen einer flexiblen Farbzuweisung in komplexen Dokumenten
DE102017006563A1 (de) Bildpatchabgleich unter Nutzung eines wahrscheinlichkeitsbasierten Abtastens auf Grundlage einer Vorhersage
DE102018001136A1 (de) Interaktive Farbpalettenschnittstelle zum digitalen Malen
DE102020001437A1 (de) Verwendung kontextsensitiver Sensoren und multidimensionaler Gesteneingaben zum effizienten Generieren von nachbearbeiteten Digitalbildern
DE102017000469A1 (de) Nachbearbeiten von Kurven unter Verwendung von nichtgleichmäßig skalierten Kurven mit kubischer Krümmungsvariation
DE102014011901A1 (de) Auf einem Vorrichtungskontext basierende Benutzerschnittstelle
DE102019216979A1 (de) Oberflächenrekonstruktion für interaktive augmented reality

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: ADOBE INC., SAN JOSE, US

Free format text: FORMER OWNER: ADOBE SYSTEMS INCORPORATED, SAN JOSE, CALIF., US

R082 Change of representative

Representative=s name: MUELLER-BORE & PARTNER PATENTANWAELTE PARTG MB, DE

R016 Response to examination communication