DE102015005834A1 - Mixing techniques for curve fitting - Google Patents

Mixing techniques for curve fitting 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
German (de)
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/en
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

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.Mapping techniques for curve fitting are described. In one or more implementations, an indication is received over three or more data points. A blending factor is calculated based on a spatial relationship of the three or more data points to each other. A curve is fitted to the three or more data points by mixing a plurality of curve fitting techniques using the calculated blend factor.

Description

Verwandte AnmeldungRelated Application

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.The present application claims non-provisional priority to US Provisional Patent Application No. 61 / 992,083 filed May 12, 2014 and entitled "Blending Techniques For Curve Fitting", the entire disclosure of which is hereby incorporated by reference ,

Hintergrundbackground

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.Curve fitting involves fitting a curve (for example, a path) between data points. It can be used for a variety of different purposes, such as specifying the correspondence of data points to one another, as well as for tables, drawing animation paths, printing temperatures, and the like.

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.However, conventional techniques used for curve fitting may deviate from the expectations of the users who use the functionality. For example, unexpected extrema, loops, and the like may be observed in curve fitting using conventional techniques between those data points that do not follow the "flow" the user expects from the data points shown. As a result, users of conventional techniques are often forced to manually correct the curve, which can be frustrating and inefficient.

ZusammenfassungSummary

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.Mapping techniques for curve fitting are described. In one or more implementations, an indication is received over three or more data points. A blending factor is calculated based on a spatial relationship of the three or more data points to each other. A curve is fitted to the three or more data points by mixing a plurality of curve fitting techniques using the calculated blend factor.

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.In one or more implementations, a system includes one or more modules that are at least partially implemented in hardware. The one or more modules are configured to perform operations including: receiving an indication to fit a curve to a plurality of data points, determining a spatial relationship of the plurality of data points to each other, and mixing a plurality of curve fitting techniques to perform the fitting of the curve , wherein the mixing uses at least one heuristic based on the determined spatial relationship.

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.In one or more implementations, a computer program product is implemented, in particular, as a signal, data stream, and / or one or more computer-readable storage media, in particular, including instructions stored thereon that, in response to execution by a computing device, cause the computing device to perform operations that involve operations Selecting which of a plurality of curve fitting techniques to use based on a spatial relationship of a plurality of data points to which a curve is to be fitted and fitting the curve to the plurality of data points using the selected one of the plurality of curve fitting techniques.

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.In one or more implementations, a system includes one or more modules that are at least partially implemented in hardware, wherein the one or more modules are configured to perform operations that include: configuring a user interface to facilitate direct editing of complex curves Configuring contact points located directly on the complex curve to support user specified motion; and automatically and without user intervention fitting a respective complex curve curve such that the respective curve retains the slope and curvature continuity with respect to the complex curve.

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.The present summary introduces in simplified form a selection of concepts that are further described below in the Detailed Description. The summary as such should nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

Kurzbeschreibung der ZeichnungBrief description of the drawing

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.The detailed description is based on the accompanying figures. In the figures, the leftmost / leftmost digits of a reference numeral identify / identify the figure in which the numeral first appears. The use of the same reference numerals in various contexts of the description and in the figures may indicate similar or identical objects. Entities depicted in the figures may refer to one or more entities, and therefore reference to a single or multiple forms of the entities may be interchangeable in the explanation.

1 ist eine Darstellung einer Umgebung bei einer beispielhaften Implementierung, die dafür betreibbar ist, die hier beschriebenen Techniken einzusetzen. 1 FIG. 10 is an illustration of an environment in an example implementation operable to employ the techniques described herein.

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. 2 FIG. 12 shows in more detail a system in an exemplary implementation for representing a merge module of FIG 1 along with examples of curve fitting techniques that can be used by a curve fitting module.

3 zeigt ein Verwendungsbeispiel einer Symmetrieheuristik zum Erzeugen eines Mischfaktors durch das Mischmodul zum Spezifizieren einer Verwendung von verschiedenen Kurvenanpassungstechniken. 3 FIG. 12 shows a usage example of a symmetry heuristic for generating a blending factor by the blending module to specify use of various curve fitting techniques.

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. 4 shows an example of a rearrangement of a spatial relationship of one of the data points of 3 and a consequent change of a blend factor used to fit a curve to the data points.

5 zeigt ein Verwendungsbeispiel einer Flachheitsheuristik zum Erzeugen eines Mischfaktors durch das Mischmodul zum Spezifizieren einer Verwendung von verschiedenen Kurvenanpassungstechniken. 5 FIG. 12 shows a usage example of flatness heuristics for generating a blend factor by the blend module for specifying use of various curve fitting techniques. FIG.

6 zeigt ein Verwendungsbeispiel einer Vorzeichenheuristik zum Erzeugen eines Mischfaktors durch das Mischmodul zum Spezifizieren einer Verwendung von verschiedenen Kurvenanpassungstechniken. 6 FIG. 12 shows a usage example of a sign heuristic for generating a blending factor by the blending module to specify use of various curve fitting techniques. FIG.

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. 7 FIG. 14 shows an example of a construction of an example of a composite curve in which a longer κ curve is constructed by composing plural square Bezier segments with G1 continuity.

8 zeigt ein Optimierungsschema, das gemäß Darstellung bei einem beispielhaften Algorithmus formuliert sein kann. 8th FIG. 10 shows an optimization scheme that may be formulated as shown in an example algorithm.

9 zeigt ein Beispiel eines lokalen Verhaltens eines Modus. 9 shows an example of a local behavior of a mode.

10 zeigt ein beispielhaftes System zum Lösen von κ-Kurven, die bis zu 10.000 beliebig erzeugte Punkte enthalten. 10 shows an exemplary system for solving κ curves containing up to 10,000 arbitrarily generated points.

11 zeigt ein Beispiel eines Vergleiches einer Spline-Kurve unter Verwendung der hier beschriebenen Techniken mit einer kubischen Catmull-Rom-Spline-Interpolationstechnik. 11 Figure 14 shows an example of a comparison of a spline curve using the techniques described herein with a cubic Catmull-Rom spline interpolation technique.

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. 12 FIG. 10 is a flow chart illustrating a procedure in an exemplary implementation that uses a blending factor to adjust a curve at three or more data points.

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. 13 FIG. 10 is a flowchart illustrating a procedure in an example implementation in which a plurality of curve fitting techniques are selected for fitting a curve to a plurality of data points.

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. 14 FIG. 12 shows an exemplary system with various components of an example device that may be implemented as a type of computing device as described and / or in connection with FIG 1 to 13 can be used to implement embodiments of the techniques described herein.

Detailbeschreibung detailed description

ÜbersichtOverview

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.Conventional techniques used to fit curves to data points may not imply sufficient intuitive interaction and ease of use. Further, such conventional techniques may also result in a curve that deviates from a user's expectations, for example, due to the occurrence of extremes, loops, and the like that do not occur in tracking the remaining data points, and therefore user expectations deviate when adjusting the curve.

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.Mapping techniques for curve fitting are described. In one or more implementations, blending techniques are employed to blend various curve fitting techniques to fit a curve to a plurality of data points, such as for tables, to plot animation paths, to print temperatures, and the like. For example, a computing device may receive an indication of successive data points by which to adjust a curve as a path between points. Heuristics are used to calculate a blend factor based on a spatial relationship of the data points to each other, such as symmetry, flatness, curvature, and the like.

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.This blending factor may then be used to select which of a plurality of curve fitting techniques to use to adjust the curve, as well as how to blend two or more of the techniques together. For example, the computing device may make an estimate using a quadratic Bézier curve fitting technique, for example, to estimate a tangent direction and a radius of curvature in the curve for the data points. These estimates may then serve as a basis for determining how to blend more curve fitting techniques together, such as a Bézier cubic curve fitting technique with a circular curve estimation technique. In this way, a mixture can be used for intuitively adjusting a curve, which will be further explained in connection with the following sections.

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.In the following explanations, an exemplary environment will first be described which may employ the mixing techniques described herein. Next, exemplary procedures that may be performed in the example environment as well as in other environments will be described. As a result, the performance of the example procedures is not limited to the example environment, and the example environment is not limited to the performance of the example procedures.

