Parece que desea mantener la velocidad del objeto a un valor constante en toda la curva; saber la longitud del arco no lo ayudará a hacer esto. Le ayudará a calcular a qué hora el objeto alcanzaría su punto final si fuera a esa velocidad, por lo que será mejor que lo que tiene ahora (el objeto tendrá la misma velocidad promedio entre todos los puntos), pero el la velocidad real del objeto seguirá variando a medida que se mueve alrededor de la curva.
Una mejor solución sería cambiar nuestro parámetro paramétrico (el parámetro que va de 0 a 1, al que llamaré s
para evitar confusiones t = time
) a una velocidad variable ds/dt
, que está determinada por la velocidad a la que desea que se mueva el objeto. ese punto en la curva. En otras palabras, en lugar de cambiar s
en 0.01 cada cuadro, podríamos cambiarlo en 0.005 un cuadro, 0.02 el siguiente, etc.
Hacemos esto calculando las derivadas de x
( dx/ds
) y y
( dy/ds
) cada cuadro, luego configurando
ds / dt = velocidad / sqrt ((dx / ds) 2 + (dy / ds) 2 )
Es decir, al tomar la velocidad que queremos alcanzar y dividirla por la velocidad a la que realmente iríamos si estuviéramos cambiando s
a un incremento fijo.
Prueba
Queremos que la velocidad de nuestro objeto sea constante; vamos a darle el nombre a esa constante speed
.
Aprendemos en el cálculo de segundo año que, para ecuaciones paramétricas x(s)
y y(s)
,
velocidad = sqrt ((dx / dt) 2 + (dy / dt) 2 )
También aprendemos que
dx / dt = dx / ds * ds / dt (regla de la cadena)
Así,
velocidad = sqrt ((dx / ds) 2 (ds / dt) 2 + (dy / ds) 2 (ds / dt) 2 )
Resolviendo para ds/dt
, obtenemos la ecuación indicada.
Calculando las derivadas
Nunca he trabajado con esas splines particulares, pero entiendo que solo dan x(s)
y y(s)
en términos de ecuaciones cúbicas de s
. Por lo tanto, podemos encontrar la derivada dx/ds
fácilmente: si
x (s) = a * s 3 + b * s 2 + c * s + e
luego
dx / ds = 3a * s 2 + 2b * s + c
(Lo mismo para dy/ds
) Por supuesto, necesitará conocer los valores exactos de a
, b
y c
para hacer esto. Según esta página , esos valores son fáciles de encontrar.
Finalmente, para responder la pregunta en el título: encontrar la ecuación de longitud de arco de una función paramétrica implica resolver una integral definida bastante complicada ; incluso para el caso simple de una ecuación cúbica, esto generalmente no se puede hacer.
Por lo tanto, tendrá que estimar la integral numéricamente . "Cortar la spline en 10 líneas rectas y sumar sus longitudes", como sugiere, es una forma muy sencilla de hacerlo ; sin embargo, hay métodos un poco más complicados que le darán resultados mucho más precisos utilizando menos segmentos de línea.