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?
algorithms
numerical-algorithms
user3049681
quelle
quelle
Antworten:
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)) t x(t) x t y(t) y x(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) κ:R→R
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)=0 t κ(t) t κ κ(t)
quelle