Beispielhafte UmgebungExemplary environment

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. 1 is a representation of an environment 100 in an example implementation operable to employ the techniques described herein. The illustrated environment 100 includes a computing device 102 which can be configured in a variety of ways.

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.The computing device 102 For example, it may be more configured as a desktop computer, laptop computer, mobile device (assuming a handheld configuration, such as a tablet or a mobile phone), and the like. As illustrated, for example, the computing device 102 configured in a mobile configuration as a tablet, which is a display device 104 having the functionality of a touch screen configured to detect touch points, such as those of the hand 106 of the user. This allows the computing device 102 from full-resource devices with significant memory and processor resources (e.g., personal computers, game consoles) to a low-resource device with limited memory and / or limited processing resources (e.g., mobile device). Although beyond that, a single computing device 102 shown, the computing device 102 represent a plurality of different devices, such as multiple servers used by a company to perform operations "over the cloud," as discussed below 14 is described.

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.The computing device 102 is shown as a curve fitting module 108 includes. The curve fitting module 108 provides functionality related to customizing one Curve to a plurality of data points 110 as well as functionality related to interacting (eg, modifying) the curve. Although the curve fitting module 108 as on the computing device 102 implemented, it may be implemented in a variety of ways, such as remotely via a service provider's web service, the "via cloud" over the network 112 is accessible between the service provider and the computing device 102 is distributed, and the like more.

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.In the example shown becomes a user interface 114 represented as having a plurality of data points 116 . 118 . 120 . 122 which are input via a gesture via the functionality of a touch-sensitive screen of the display device 104 is detected, for example, by using one or more capacitive sensors. This is done as part of a variety of different functionalities, such as specifying a path over which an object is to be animated, for specifying an edge in image processing, and the like. Other examples are also included, such as data points 110 received from a table, readings of a sensor, presentation software, and the like.

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.The curve fitting module 108 can then upon receipt of the data points 116 to 122 a curve 124 automatically and without user intervention based on the data points 116 to 122 to adjust. The curve fitting module 108 For example, it may be configured to have a plurality of different curve fitting techniques 126 quadratic Bézier curve techniques, cubic Bézier curve techniques and circular curve estimation techniques. Each of these curve fitting techniques 126 indicates given different spatial relationships of the data points 110 Strengths and weaknesses. Accordingly, the curve fitting module 108 a mixing module 128 which is a functionality for choosing which of the curve fitting techniques 116 for a given set of data points 110 should be used and how the majority of curve fitting techniques 126 should be mixed together to the final result of a curve 124 that is adapted to the points to reach. This allows the curve fitting module 108 be configured for a curve 124 which is visually pleasing and therefore by a user of the curve fitting module 108 "Expected", which will be further explained below and shown in the corresponding figure.

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. 2 shows a system 200 an exemplary implementation for more detailed representation of the mixing module 128 from 1 along with examples of curve fitting techniques 126 that of the curve fitting module 108 can be used. The curve fitting module 108 is shown as having inputs for specifying data points 110 receives and a curve 124 that matches these data points. To perform this adjustment, the curve fitting module 108 a mixing module 128 which is a functionality for choosing which (and even "how many") curve fitting techniques 126 to adjust the curve 124 should be used.

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.To support this choice, the mixing module 128 a heuristic module 202 which is a functionality for employing one or more heuristics to initiate the fitting of the curve. For example, the heuristics may be based on a spatial relationship of the data points 110 to each other to adjust the curve, such as on a specified order of the data points 110 and a relationship of each of the data points to previous and / or subsequent regions of data points. Examples of such heuristics include symmetry 204 , a flatness 206 and a sign 208 the use of which will be further described in the following figures.

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.The heuristics from the calculation by the heuristic module 202 can then be used to generate a blend factor that can specify which of the curve fitting techniques 126 When adjusting the curve, you can specify a weighting that fits each of the curve fitting techniques 126 should be assigned, and the like more. Examples of such curve fitting techniques 126 include a square Bézier curve 210 , a cubic Bézier curve 212 , a circular curve estimate 214 and the like, which will be further explained in the following examples.

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. 3 shows a usage example 300 a symmetry heuristic 204 for generating a mixing factor by the mixing module 128 for specifying a use of various of the curve fitting techniques 126 , First and second examples 302 . 304 of curves 306 . 308 with adaptation to the data points 310 . 312 . 314 . 316 are shown. In the first example 302 becomes a curve 306 to the data points 310 . 312 . 314 . 316 using the square Bézier curve 210 from 2 customized. tangents with controls or controls are at respective data points 310 to 316 for specifying scale factors for curve fitting between adjacent curves.

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.Drawn circles inside the curve 306 show a radius of curvature at respective data points 310 to 316 , Thus, as indicated by the circles, the curves that point between the data points 310 to 316 in the first example 302 are shown, curvatures that vary, ie, for example, decrease toward a center and then increase again when approaching another data point. Therefore, the curve can 306 deviate from the user's expectation of a circle.

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.In the second example 304 is a curve 308 also between the data points 310 to 316 however, in this case, a circular curve estimation technique 214 supports. The circular curve estimation technique 214 estimates a circle for each collection of three consecutive data points. Therefore, as shown, the radius of curvature follows at respective data points 310 to 316 (For example, inner circles) in addition to a circle through the curve 308 what can be used to achieve a desired result for a user, such as the likelihood that a circle is drawn in this example.

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.The heuristic module 202 of the mixing module 128 from 2 can use a variety of different heuristics to create a blending factor that can describe which of the curve fitting techniques 126 should be used, and even arrive at a weighting to be assigned to the various factors. As with the second example 204 For example, three data points may be shown 310 . 312 . 314 be defined in sequence. A baseline 318 can be between the first and third data points 310 . 314 be defined, as well as a relationship 320 of the second data point 312 (that is, the data point that is in succession between the other two data points 310 . 314 is defined) to the baseline 318 with use for defining the mixing factor. The relationship 320 For example, it can be defined based on a point that is approximately perpendicular to the baseline 318 to the second data point 312 is. This can be used to determine if the second data point 312 between the first and third data points 310 . 314 along the baseline 318 falls, if so, then the curve fitting technique 126 the circular curve estimate 214 that is, it will be given a higher weighting than the quadratic Bézier curve technique 210 assigned.

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.For example, weightings may be based on a closeness of the relationship 320 to a midpoint of the baseline 318 be used, for example, a greater weighting of the Kreiskurvenschätztechnik 214 is assigned the closer the midpoint is. Once you are "outside" the baseline 318 between the first and third data points 310 . 314 is, can be a greater weighting of another curve fitting technique 126 such as the square Bézier curve technique 210 , be assigned. An example of this is described below and shown in the corresponding figure.

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. 4 shows an example 400 rearranging a spatial relationship of one of the data points 312 from 3 and a corresponding change of a blend factor used to fit a curve to the data points 310 to 316 , As shown, a cursor control device (eg, a mouse) moves the data point in this example 310 from an original place, as in 3 is shown to a new location, as shown by a dashed arrow.

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.This leads to a new symmetric relationship between the data points 310 . 312 . 314 to the effect that the relationship 402 of the second data point 312 to the baseline 318 with formation between the first and third data points 310 . 314 "Outside" the points, that is not between the data points 310 . 314 along the baseline 318 is arranged. Therefore, the mixing module 128 get to a blending factor, the square Bézier curve technique 210 a greater weight than the circular curve estimation technique 214 in this example, to fit a curve according to the probable intuition of the user. This allows mixing to be done based on how well the data points are 310 to 316 approximate a circle by weighting the various curve fitting techniques.

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. 5 shows a usage example 500 a flat heuristic 206 for generating a mixing factor by the mixing module 128 for specifying the use of various curve fitting techniques 126 , In this example, the second data point becomes 312 towards the baseline 318 passing through the first and third data points 310 . 314 is defined, moved. This causes the curvature for the curve segments passing through the first, second, and third data points 310 to 312 and 312 to 314 is defined as "flattening out". For this purpose, the mixing module 128 the square Bézier curve 210 a bigger one Weighting, the closer the second data point 312 to the baseline 318 than the circular curve estimation technique 214 assign, for example, when a predefined threshold is exceeded. Thus, as easily from the explanation too 3 to 5 As can be seen, a plurality of heuristics are used simultaneously to provide a blending factor for a plurality of curve fitting techniques 126 to calculate.

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. 6 shows a usage example 600 the sign heuristic 208 for generating a mixing factor by the mixing module 128 for specifying the use of various curve fitting techniques 126 , The example shown 600 includes first, second and third data points 602 . 604 . 606 to which a curve 608 to be adjusted. In this example, the merge module examines 128 a curvature sign on adjacent data points to help calculate the mix factor.

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.As for the first and second data points 602 . 604 is shown, for example, a curvature sign 602 for the first data point 602 from a curvature sign of the second data point 602 respectively. 604 different. In other words, the curves bend in opposite directions. The mixing module 128 Therefore, in this case, it can produce a mixing factor that does not use a circular-curve estimation technique 214 which is why another technique is used, such as the Bézier quadrature curve technique 210 is selected. In this way, out of line falling curves can be obtained by using the circular curve estimation technique 214 can be avoided, thereby causing the curve 604 in this example, from the data points 602 to 606 "Drifts away" (swoop away). Further examples of curve fitting techniques will be found in the following explanation.

