-
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:
-
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:
-
Für 2D-Kurven (2D zweidimensional) kann Gleichung (6) folgendermaßen zu einem einfacheren Ausdruck umgeformt werden:
-
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:
-
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 t
c erreicht eine Kurve ihren Maximalkrümmungswert bei:
-
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:
-
Hierbei wird die Schreibung r
i,j zur Bezeichnung der Differenz von Positionen verwendet, das heißt für r
i,j = r
i – r
j. Die Beschleunigung kann unter Verwendung von Gleichungen (9) und (3) folgendermaßen berechnet werden:
-
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 t
c ermittelt werden, zu der die Maximalkrümmung in dem quadratischen Bézier-Ausdruck auftritt:
-
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:
-
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:
-
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:
-
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:
-
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:
-
Die Randbedingung der bekannten Randendpunkte r
0 und r
N-1 führt zu den nachfolgenden Gleichungen an den Rändern:
-
Zusammen ergibt dies die Matrixgleichung Ax
m = b, die für die unbekannten Vektoren
hinsichtlich der bekannten Randbedingungsvektoren b gelöst werden kann. Die Matrix hat Dreieckform:
-
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:
-
Es wird sodann eine Lösung der nachfolgenden Form angegeben:
-
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:
-
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/ω + γn)ηn (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 r
0, der frei variieren kann, wohingegen der Maximalkrümmungssteuer- bzw. Regelpunkt r
c und der Endpunkt r
1 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 = r
c,1 = |r
c,1| vorhanden ist. Der Punkt r
c ist am Ursprung des Koordinatensystems platziert. Die Lösung für die Maximalvertikalabweichung des Kurvenabschnittes mit Lage zwischen r
c und r
1 ist in der nachfolgenden Form für den ersten Endpunkt r
0 = (0, y
0) mit dem Zeitparameter t
c für den Maximalkrümmungspunkt durch nachfolgenden Ausdruck gegeben:
-
Das Vertikalausmaß des Kurvensegmentes ist gegeben durch:
-
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)
-
-
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 t
n = 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.
-
Der vorerwähnte Spezialfall für t
n = 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.
-
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:
-
Dies vereinfacht sich weiter zu:
-
Man gehe von zwei Punkten r
0 und r
1 aus, die entlang Einheitslängentangentenrichtungen T
0 und T
1 an den zwei Punkten gegeben sind. Man gehe zudem von bestimmten Krümmungen κ
0 und κ
1 bei r
0 und r
1 aus. Es können sodann die nachfolgenden beiden Ausdrücke angesetzt werden:
-
Durch Vereinfachung dieser Ausdrücke erhält man das Nachfolgende:
-
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 × T1)λ1 – (T0 × r10) = 0 (85) ( 3 / 2κ1)λ 2 / 1 – (T0 × T1)λ0 – (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 r
i auf das Segment r
–1 und r
i+1 projiziert. Es kann eine Bedingung dahingehend aufgestellt werden, dass der projizierte Punkt p(r
i) (wobei p(.) der Projektionsoperator ist) idealerweise auf den Mittelpunkt des Segmentes, das durch r_
1 und r
i+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 r
i+1, und sei b ⌄ die normierte Form hiervon. Sodann ist die Grundlinienmischung gegeben durch:
-
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:
-
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.