DE102015005834A1 - Mixing techniques for curve fitting - Google Patents
Mixing techniques for curve fitting Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/206—Drawing of charts or graphs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing 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.
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
Die Rechenvorrichtung
Die Rechenvorrichtung
Bei dem dargestellten Beispiel wird eine Anwenderschnittstelle
Das Kurvenanpassungsmodul
Zur Unterstützung dieser Wahl kann das Mischmodul
Die Heuristiken aus der Berechnung durch das Heuristikmodul
Gezeichnete Kreise im Inneren der Kurve
Bei dem zweiten Beispiel
Das Heuristikmodul
Gewichtungen können beispielsweise auf Grundlage einer Nähe der Beziehung
Dies führt zu einer neuen symmetrischen Beziehung zwischen den Datenpunkten
Wie für die ersten und zweiten Datenpunkte
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:
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.
Eine einfache Umformung der Terme von
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
Bogenlänge arc length
Die Bogenlänge s(t) einer Kurve ist durch Integrieren der Geschwindigkeit der Kurve über die Zeit folgendermaßen gegeben:
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:
Per definitionem kann Nachfolgendes angegeben werden: By definition, the following can be specified:
Für 2D-Kurven (2D zweidimensional) kann Gleichung (6) folgendermaßen zu einem einfacheren Ausdruck umgeformt werden: For 2D curves (2D two-dimensional), equation (6) can be converted to a simpler expression as follows:
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:
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:
Für eine quadratische Bézier-Kurve variiert die Geschwindigkeit folgendermaßen linear mit t:
Diese Werte können in den Ausdruck für die Krümmung (7) aufgenommen werden, was Nachfolgendes ergibt: These values can be included in the expression for the curvature (7), which gives the following:
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:
Durch Lösen für tc erreicht eine Kurve ihren Maximalkrümmungswert bei: By solving for t c , a curve reaches its maximum curvature value at:
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: Using equation (10) and equation (3), the velocity vectors for the new curve can be expressed as follows:
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: 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:
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: 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:
Gleichung (19) ist eine kubische Gleichung:
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:
Hierbei sind
Die Werte von f(t) an den beiden Endpunkten für t = 0 und t = 1 sind:
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:
Dies impliziert wiederum:
Hierbei ist die Variable t folgendermaßen definiert:
Die Anforderung, dass die Ableitungsfunktion gleich 0 ist, also
Der Term unter der Quadratwurzel kann folgendermaßen umgeschrieben werden:
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.
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: 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:
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: For each quadratic Bézier curve, the coupled equations can be written as follows:
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: 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:
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: 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:
Die Randbedingung der bekannten Randendpunkte r0 und rN-1 führt zu den nachfolgenden Gleichungen an den Rändern: The boundary condition of the known boundary end points r 0 and r N-1 leads to the following equations at the edges:
Zusammen ergibt dies die Matrixgleichung Axm = b, die für die unbekannten Vektoren hinsichtlich der bekannten Randbedingungsvektoren b gelöst werden kann. Die Matrix hat Dreieckform: Together, this yields the matrix equation Ax m = b, which for the unknown vectors with regard to the known boundary condition vectors b can be solved. The matrix has triangle shape:
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
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
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: 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:
Es wird sodann eine Lösung der nachfolgenden Form angegeben: There is then given a solution of the following form:
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: 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:
Hierbei werden die nachfolgenden Definitionen verwendet:
Die sich ergebende oszillatorisch abnehmende Lösung für n führt zur nachfolgenden Form für δηn:
Dies bedeutet gleichwertig für δηn+1:
Damit gilt:
Hierdurch gelangt man zur nachfolgenden Bedingung:
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:
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:
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:
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: 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:
Das Vertikalausmaß des Kurvensegmentes ist gegeben durch: The vertical extent of the curve segment is given by:
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:
Diese hat die nachfolgende Lösung:
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:
Dies führt zu: This leads to:
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. 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.
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. 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.
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
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:
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
Bei dem Beispiel
Ä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:
Die ersten und zweiten Ableitungen hiervon lauten folgendermaßen:
Die Geschwindigkeiten und die Beschleunigung am Anfang und am Ende können folgendermaßen ausgedrückt werden:
Die Krümmungen bei t = 0 und t = 1 lauten folgendermaßen: The curvatures at t = 0 and t = 1 are as follows:
Dies vereinfacht sich weiter zu: This is further simplified to:
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: 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:
Durch Vereinfachung dieser Ausdrücke erhält man das Nachfolgende: By simplifying these expressions, we obtain the following:
Dies vereinfacht sich weiter zu:
Hieraus ergibt sich:
Eine Multiplikation liefert:
Schließlich ergibt sich:
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:
Hierbei gilt:
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: 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:
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:
Der Winkelmischterm wird:
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: 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:
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
Es wird ein Mischfaktor auf Grundlage einer räumlichen Beziehung der drei oder mehr Datenpunkte zueinander berechnet (Block
Es wird eine Kurve an die drei oder mehr Datenpunkte durch Mischen einer Mehrzahl von Kurvenanpassungstechniken unter Verwendung des berechneten Mischfaktors angepasst (Block
Die Kurve wird an die Mehrzahl von Datenpunkten unter Verwendung der gewählten aus der Mehrzahl von Kurvenanpassungstechniken angepasst (Block
Beispielhaftes System und VorrichtungExemplary system and device
Die beispielhafte Rechenvorrichtung
Das Verarbeitungssystem
Die computerlesbaren Speichermedien
Eine Eingabe-/Ausgabeschnittstelle oder Eingabe-/Ausgabeschnittstellen
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
„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
Wie vorstehend beschrieben worden ist, stellen Hardwareelemente
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
Die hier beschriebenen Techniken können durch verschiedene Konfigurationen der Rechenvorrichtung
Die Cloud
Die Plattform
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)
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)
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)
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 |
-
2014
- 2014-05-28 US US14/289,408 patent/US9727987B2/en active Active
-
2015
- 2015-05-07 DE DE102015005834.7A patent/DE102015005834A1/en active Pending
- 2015-05-07 GB GB1507781.1A patent/GB2528157A/en not_active Withdrawn
- 2015-05-08 CN CN201510232704.6A patent/CN105095560B/en active Active
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 |