In der nachfolgenden Erläuterung werden Beispiele für Heuristiken und Kurvenanpassungstechniken detaillierter beschrieben.In the following discussion, examples of heuristics and curve fitting techniques will be described in more detail.

Quadratische Bézier-κ-KurvenSquare Bézier κ curves

Man betrachte eine quadratische Bézier-Kurve der nachfolgenden Form: r(t) = (1 – t)2r0 + 2t(1 – t)rm + t2r1 (1) Consider a square Bézier curve of the following form: r (t) = (1-t) 2 r 0 + 2t (1-t) r m + t 2 r 1 (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.The function r (t) specifies the coordinate trajectory of the curve with parameterization by the time parameter t, whose value varies between 0 and 1. Note that at t = 0, the curve passes exactly through the control point r 0 , while at t = 1 the curve passes through the control point r 1 . However, the curve generally does not pass through the middle control point r m .

Quadratisches Interpolieren von Bézier-KurvenSquare interpolation of Bézier curves

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.A quadratic Bézier three-point interpolation scheme may be created in which the location of the point r c is controlled to be on the curve at a position of maximum curvature. For example, for a set of data points r 0 , r c , r 1 , the curve starts at r 0 , passes through r c, and ends at r 1 . An arbitrary time value t c ε (0, 1) can be selected and resolved for the mean Bézier control point. Here and for the rest of the explanation, the spelling (0, 1) is used to represent an open interval from 0 to 1, that is, an interval that does not include the endpoints.

Auf Grundlage von Gleichung (1) kann daher der nachfolgende Ausdruck geschrieben werden. rc = (1 – tc)2r0 + 2tc(1 – tc)rm + t 2 / cr1 (2) Therefore, based on equation (1), the following expression can be written. r c = (1 - t c ) 2 r 0 + 2t c (1 - t c ) r m + t 2 / cr 1 (2)

Eine einfache Umformung der Terme von 2 ergibt:

Figure DE102015005834A1_0002
A simple transformation of the terms of 2 results:
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.From equation 3 it can be seen that a solution always exists for values with t c ε (0, 1). The degenerate cases of t c equal to 0 or 1 are straight line segments.

Bogenlänge arc length

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) The arc length s (t) of a curve is given by integrating the velocity of the curve over time as follows: s (t) = ∫ t / 0 | r '(u) | du (4)

Man beachte, dass die mit Strich versehene (primed) Schreibung Ableitungen in Bezug auf den Zeitparameter bezeichnet.Note that the primed spelling designates derivatives in terms of the time parameter.

Maximalkrümmungmaximum curvature

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) The curvature κ (t) of a continuous space curve is defined as the rate of change per unit arc length of the unit tangent vector along the curve. The unit tangent vector is given by: T (t) = r '(t) / | r' (t) | (5)

Per definitionem kann Nachfolgendes angegeben werden:

Figure DE102015005834A1_0003
By definition, the following can be specified:
Figure DE102015005834A1_0003

Für 2D-Kurven (2D zweidimensional) kann Gleichung (6) folgendermaßen zu einem einfacheren Ausdruck umgeformt werden:

Figure DE102015005834A1_0004
For 2D curves (2D two-dimensional), equation (6) can be converted to a simpler expression as follows:
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) Here, the operator designates the cross product operator (that is, given two given vectors p = [p x , p y ] and q = [q x , q y ], p x q = p x q y - p y q x ). The quadratic Bézier expression given in equation (1) can then be differentiated, yielding the following: r '(t) = v (t) = (2t - 2) r 0 + 2 (1 - 2t) r m + (2t) r 1 (8) r '' (t) = a (t) = 2r 0 - 4r m + 2r 1 (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) In this case, the variables v (t) and a (t) are used to denote the speed or the acceleration of the curve. The denominator indicates the "velocity" of the curve at time t. Note that for a quadratic Bézier expression, the acceleration term is constant. At time t = 0 and t = 1, the velocities of the curve are then given by: v 0 = 2 (r m - r 0 ) (10) v 1 = 2 (r 1 -r m ) (11)

Für eine quadratische Bézier-Kurve variiert die Geschwindigkeit folgendermaßen linear mit t: v(t) = v0 + ta0 (12) For a quadratic Bézier curve, the velocity varies linearly with t as follows: v (t) = v 0 + ta 0 (12)

Diese Werte können in den Ausdruck für die Krümmung (7) aufgenommen werden, was Nachfolgendes ergibt:

Figure DE102015005834A1_0005
These values can be included in the expression for the curvature (7), which gives the following:
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) Note that the numerator of expression (13) is constant. However, as described above, it is still desirable to place a control point at an approximate location where the curvature reaches its maximum value. This involves determining the time parameter for which the maximum curvature value is achieved. Since the counter in Expression (13) is constant, a maximum can be set function by minimizing the denominator. Equivalently, the square of the velocity can be minimized by differentiating it and setting it equal to 0: 0 = d / dt (v 0 + t c a 0 ) 2 = d / dt (v 0 * v 0 + 2t c v 0 * a 0 + a 0 * a 0 t 2 / c) = 2 (v 0 · a 0 + a 0 · a 0 t c ) (14)

Durch Lösen für tc erreicht eine Kurve ihren Maximalkrümmungswert bei:

Figure DE102015005834A1_0006
By solving for t c , a curve reaches its maximum curvature value at:
Figure DE102015005834A1_0006

MaximalkrümmungszeitMaximum curvature Time

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).Assume that there are three points for interpolation, namely r 0 , r c , r 1 , where r c is exactly at the point of maximum curvature along the square Bézier curve. From equation (3) it follows that the curve interpolates the three points exactly for any time value t c ε [0, 1]. Thus, a time value t c ε [0, 1] can be searched for which the quadratic Bézier curve reaches a local maximum curvature at time t c (that is, equation (15) is satisfied).

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
Using equation (10) and equation (3), the velocity vectors for the new curve can be expressed as follows:
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
Here, the writing r i, j is used to denote the difference of positions, that is, for r i, j = r i -r j . The acceleration can be calculated using equations (9) and (3) as follows:
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
This is constant along the curve. Finally, by combining equation (15) with the expressions for velocity (16) and acceleration (18), an expression can be determined for the time t c at which the maximum curvature occurs in the Bézier quadratic expression:
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) Equation (19) is a cubic equation: r 2/3 1.0t / c - c 3 r, r 0 · 1.0 t 2 / c + (2r 2 / c, 0 + r c, 0 · r 1.0) t c - 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.The solution can be done either by the cubic formula or by a numerical approach. For simplicity, a few iterations may be used by Halley's method, providing a cubic convergence to the solution. This gives a solution for a square Bézier three-point κ curve. In summary, when three arbitrary points r 0 , r c and r 1 are given, where r c is the location of the maximum curvature, equation (20) can be solved to calculate the maximum curvature time t c , whereupon a solution for the location of the middle Bézier control point r m using equation (3).

Beweis einer einzigen Lösung Proof of a single solution

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) Note that the cubic equation (20) has a single real root within the time domain of interest 0 ≤ t ≤ 1. This is because, as indicated by (12), a quadratic Bézier curve follows a trajectory equivalent to that of an object moving at a constant acceleration, which is known as a parabolic path. As such, only a single maximum curve may be present. This can be proved directly by examining the essence of the roots of cubic equations, which can be readily seen by rewriting the equation in the following way: f (t) = t 3 - 3λ cos (θ) t 2 + λ (2λ + cos (θ)) t - λ 2 = 0 (21)

Hierbei sind λ = |rc,0|/|r1,0| (22) und cos(θ) = r1,0·rc,0/(|rc,0||r1,0| (23) Here are λ = | r c, 0 | / | r 1,0 | (22) and cos (θ) = r 1.0 · r c, 0 / (| r c, 0 || r 1.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) The values of f (t) at the two endpoints for t = 0 and t = 1 are: f (0) = -λ 2 (24) and 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.By neglecting the trivial special case for λ = 0 and t c = 0, it is stated that the function f (t) is strictly negative at t = 0, and it is neglecting the special case with λ = 1, λ = 0 and t c = 1, indicated that this is strictly positive at t = 1. It follows that there is at least one real root lying between t = 0 and t = 1.

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) It can now be shown that only a single real root is present. The alternative situation with three real roots can be determined as follows. Assume that there are actually three real roots in the designated area. Then, the derivative function df (t) = dt or df (t) / dt must have two zeros or zeroes in that range, and the second derivative function d 2 f (t) / dt 2 must also disappear in the range. The latter condition implies: d 2 f (t) / dt 2 = 6 (t - λ cos (θ)) = 0 (26)

