Effiziente Methode zur Berechnung der maximalen Krümmung eines kubischen Splines


6

Ich habe einen kubischen 2D- Spline (Bézier) und ich habe die Polygonlinie, die eine Diskretisierung dieses Splines darstellt.

Gibt es eine effiziente und einfache Möglichkeit, die maximale Krümmung des Splines entweder anhand seiner glatten Darstellung oder der diskreten Polylinie zu berechnen ? Es muss nicht genau sein, da es sich um ein Spiel handelt. Ein Fehler um 10% wäre völlig akzeptabel.

Unterschiedlicher Wortlaut: Ich würde gerne wissen: Wenn ich ein Auto fahren würde, das mit konstanter Geschwindigkeit entlang der Keilverzahnung fährt, wie hoch wäre es dann, wenn ich das Lenkrad maximal drehen müsste, um darauf zu bleiben?


1
Die Ableitung des Splines, von dem Sie wissen, dass er nicht geholfen hat? Zwei Aussagen haben unterschiedliche Bedeutungen. Haben Sie einen Spline-Typ? Wie Bézier?
Böse

Sicher, es ist ein kubischer Bezier-Spline. AFAIK gibt es keine analytische Möglichkeit, die maximale Krümmung eines kubischen Splines zu bestimmen.
user3049681

Kubischer Spline bedeutet, dass er einen Würfelkoeffizienten hat. Typ Bézier, ok. Dies ist ein 2D-Fall? 3D Fall? (Für Auto ist es eher 2D). Der erste Schritt besteht darin, zu klären, was Sie haben und was Sie wirklich brauchen.
Evil

Danke, es ist der 2D-Fall, ich habe den kubischen Bezier-Spline und eine diskretisierte Version in Form einer Polylinie. Aus diesen beiden Dingen möchte ich die maximale Krümmung grob bestimmen.
user3049681

1
1. Wie möchten Sie " Krümmung " definieren ? 2. Beachten Sie, dass Ihre zweite Frage (zum Auto) nicht genau definiert ist, da Sie uns nichts darüber gesagt haben, wie sich die Geschwindigkeit des Autos im Laufe der Zeit ändert. Wollten Sie angeben, dass das Auto mit konstanter Geschwindigkeit fährt? Wenn ja, ist diese Frage gleichbedeutend mit der Frage, an welchem ​​Punkt die Größe der zweiten Ableitung maximiert wird[x(t)]2+[y(t)]2Angenommen, Sie wählen eine Parametrisierung so, dass die Geschwindigkeit konstant ist ( ). [x(t)]2+[y(t)]2=1
DW

Antworten:


2

Schritt 1: Drücken Sie die Punkte auf dem Spline parametrisch aus, sodass der Spline die Menge der Punkte der Form , wobei ein Parameter ist. Hier repräsentiert die Koordinate (als Funktion des Parameters ) und repräsentiert die Koordinate. Da dies ein kubischer Spline ist, können Sie Funktionen , die kubische Polynome mit bekannten Koeffizienten sind, die diesen parametrischen Ausdruck liefern.(x(t),y(t))tx(t)xty(t)yx(t),y(t)

Schritt 2: Verwenden Sie die Formel auf Wikipedia zur Berechnung der Krümmung bei einer parametrischen Darstellung der Kurve. Dies gibt Ihnen eine Formel für die Krümmung als Funktion von , nämlich . Da und kubische Polynome sind, können Sie ihre erste und zweite Ableitung explizit berechnen, sodass Sie einen expliziten Ausdruck für , dh für die Krümmung als Funktion von, analytisch berechnen können .tκ(t)x(t)y(t)κ(t)t

Schritt 3: Finden Sie den Wert von , der maximiert . Beachten Sie, dass es sich jetzt um eine Funktion , dh wir befinden uns im eindimensionalen Fall. Somit können wir das Maximum numerisch unter Verwendung einer Reihe von Methoden ermitteln: Gradientenabstieg, Newtonsche Methode oder eine Reihe anderer Methoden.tκ(t)κ:RR

Alternativ können Sie die Ableitung von analytisch berechnen und dann die Gleichung für lösen . Dies könnte eine analytische Lösung ermöglichen, die eine Liste von Kandidatenmaxima von identifiziert . Überprüfen Sie auch die Endpunkte (untere und obere Grenze für ). Bewerten Sie bei jedem Kandidaten und wählen Sie den aus, der den Wert von so groß wie möglich macht.κ(t)κ(t)=0tκ(t)tκκ(t)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.