Es hört sich so an, als ob Sie die Geschwindigkeit des Objekts über die gesamte Kurve auf einem konstanten Wert halten möchten - die Kenntnis der Bogenlänge hilft Ihnen dabei nicht. Es hilft Ihnen zu berechnen, wann das Objekt seinen Endpunkt erreichen würde, wenn es mit dieser Geschwindigkeit fahren würde. Es ist also besser als das, was Sie jetzt haben (das Objekt hat die gleiche Durchschnittsgeschwindigkeit zwischen allen Punkten), aber die Die tatsächliche Geschwindigkeit des Objekts ändert sich weiterhin, wenn es sich um die Kurve bewegt.
Eine bessere Lösung wäre, unseren parametrischen Parameter (den Parameter, der von 0 auf 1 geht, den ich s
zur Vermeidung von Verwechslungen bezeichne t = time
) mit einer variablen Rate zu ändern , die davon abhängt ds/dt
, mit welcher Geschwindigkeit sich das Objekt bewegen soll dieser Punkt auf der Kurve. Mit anderen Worten, anstatt sich s
bei jedem Frame um 0,01 zu ändern, können wir es bei jedem Frame um 0,005, bei jedem nächsten um 0,02 usw. ändern.
Dazu berechnen wir die Ableitungen von x
( dx/ds
) und y
( dy/ds
) für jeden Frame und setzen sie dann
ds / dt = Geschwindigkeit / Quadratmeter ((dx / ds) 2 + (dy / ds) 2 )
Das heißt, indem wir die Geschwindigkeit nehmen, die wir fahren möchten, und durch die Geschwindigkeit dividieren, die wir tatsächlich fahren würden, wenn wir uns s
in einem festen Schritt ändern würden .
Beweis
Wir möchten, dass die Geschwindigkeit unseres Objekts konstant bleibt. Geben wir dieser Konstante den Namen speed
.
Wir lernen in der zweiten Jahres Kalkül , dass für Parametergleichungen x(s)
und y(s)
,
Geschwindigkeit = sqrt ((dx / dt) 2 + (dy / dt) 2 )
Das lernen wir auch
dx / dt = dx / ds * ds / dt (Kettenregel)
Somit,
Geschwindigkeit = sqrt ((dx / ds) 2 (ds / dt) 2 + (dy / ds) 2 (ds / dt) 2 )
Wenn ds/dt
wir nach auflösen , erhalten wir die angegebene Gleichung.
Berechnung der Derivate
Ich habe noch nie mit diesem besonderen Splines gearbeitet, aber ich verstehe , dass sie nur geben x(s)
und y(s)
in Bezug auf den kubisch-Gleichungen s
. So können wir die Ableitung dx/ds
leicht finden: wenn
x (s) = a * s 3 + b * s 2 + c * s + e
dann
dx / ds = 3a · s 2 + 2b · s + c
( Das gleiche gilt für dy/ds
) Natürlich müssen Sie die genauen Werte von wissen a
, b
und c
dies zu tun. Demnach sind diese Werte auf dieser Seite leicht zu finden.
Um die Frage im Titel zu beantworten: Um die Bogenlängengleichung einer parametrischen Funktion zu finden, muss ein ziemlich kompliziertes bestimmtes Integral gelöst werden . Selbst für den einfachen Fall einer kubischen Gleichung ist dies im Allgemeinen nicht möglich.
Daher müssen Sie das Integral numerisch schätzen . "Schneiden Sie den Spline in 10 gerade Linien und addieren Sie deren Länge", wie Sie vorschlagen, ist eine sehr einfache Möglichkeit, dies zu tun . Es gibt jedoch etwas kompliziertere Methoden , mit denen Sie mit weniger Liniensegmenten viel genauere Ergebnisse erzielen.