Dies impliziert wiederum: 0 ≤ τ ≤ 1 (27) This in turn implies: 0 ≤ τ ≤ 1 (27)

Hierbei ist die Variable t folgendermaßen definiert: τ = λcos(θ) (28) Here, the variable t is defined as follows: τ = λ 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
The requirement that the derivative function is 0, ie df (t) / dt = 3t 2 - 6λ cos (θ) t + λ (2λ + cos (θ)) = 0 (29) produces two roots, namely:
Figure DE102015005834A1_0010

Der Term unter der Quadratwurzel kann folgendermaßen umgeschrieben werden: –[τ(1 – τ) + 2λ2sin2(θ)]/3 (31) The term below the square root can be rewritten as follows: - [τ (1 - τ) + 2λ 2 sin 2 (θ)] / 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. Neglecting the aforementioned special cases, this is negative, with the implication that there are no real roots of the derivative function in the desired range of t. Therefore, the assumption of three real roots is not valid, so there is only one single root of the cubic equation (21) within the desired range.

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.Note also that at λ> 0 the cubic expression can not have a root at t = 0. Thus, as long as r 0 and r c are different, t c is different from 0. Similarly, when r 1 and r 2 are different, t c is different from 1 due to symmetry.

Zusammengesetzte quadratische Bézier-κ-KurvenComposite square Bézier κ curves

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.The above discussion has detailed how square Bezier three-punk κ curves are constructed. In this section, the discussion of how to connect multiple square Bezier segments together to form continuous C1-κ cues. 7 shows an example 700 FIG. 5 shows the construction of an example of a composite curve in which a longer κ curve is built up by composing a plurality of square Bezier segments with G1 continuity.

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
For N maximum curvature points there are N square Bézier curve segments and N corresponding boundary condition equations. To simplify the following equations, the Bézier quadratic components are defined as follows:
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.Here, t ci denotes the maximum curvature time for each of the N specific maximum curvature locations, each of which is indexed i.

Für jede quadratische Bézier-Kurve können die gekoppelten Gleichungen folgendermaßen geschrieben werden:

Figure DE102015005834A1_0012
For each quadratic Bézier curve, the coupled equations can be written as follows:
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
G1 continuity requires that the tangent directions and magnitudes (velocities) at the transition point between curve segments be continuous. This condition implies that the Bézier endpoints are midway between their neighboring middle control points:
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
To formulate the solution, the mean control points are solved, from which the solution for the Bézier end points can then be derived. Using equations 33 and 34, this approach to control points yields the following recurve relationship:
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
The boundary condition of the known boundary end points r 0 and r N-1 leads to the following equations at the edges:
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
Together, this yields the matrix equation Ax m = b, which for the unknown vectors
Figure DE102015005834A1_0017
with regard to the known boundary condition vectors b can be solved. The matrix has triangle shape:
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.Note that with the exception of the first and last rows, the sum of all elements of a row is equal to 1, which follows from the Completeness Editor α n + β n + γ n = 1. In addition, the diagonal elements which are equivalent to (1 + β n ) / 2 are in a range of 1/2 to 3/4. The maximum value of 3/4 occurs when the corresponding maximum curvature time is 1/2. Furthermore, the matrix is diagonally dominant, and if none of the time parameters have the values 0 or 1, then the matrix is strictly diagonally dominant. In these cases, the matrix is known to be non-singular (det (A) ≠ 0) due to the Levy-Desplanques theorem.

Algorithmus für quadratische κ-KurvenAlgorithm for quadratic κ-curves

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.The system described above is not linear in nature. Note that the construction of the matrix A and the right side vector b starts from knowing the maximum curvature times for each of the maximum curvature points. Calculating the maximum curvature times t ci implies knowledge of the locations of the Bézier endpoints r i that are the solutions to the matrix system. This non-linear dependence prevents the formulation of an analytical solution. Instead, an optimization scheme may be formulated as in the example algorithm 800 who in 8th is shown.

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.The analysis begins with an estimate of the initial positions r i of the curve by averaging the adjacent maximum curvature points. The inner loop relates to updating estimates for the maximum crawl times, followed by updating the coordinate positions by solving the above-described matrix equation. The subroutine "computeMaxCurvatureTime" solves the cubic equation (20). An intuitive understanding is that time estimates can be improved and then used to create improved locations. These locations can then be used to recalculate a new set of time estimates, and so on, until the system reaches convergence. A variety of different convergence criteria may be used, such as when the time values t ci remain nearly unchanged during successive iterations.

Lokalität für kollineare Randbedingungspunkte Locality for collinear boundary conditions

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.The above-described quadratic Bézier formulation implies a global solution. For such a solution, as the number of points on the curve increases, the corresponding calculation grows. Furthermore, the global nature of the solution suggests that local changes to the interpolation points have global effects on the shape of the curve. Such behavior may be undesirable from both a performance and a conceptual perspective in some cases. In practice, the solutions are found to be stable and local, with non-local effects disappearing as one moves further along the path from Bézier segment to Bézier segment. In this section, a theoretical explanation for these observations is provided by focusing on a particular set of points that exhibit oscillatory behavior in a particular case, but in a more common case supporting exponentially damped behavior.

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
This character of propagation of a change on the curve can be examined by considering the specific example of a curve formed by a set of collinear κ points, using the notation κ points to designate the maximum points of curvature. These points may be chosen such that they all lie along a horizontal line with the vertical axis coordinate value equal to zero. In the same way, the last curve end point is also limited. For example, imagine a long chain of maximum curvature points that looks at the behavior of a section that does not contain an endpoint. The κ points are then of the following form:
Figure DE102015005834A1_0019

Es wird sodann eine Lösung der nachfolgenden Form angegeben:

Figure DE102015005834A1_0020
There is then given a solution of the following form:
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
Such a solution has an exponentially decreasing amplitude for a positive λ. For an ω equal to 1, the behavior is oscillatory. This oscillatory behavior is limited to a special arrangement of the κ-point curve. From (35) it follows that when subtracting the same equation with an index n decremented by 1 and applying the completeness relations, the following applies:
Figure DE102015005834A1_0021

Hierbei werden die nachfolgenden Definitionen verwendet: δζn = ζn – ζn-1 (44) δηn = ηn – ηn-1 (45) The following definitions are used here: δζ ζ 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) The resulting oscillatory decreasing solution for n leads to the following form for δη n : δη n = η n (1 + ω) / ω (46)

Dies bedeutet gleichwertig für δηn+1: δηn+1 = –ηn(1 + ω) (47) This is equivalent to δη n + 1 : δη n + 1 = -η n (1 + ω) (47)

Damit gilt: ηn = ½(1 + ω)(αn/ω + γnn (48) Thus: η n = ½ (1 + ω) (α n / ω + γ n ) η n (48)

Hierdurch gelangt man zur nachfolgenden Bedingung: 1 = ½(1 + ω)(αn/ω + γn) (49) This leads to the following condition: 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) This is true when there is an oscillatory or oscillatory decreasing solution to the collinear κ-point problem. For the particular oscillatory case where the magnitude of the vertical component of the Bézier control points oscillates above and below the line of constant amplitude κ points, the "decrease factor" ω is equal to 1, resulting in the following requirement: Oscillation: 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) This is true for the two values of the corresponding maximum curvature times, that is for t = 0 and t = 1. The solution t = 0 is consistent with the cubic equation of time, which constrains the boundary conditions to points of maximum curvature. In this case, the cubic equation reduces to the following: 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) This applies if the maximum curvature point lies exactly at the point of its end point with t = 0. In contrast, the solution t = 1 leads to the cubic equation: 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.This has a real solution for λ only for the special case λ = 0 and θ = 0. In this case, the maximum curvature point lies exactly at the end point with 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
The amplitude of the oscillation is limited by the properties of the square Bézier curve. Consider a square Bézier curve segment with the end point r 0 , which can vary freely, whereas the maximum curvature control point r c and the end point r 1 are both fixed. Without limiting the generality, the latter points can be placed on a horizontal line, with a spacing between them of d = r c, 1 = | r c, 1 | is available. The point r c is placed at the origin of the coordinate system. The solution for the maximum vertical deviation of the curve section with position between r c and r 1 is given in the following form for the first end point r 0 = (0, y 0 ) with the time parameter t c for the maximum curvature point by the following expression:
Figure DE102015005834A1_0022

Das Vertikalausmaß des Kurvensegmentes ist gegeben durch:

Figure DE102015005834A1_0023
The vertical extent of the curve segment is given by:
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.This results in a linear scaling with the point spacing distance d. This expression is maximized by the choice y 0 = 1, t c = 1/2 and the maximum vertical deviation δy max = (1/8) d. The maximum vertical amplitude η max of the mean Bézier control point is given as η max = (1/2) d. In other words, the "vertical jitter" of the maximum curve segment in a movement of the first endpoint is limited by one-eighth of the spacing d, the amplitude of which is a quarter of the maximum vertical amplitude of the Bézier control point. This is a result for a single square Bézier curve. When multiple curves are added to such a path, this maximum "jitter" is generally reduced, usually in an exponentially decreasing manner, as indicated in the collinear constraint point example.

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) Again, given the general oscillatory decreasing solution, after expressing α n and γ n explicitly as functions of the corresponding time parameters, the following equation relating t n to ω is determined: 1 = ½ (1 + ω) ((1 - t n ) 2 ω + t 2 / n) (55)

Diese hat die nachfolgende Lösung: tn = (1 – √(ω))/(1 + ω) (56) This has the following solution: t n = (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. The time parameter does not depend on the point index and is therefore constant along the curve, except for endpoints that are not included here. The requirement 0 ≤ t n ≤ 1 restricts ω to the position between 0 and 1. The value of interest for t is t = 1/2, which for a value of ω = 3 - 2√ (2) = 0.171573 occurs. In this case, the Bézier control point vertical amplitude decreases exponentially as the dot index increases with approximately (0.171573 ...) n = exp (-1.76275n). In general, the closer t is to 0, the slower the rate of decrease, and the closer t is to 1, the greater this 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) The horizontal components are now determined to understand the dependence of the solution on the point spacing. The focus here is on the situation of an equal horizontal spacing δζ of the mean Bézier curve control or control points: δζ n = δζ n + 1 = δζ n (57)

Dies führt zu:

Figure DE102015005834A1_0024
This leads to:
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
The last term describes the deviation of the horizontal position of the middle Bézier control point relative to the associated κ point thereof. The oscillatory solution with t n = 0, ω = 1 therefore has the Bézier control points with spacing midway between the κ points, that is, the offset is half the κ point spacing.
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
The aforementioned special case for t n = 1/2 does not lead to an offset. For the exponentially damped case, the middle Bézier control points lie at the same horizontal location as the maximum curvature boundary conditions.
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.Therefore, an exemplary curve is described which supports an exponential decrease in the curve amplitudes, as well as a pathological case of the constant limited amplitude oscillation. While the quadratic Bézier formulation leads to a global solution with the potential for nonlocal propagation of curve changes, in practice local curve changes are severely attenuated, such as with exponential decay with collinear arrangement of the points. As in example 900 from 9 can be seen, the visual behavior of the model is by nature comparatively local. A local change in the curve tends to affect the curve in a limited local area.

Beispielhafte ImplementierungExemplary implementation

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) A variety of different cubic approaches may be used to solve equation (20), such as a direct cubic approach such as the Halley method. In practice, Halley's method offers the best level of performance as well as the best stability. This is partly due to the ability to fill this method with an initially guessed value close to the true solution, as follows: t c = | r c, 0 | / (| r c, 0 | + | r c, 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.The observation is that the interpolating quadratic expression closely follows the polyline that runs through r 0 , r c , r 1 . For example, the initial rate value may even be exact if the three points are collinear. In one or more implementations, the iterations of Halley's method are performed until the change of t c falls below 1.0e-6.

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. In order to solve the matrix system A, a basic implementation of a sequential triangular approach is used which has a known transit time of O (n) as well as a known memory of O (n). For the convergence criteria for algorithm 1 in example 800 from 8th For example, iterations are performed until the change in the calculated maximum curve times t ci falls below 1.0e-6 for each square Bezier segment, for example.

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.In the example 1000 from 10 For example, an exemplary system for solving κ curves is shown having up to 10,000 arbitrarily generated points in the interval [0, 1]. Note that the overall solution time is in the sub-second range and that the power scaling is nearly linear in terms of the size of the curve due to the convergence rate and the efficiency of the chosen matrix approach.

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. 11 shows an example 1100 a comparison of a spline curve using the techniques described herein with a cubic Catmull-Rom spline interpolation method [Catmull and Rom 1974]. The choice of parameterization may affect the quality of the results of the Catmull-Rom model. 11 FIG. 12 shows a configuration in which a default selection of a voltage behaves unfavorably and generates loops and shivers (dotted lines) between the control vertices, whereas the techniques described here produce smooth and intuitive results (shown in a solid line). Although a user can globally adjust the voltage parameters to avoid these loops and shivers in the conventional art, this reduces the fairness of the curve by concentrating a high curvature at the control vertices. A user may also separately adjust the voltage at each vertex to produce better results, but this implies manual tuning.

Ästhetische kubische G2-Bézier-KurvenAesthetic cubic G2-Bézier curves

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.The foregoing sections describe techniques that can be used to formulate continuous quadratic C1-κ curves. Although the solution for square κ curves has an elegant shape, it is often desirable to achieve higher order continuity. For example, for CAD applications, G2 continuity is usually considered a minimum requirement. For two-dimensional drawing applications, however, such continuity is not necessary. Furthermore, it is known that the smoothness of higher order does not always lead to more aesthetic curves.

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.In the case of two-dimensional character systems, the aesthetics and the controllability of the curve representation play a greater role than the overall continuity. Unfortunately, there is not a good known measure of fairness with which to evaluate curves, though proposals have been made for this, such as minimizing the overall variation in curvature. Minimizing curve variation results in overall rounded or circular curves that do not necessarily meet the expectations of an artist. Note that the square κ curves, although producing pleasing curves, may have a rapidly changing curvature. Therefore, a curve having higher order continuity (ie G2) can be tracked with less variation in curvature to produce a more visually pleasing curve model.

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.For this purpose, cubic Bézier curves can be used. Cubic Bézier curves are the basis for many curve modeling systems and are presented in standard rendering systems. There are tons of literature for efficiently rendering cubic Bézier curves on a graphics processing unit. However, as shown below, the mathematical requirements for such curves may be complicated in the analysis. To overcome these problems, techniques for solving the problem and demonstrating that under most conditions G2 curves can be generated which are both aesthetic and have a low curvature variation are described below, the maximum curvatures being close to the control and detection angles Control Vertices are located.

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) A cubic Bézier curve has the following form: r (t) = (1-t) 3 r 0 + 3t (1-t) 2 r m0 + 3t 2 (1-t) r m1 + t 3 r 1 (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) The first and second derivations of this are as follows: υ (t) = -3 (t 2 - 2t + 1) r 0 + (9t 2 - 12t + 3) r m - (9t 2 + t) r n + 3t 2 r 1 (64) a (t) = 6 (1-t) r 0 + 6 (3t-2) r m + 6 (1-3t) r n + 6tr 1 (65) a '(t) = -6r 0 - m 12r - 12r n + 6r 1 (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) The speeds and the acceleration at the beginning and the end can be expressed as follows: υ (0) = 3 (r m - r 0 ) (67) υ (1) = 3 (r 1 -r n ) (68) a (0) = 6 (r 0 - 2 r m + r n ) (69) a (1) = 6 (r 1 - 2 r n + r m ) (70)

Die Krümmungen bei t = 0 und t = 1 lauten folgendermaßen:

Figure DE102015005834A1_0027
The curvatures at t = 0 and t = 1 are as follows:
Figure DE102015005834A1_0027

Dies vereinfacht sich weiter zu:

Figure DE102015005834A1_0028
This is further simplified to:
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
Assume two points r 0 and r 1 given along unit longitudinal tangent directions T 0 and T 1 at the two points. In addition, assume certain curvatures κ 0 and κ 1 at r 0 and r 1 . Then the following two expressions can be used:
Figure DE102015005834A1_0029
Figure DE102015005834A1_0030

Durch Vereinfachung dieser Ausdrücke erhält man das Nachfolgende:

Figure DE102015005834A1_0031
By simplifying these expressions, we obtain the following:
Figure DE102015005834A1_0031

Dies vereinfacht sich weiter zu: T0 × r0n = 3 / 2κ0λ 2 / 0 (79) T1 × r1m = 3 / 2κ1λ 2 / 1 (80) This is further simplified to: T 0 × r 0n = 3 / 2κ 0 λ 2/0 (79) T 1 × r 1m = 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) It follows: T 0 × (r 0 - (r 1 + λ 1 T 1 )) = 3 / 2κ 0 λ 2/0 (81) T 1 × (r 1 - (r 0 + λ 0 T 0 )) = 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) A multiplication provides: T 0 × r 01 - λ 1 T 0 × T 1 = 3 / 2κ 0 λ 2/0 (83) T 1 × r 100 T 1 × T 0 = 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) Finally: (3 / 2κ 0 ) λ 2/0 - (T 0 × T 1 ) λ 1 - (T 0 × r 10 ) = 0 (85) (3 / 2κ 1 ) λ 2/1 - (T 0 × T 1 ) λ 0 - (T 1 × r 10 ) = 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) The appropriate tangent scaling factors λ 0 and λ 1 can now be solved by first solving for λ 1 based on λ 0 and then using that value to arrive at a fourth-order polynomial residue (depressed polynomial): (α 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) Where: α 0 = 3 / 2κ 0 (88) α 1 = -T 0 × T 1 (89) α 2 = -T 0 × r 10 (90) β 0 = 3 / 2κ 1 (91) β 1 = -T 0 × T 1 (92) β 2 = -T 1 × r 10 (93)

HeuristiksystemtechnikenHeuristic system techniques

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.
A pragmatic approach can be envisaged for solving a cubic G2 curve that has a curvature concentrated at the control points. It is possible to formalize a large nonlinear optimization that simultaneously seeks a solution for all the free parameters that satisfy the equation systems (85) and (86). This approach is expensive and the search space is comparatively large. Instead, a heuristic may be used to estimate the tangent directions and curvatures for the ends of the cubic Bézier curves.
0 tion becomes. So there may be up to four solutions that fulfill the G2 property. Another approach for recognizing this is that equations (85) and (86) form parabolas and that a parsing of these parabolas is sought.
gene vectors is positive. This leads to a problem of determining which of the valid solutions to choose and what to do in particular in a case where there is no solution.

Tangenten- und KrümmungszuweisungTangent and curvature assignment

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.A simple heuristic may be used to match target curves and tangents to the sequence of control points p i over the radius of the circle. For non-circular points, the quadratic κ-curvature estimation is used. Points that lie in between receive a hybrid of the two curvature values. The process of blending curvature estimates can be termed fairing because it improves the aesthetic appearance of the result.

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. To accomplish this, a single blending factor (that is, a blend term) can be calculated, which is the product of three separate blending factors, such as a baseline blend, an angle blend, and a bend blend. Each of these factors defines a condition that, in turn, defines where the points in a circular pattern are sufficient to use the circular curvature tangents and curvatures. For each term, the mixing factor is one when the condition is met. Since the final mix factor is a product of all three, the circle estimates are used if all three conditions are sufficiently met. Moreover, a usage control may be a support for each mix factor by raising the factors to a power γ i . A user can adapt these factors to produce different mixtures. Examples of these conditions are described in detail below.

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
For the baseline mixing factor, each point r i is projected onto the segment r -1 and r i + 1 . A condition may be established that the projected point p (r i ) (where p (.) Is the projection operator) is ideally projected onto the midpoint of the segment given by r_ 1 and r i + 1 . If this is so, then the mixed term is 1. If, conversely, the projected point is outside the segment (or at the end points of the segment), then the mixed term drops to zero. Since b is the baseline vector from r -1 to r i + 1 , and let b ⌄ be the normalized form thereof. Then the baseline mixture is given by:
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 The next term to consider is the angle term. In an ideal configuration, the angle between the two vectors would be r i r -1 and r i r i + 1 and exactly equal to 90 °. They are: V ^ 0 = r i-1 r i / | r i-1 r i || V ^ 1 = r i r i + 1 / | r i r i + 1

Der Winkelmischterm wird: angleBlend = (max(V ^0 × V ^1, 0))γ1 (95) The angle mix term becomes: 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
With regard to the curve blending term, it has been found in practice that the use of the circular curvature estimation at a given control point makes sense if the adjacent control points have similar circular curvatures. In other words, it should be a sequence of points along the circle. A curvature blending function between two sets of curvatures, which is symmetric, can be defined as follows:
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.Let ǩ i-1 , ǩ i , ǩ i + 1 , the circular curvature estimates at r i-1 , r i, and r i + 1, respectively. Given the final combined curved blending function given by the product: curvatureBlend (ǩ i-1 , ǩ i ) and curvatureBlend (ǩ i , ǩ i + 1 ). Note that if the circular curvatures do not fit on either side of the control point r i , then the combined angle mixing term is equal to zero.

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.All three mixed terms can be combined, resulting in a product of four mixing functions. For example, a variety of different choices may be made, such as γ 0 = 1, γ 1 = 6 and γ 2 = 1, but with other choices depending on the taste of the user and how much the user desires Curves of a more circular rounded shape follow, are possible.

Tangenten- und KrümmungszuweisungTangent and curvature assignment

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.After target curvatures and tangent directions are assigned at each control point, the tangent sizes λ 0 , λ 1 > 0 are solved using Equation (87). As this is a is residual-polynomial-based (depressed) biquadratic expression, the Ferrari solution can be used directly to provide an analytical solution to the real roots. For each of the real roots, solutions are pruned, where either λ 0 <0 or λ 1 <0. Among the remaining solutions, the solution with the largest smallest λ is selected, that is, solutions are preferred in which λ factors are removed from 0.

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.In some cases, however, an allowable solution can not be found, such as when the tangents are in a "C" configuration, eg, when the resulting curve has a "C" shape. The alternative "S" configuration leads to valid solutions. In the "C" configuration, however, G2 continuity is lost. One technique involves finding a solution that minimizes the deviation of the bends at the two endpoints. This is done directly by minimizing the sum of the squared distances from the desired curvatures, where the solution curvatures satisfy the inequality boundary condition λ 0 , λ 1 > 0. In practice, however, running this optimization leads to a solution in which λ 0 or λ 1 is equal to zero.

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.In another technique, the λ scale factor is fixed at the end of the curve with the smallest curvature size. One or more implementations use one third of the baseline length between the two control points. If the λ-factor is given at one end of the curve, it can be released by directly specifying G2 at the end of the curve that has a greater curvature. This approach hides the G2 discontinuity at the least noticeable end of the curve. This approach is a reasonable choice, as the failures are usually a result of specifying a large curvature at one end of the curve and a small curvature at the other.

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.As has been explained, it may not always be possible to have G2 continuity for a specified set of tangents, bends, and control points. In addition, there may be a problem that not all G2 solutions are aesthetic and desirable. For example, in some "C" curve configurations, the resulting curves satisfy G2, but the change in curvature at one end is so abrupt that the result approaches a humpy behavior, whereas the resulting curve approaches the oscillating circle near each Endpoint should follow.

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).Techniques may be employed in one or more implementations that detect such cases and do not allow the λ scale factors to fall below one above the radius of curvature at any end of the curve. When such a case occurs, the curvature is clamped and the λ scaling term is soled to satisfy G2 at the other end of the curve.

Beispielhafte ProzedurenExample procedures

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.The following discussion describes curve techniques that can be used using the systems and devices described above. Aspects of each of the procedures may be implemented in hardware, firmware or software or even a combination thereof. The procedures are presented as a set of blocks that specify operations performed by one or more devices, not necessarily limited to those instructions shown to perform the operations by the respective blocks. In sections of the following discussion will be on 1 to 11 directed.

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. 12 shows a procedure 1200 in an example implementation where a blending factor is used to fit a curve to three or more data points. An indication of three or more data points is received (block 1202 ). The indication may for example be received by a user through an interaction with a user interface, it may be determined from a table, or it may be obtained remotely over a network, and the like.

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.A blending factor is calculated based on a spatial relationship of the three or more data points to each other (Block 1204 ). The three or more data points may, for example, be arranged in a sequence. This sequence and the spatial relationship of the data points to each other can be used to calculate a mix factor, for example, based on one or more heuristics as described above. Other examples that are based on a spatial relationship alone and not on the sequence are also included.

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. A curve is fitted to the three or more data points by mixing a plurality of curve fitting techniques using the calculated mixing factor (Block 1206 ). For the example described above, this means that the blending factor can be used to assign weights to different curve fitting techniques and hence curve fitting, and that the techniques used to make this fit can be based, at least in part, on the spatial relationship of the data points.

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. 13 shows a procedure 1300 in an example implementation where a plurality of curve fitting techniques are selected for fitting a curve to a plurality of data points. A choice is made as to which of a plurality of curve fitting techniques to use, based on a spatial relationship of a plurality of data points to which a curve is to be fitted (block 1302 ). The curve fitting module 108 For example, the plurality of data points 110 to determine a curve fitting technique that is likely to result in a curve that matches the desired output of a user. This may be done based on a spatial relationship of the data points, a source of the data points (eg, user input, table, data type), and the like.

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.The curve is fitted to the plurality of data points using the selected one of the plurality of curve fitting techniques (Block 1304 ). For the previous example, this means that the chosen curve fitting techniques can be used to form the curve. The choice may also include a choice of more than one curve fitting technique, so in such a case these techniques may be mixed together to obtain a final result. A variety of other examples are also included without departing from the spirit and scope thereof.

Beispielhaftes System und VorrichtungExemplary system and device

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. 14 generally indicates 1400 an exemplary system that includes an example computing device 1402 which represents one or more computing systems, and / or devices that can implement the various techniques described herein. This is done by including the curve fitting module 108 which may be configured to fit and / or manipulate curves incorporating data points. The computing device 1402 For example, a server of a service provider, a device associated with a client (eg, a client device), an on-chip system, and / or any other suitable computing device or computing system may be.

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.The exemplary computing device 1402 as shown includes a processing system 1404 , one or more computer-readable media 1406 and one or more I / O interfaces 1408 that are communicatively coupled with each other. Although not shown, the computing device may 1402 further include a system bus or other data and command transfer system that couples the various components together. A system bus may include any or a combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and / or a processor or local bus using any of a variety of architectures. A variety of such examples are also included, such as control and data lines.

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.The processing system 1404 provides functionality to perform one or more operations using hardware. Accordingly, the processing system 1404 such that it is a hardware element 1410 which may be more configured as processors, functional blocks, and the like. This may include an implementation in hardware as an application specific integrated circuit or as another logic circuit with formation using one or more semiconductors. The hardware elements 1410 are not limited to materials of which they are formed or to the processing mechanisms used herein. For example, processors may be formed of a semiconductor or semiconductors and / or transistors (eg, electronic integrated circuits (ICs)). In this regard, processor executable instructions may be electronically executable instructions.

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.The computer-readable storage media 1406 are shown as having a memory / shelf 1412 include. The storage / storage 1412 provides storage / storage capacity associated with one or more computer-readable media. The storage / storage component 1412 For example, volatile media (such as a random access memory (RAM)) and / or nonvolatile media (such as For example, a read only memory (ROM), a flash memory, optical disks, magnetic disks, and the like). The storage / storage component 1412 may include fixed media (eg, RAM, ROM, a hard disk drive, and the like) as well as removable media (eg, a flash memory, a removable drive, an optical disk, and the like). The computer-readable media 1406 can be configured in a variety of other ways as described below.

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.An input / output interface or input / output interfaces 1408 represent a functionality that allows a user to submit commands and information to the computing device 1402 and also allow information to be presented to the user and / or other components or devices using various input / output devices. Examples of input devices include a keyboard, a cursor control device (eg, a mouse), a microphone, a scanner, touch-sensitive functionality (eg, capacitive or other sensors configured to detect physical motion), a camera (e.g. visible or invisible wavelengths, such as infrared frequencies, may be used to detect movements, such as hand gestures, that do not imply touch), and the like. Examples of output devices include a display device (eg, a monitor or projector), speakers, a printer, a network card, a tactile response device, and the like. The computing device 1402 may therefore be configured in a variety of ways, which will be described below, to assist user interaction.

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.Various techniques have been described in the general context of software, hardware elements or program modules. In general, such modules include routines, programs, objects, elements, components, data structures, and the like that perform specific tasks or implement specific abstract data types. The terms "module," "functionality," and "component" as used herein refer to software, firmware, hardware, or a combination thereof. The features of the techniques described herein are platform independent, which means that the techniques are compatible with a variety of conventional computing platforms a variety of processors can be implemented.

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.An implementation of the above-described modules and techniques may be stored on or transmitted through a form of computer-readable media. The computer readable media may include a variety of media to which the computing device 1402 can be accessed. By way of example, and not limitation, computer-readable media may include "computer-readable storage media" and "computer-readable signal media."

„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."Computer-readable storage media" may refer to media and / or devices that enable persistent and / or non-transient storage of information, as opposed to mere transmission, carrier waves or signals per se. Computer readable storage media refers to non-signal carrier media. The computer readable storage media include hardware, such as volatile and nonvolatile, removable and non-removable media, and / or memory devices implemented in a method or technology capable of storing information, such as computer readable instructions, data structures, program modules, logical elements. Circuits or other data. Include, examples of computer readable storage media, among others, RAM, ROM, EEPROM, flash memory or other memory technology 'CD-ROM, DVD (Digital Versatile Disk) or other optical storage, hard disks, magnetic tapes, magnetic tapes, magnetic disk storage or other magnetic storage devices or other storage device, physical media or object for manufacturing capable of storing the desired information and being accessible by a computer.

„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."Computer-readable signal media" may refer to a signal carrying medium that is configured to direct instructions to the computing device hardware 1402 for example, to transmit over a network. Signal media may typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanisms. Signal media also contain any information distribution media. The term "modulated data signal" refers to a signal that has one or more characteristics that are chosen or changed to encode information in the signal. By way of example, and not limitation, communication media includes wired media, such as a wired network or a direct wired connection, and wireless media, such as acoustic, wireless, infrared, and other wireless media.

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. As described above, hardware elements 1410 and computer-readable media 1406 Modules, programmable device logic, and / or fixed device logic with implementation in hardware form, which in some embodiments may be used to implement at least some aspects of the techniques described herein, such as to perform one or more instructions. Hardware may include components of an integrated circuit or on-chip system, an application specific integrated circuit (ASIC), field programmable gate array (FPGA), complex programmable logic device (CPLD) and other implementations in silicon or other hardware. In this regard, hardware may operate as a processing device that performs program tasks defined by instructions and / or hardware embodied logic, as well as hardware used to store instructions for execution, such as the computer readable ones described above storage media.

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.Combinations of the foregoing may also be used to implement various of the techniques described herein. Accordingly, software, hardware, or executable modules may be embodied as one or more instructions and / or embodying logic in any form of computer-readable storage media and / or by one or more hardware elements 1410 be implemented. The computing device 1402 may be configured to implement certain instructions and / or functions corresponding to the software and / or hardware modules. Accordingly, an implementation of a module may be performed by the computing device 1402 is executable, as software at least partially achieved in hardware, for example by using computer-readable storage media and / or hardware elements 1410 of the processing system 1404 , The instructions and / or functions may be represented by one or more real objects (eg, one or more computing devices 1402 and / or processing systems 1404 ) to implement techniques, modules, and examples as described herein.

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.The techniques described herein may be achieved by various configurations of the computing device 1402 are not limited to the specific examples of the techniques described herein. This functionality can also be implemented in whole or in part using a distributed system, such as via "cloud" 1414 over a platform 1416 , as will be described below.

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.The cloud 1414 includes and / or provides a platform 1416 for resources 1418 dar. The platform 1416 abstracts underlying functionality of the hardware (such as servers) and software resources of the cloud 1414 , The resources 1418 may include applications and / or data that are used while executed in computer processing on servers that are hosted by the computing device 1402 are located away. The resources 1418 may also include servers that are accessible via the Internet and / or via a subscriber network, such as a cell-based or a WiFi network.

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.The platform 1416 can provide resources and functions for connecting the computing device 1402 abstract with other computing devices. The platform 1416 can also serve to abstract the scale of the resources to a corresponding scale of the desired resource requirements 1418 that over the platform 1416 are implemented to provide. Accordingly, in a mutually connected device embodiment, an implementation of the functionality described herein may be via the system 1400 be distributed across. The functionality may be partially on the computing device, for example 1402 over the platform 1416 that the functionality of the cloud 1414 abstracted, implemented.

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.Mapping techniques for curve fitting are described. In one or more implementations, an indication of three or more data points is received. A blending factor based on a spatial relationship of the three or more data points to each other will be described. A curve is fitted to the three or more data points by mixing a plurality of curve fitting techniques using the calculated blend factor.

Schlussbemerkungconcluding remark

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.While the invention is described in language specific to structural features and / or methodological acts, it should be understood that the invention as defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and processes are disclosed as exemplary forms of implementing the claimed invention.

Claims (13)

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.A method implemented by one or more computing devices, the method comprising: Receiving an indication of three or more data points; Calculating a blend factor based on a spatial relationship of the three or more data points to each other; and Fitting a curve to the three or more data points by mixing a plurality of curve fitting techniques using the calculated blend factor. Verfahren nach Anspruch 1, wobei die Mehrzahl von Kurvenanpassungstechniken quadratische Bézier-Kurventechniken, kubische Bézier-Kurventechniken und Kreiskurvenschätztechniken beinhalten.The method of claim 1, wherein the plurality of curve fitting techniques include square Bezier curve techniques, cubic Bezier curve techniques, and circular curve estimation techniques. 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.The method of any one of the preceding claims, wherein said fitting includes calculating a tangent direction and a radius of curvature; and / or wherein the spatial relationship describes a symmetry of the three or more points to each other, wherein the symmetry of the three or more data points to each other is preferably based on whether the successively defined first, second and third data points, the second data point between one of the first and third data points defined baseline falls. 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.The method of claim 1, wherein the spatial relationship describes a flatness of the three or more data points to each other, wherein the flatness of the three or more data points relative to one another preferably at a proximity given for the successively defined first, second, and third data points second data point is based on a baseline defined by the first and third data points. 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.The method of any one of the preceding claims, wherein the spatial relationship is based at least in part on a curvature sign of the adjacent data point, the curvature sign preferably being used by determining whether the curvature sign of the adjacent data point is different from a sign for the current data point. 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.The method of any one of the preceding claims, wherein the calculating is performed for a window defining a number of data points positioned before and after the current data point. 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.A computer program product comprising computer readable instructions which, when loaded into and executed on a suitable system, perform the steps of a method according to any one of the preceding claims. 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.One or more computer-readable storage media having instructions stored thereon that, in response to execution by a computing device, cause the computing device to perform operations that include: Choosing which of a plurality of curve fitting techniques to apply, based on a spatial relationship of a plurality of data points to which a curve is to be fitted; and Fitting the curve to the plurality of data points using the selected one of the plurality of curve fitting techniques. 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.The one or more computer readable storage media of claim 8, wherein the selecting includes calculating an estimate using a quadratic Bezier curve technique, and the plurality of curve fitting techniques include cubic Bezier curve techniques and circular curve estimation techniques; and / or wherein the spatial relationship is described using a heuristic that includes symmetry or flatness of the plurality of data points; and / or wherein the spatial relationship is described using a heuristic that includes whether a curvature sign of the adjacent data point is different from a curvature sign at the current data point. 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.A system comprising: one or more modules that are at least partially implemented in hardware, wherein the one or more modules are configured to perform operations including: Receiving an indication to adjust a curve to a plurality of data points; Determining a spatial relationship of the plurality of data points to each other; and mixing a plurality of curve fitting techniques to perform the fitting of the curve, the mixing using at least one heuristic based on the determined spatial relationship. 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.The system of claim 10, wherein the plurality of curve fitting techniques includes quadratic Bézier curve techniques, cubic Bezier curve techniques, and circular curve estimation techniques; and / or wherein the heuristic employs a quadratic Bézier curve technique; and / or wherein the heuristic is based on symmetry of the plurality of data points based on whether, for the first, second and third data points defined in succession, the second data point falls between a baseline defined by the first and third data points; and / or wherein the heuristic is based on a flatness of the plurality of data points to each other based on a proximity given to the sequentially-defined first, second, and third data points with which the second data point falls on a baseline defined by the first and third data points; and / or wherein the heuristic is based on a determination of whether a curvature sign of the adjacent data point is different from a sign for the current data point. 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.System comprising: One or more modules implemented at least in part in hardware, wherein the one or more modules are configured to perform operations including: Configuring contact points located directly on a complex curve in a user interface to support a user specified motion; and in response to the user specified movement with respect to a respective contact point, automatically and without user intervention, adjusting the respective curve of the complex curve such that the respective curve retains the slope and curvature continuity with respect to the complex curve. 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.The system of claim 12, wherein the contact points are maintained according to the movement specified by the user through the movement; and / or wherein the adjustment is carried out in such a way that, following the movement, the contact point affected during the movement is close to a position of the maximum curvature of the respective curve.
DE102015005834.7A 2014-05-12 2015-05-07 Mixing techniques for curve fitting Pending DE102015005834A1 (en)

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 US9727987B2 (en) 2014-05-12 2014-05-28 Blending techniques for curve fitting
US14/289,408 2014-05-28

Publications (1)

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

Family

ID=53489226

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015005834.7A Pending DE102015005834A1 (en) 2014-05-12 2015-05-07 Mixing techniques for curve fitting

Country Status (4)

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

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 (en) * 2015-06-24 2017-09-29 深圳市腾讯计算机系统有限公司 Play sport track determines method and device
CN105488827B (en) * 2015-12-04 2018-01-26 网易(杭州)网络有限公司 The edit methods and device of a kind of closed curve
CN106570864B (en) * 2016-10-26 2019-08-16 中国科学院自动化研究所 Conic fitting method in image based on geometric error optimization
US11310121B2 (en) * 2017-08-22 2022-04-19 Moovila, Inc. Systems and methods for electron flow rendering and visualization correction
CN107831935B (en) * 2017-09-27 2021-01-12 深圳市天英联合教育股份有限公司 Touch point trajectory tracking method and device based on fitting and intelligent equipment
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 (en) 2018-04-19 2022-08-31 Shenzhen Goodix Technology Co., Ltd. Coordinate smoothing method, touch control chip, and electronic terminal
CN109035363B (en) * 2018-07-05 2023-11-10 凌云光技术股份有限公司 Line-circle optimal fitting method for rapid iteration
CN113033085B (en) * 2021-03-11 2023-02-03 中山大学 Particle swarm optimization and Bezier curve-based particle shape simulation method and system
KR20230059333A (en) * 2021-10-26 2023-05-03 주식회사 엘엑스세미콘 Touch sensing apparatus, touch sensing display system including the touch sensing apparatus and touch sensing method
CN114038203A (en) * 2022-01-12 2022-02-11 成都四方伟业软件股份有限公司 Curve fitting method and device for two-point intersection lane in traffic simulation

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 (en) * 2002-12-06 2003-07-23 Agilent Technologies Inc Operating point determination for mode-selection laser
EP1562138B1 (en) 2004-02-06 2009-08-19 Dassault Systèmes A process for drafting a curve in a computer-aided design system
CN100576214C (en) * 2006-12-13 2009-12-30 上海华虹Nec电子有限公司 The SPICE model modelling approach of diode multiple simulator format
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
WO2010099360A1 (en) * 2009-02-25 2010-09-02 Mohamed Rashwan Mahfouz Customized orthopaedic implants and related methods
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 (en) 2011-04-30 2012-09-19 上海交通大学 Numerical control interpolation system for real-time generation of curvature-continuous path
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
GB2528157A (en) 2016-01-13
GB201507781D0 (en) 2015-06-17
US20150325016A1 (en) 2015-11-12
US9727987B2 (en) 2017-08-08
CN105095560B (en) 2019-09-13
CN105095560A (en) 2015-11-25

Similar Documents

Publication Publication Date Title
DE102015005834A1 (en) Mixing techniques for curve fitting
DE112019005750T5 (en) Learning to generate synthetic data sets for training neural networks
DE112017002799B4 (en) METHOD AND SYSTEM FOR GENERATION OF MULTIMODAL DIGITAL IMAGES
Johannessen et al. On the similarities and differences between Classical Hierarchical, Truncated Hierarchical and LR B-splines
DE102014011900A1 (en) Fit a parametric curve using a maximum curvature
DE69927738T2 (en) Method and device for editing sketched curves
Hennig et al. Adaptive mesh refinement strategies in isogeometric analysis—a computational comparison
DE102016011173A1 (en) Create summaries of multimedia documents
DE102017009049A1 (en) Enable transformations sketch-to-painting
DE112020002042T5 (en) GENERATION OF AN INTENT RECOGNITION MODEL BASED ON RANDOMIZED INTENT VECTOR APPROACHES
DE102014002984A1 (en) Gesture completion path display for gesture-based keyboards
DE102019001695A1 (en) Generating enhanced digital images by selectively transforming raster images into vector drawing segments
DE112012005827T5 (en) Editing media using graphical representation of the media
DE112014005866T5 (en) Improvement of plenoptic camera resolution
US11657255B2 (en) Controlling a neural network through intermediate latent spaces
DE112006002366T5 (en) Two-dimensional graphics for displaying on three-dimensional objects
US10210636B2 (en) Automatic snap for digital sketch inking
DE202013012510U1 (en) System for providing content for a point of interest
DE102019004670A1 (en) Automatically generate and apply graphic user interface scaling constraints based on design semantics
DE102013215438A1 (en) System for treating color assignment within e.g. text processing document in computing device, has color handler modifying color schema, and color processor processing updated color schema and applying updated color schema to component
DE102017007967A1 (en) Process and render a three-dimensional model
DE102017006563A1 (en) Image patch matching using probability based sampling based on prediction
DE102017011422A1 (en) Baring prediction for a three-dimensional digital content
DE102018001136A1 (en) Interactive color palette interface for digital painting
DE102020001437A1 (en) Use of context-sensitive sensors and multidimensional gesture inputs to efficiently generate post-processed digital images

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