Parece que você deseja manter a velocidade do objeto em um valor constante durante toda a curva - sabendo que o comprimento do arco não ajudará você a fazer isso. Isso ajudará você a calcular a que horas o objeto alcançaria seu ponto final se estivesse indo nessa velocidade, portanto será melhor do que o que você tem agora (o objeto terá a mesma velocidade média entre todos os pontos), mas o a velocidade real do objeto ainda varia à medida que se move pela curva.
Uma solução melhor seria alterar nosso parâmetro paramétrico (o parâmetro que vai de 0 a 1, que chamarei s
para evitar confusão t = time
) a uma taxa variável ds/dt
, que é determinada pela velocidade em que você deseja que o objeto se mova. esse ponto na curva. Portanto, em outras palavras, em vez de alterar s
em 0,01 cada quadro, podemos alterá-lo em 0,005 um quadro, 0,02 no próximo etc.
Fazemos isso calculando as derivadas de x
( dx/ds
) e y
( dy/ds
) cada quadro e definindo
ds / dt = velocidade / sqrt ((dx / ds) 2 + (dy / ds) 2 )
Ou seja, tomando a velocidade que queremos seguir e dividindo pela velocidade que realmente estaríamos se estivéssemos mudando s
em um incremento fixo.
Prova
Queremos que a velocidade do nosso objeto seja constante; vamos dar a essa constante o nome speed
.
Aprendemos no cálculo do segundo ano que, para equações paramétricas x(s)
e y(s)
,
velocidade = sqrt ((dx / dt) 2 + (dy / dt) 2 )
Também aprendemos que
dx / dt = dx / ds * ds / dt (regra da cadeia)
Portanto,
velocidade = sqrt ((dx / ds) 2 (ds / dt) 2 + (dy / ds) 2 (ds / dt) 2 )
Resolvendo ds/dt
, obtemos a equação declarada.
Cálculo dos derivativos
Eu nunca trabalhei com esses splines específicos, mas entendo que eles apenas fornecem x(s)
e y(s)
em termos de equações cúbicas de s
. Assim, podemos encontrar dx/ds
facilmente a derivada : se
x (s) = a * s 3 + b * s 2 + c * s + e
então
dx / ds = 3a * s 2 + 2b * s + c
(Mesmo para dy/ds
) Claro, você vai precisar saber os valores exatos de a
, b
e c
para fazer isso. De acordo com esta página , esses valores são fáceis de encontrar.
Finalmente, para responder à pergunta no título: encontrar a equação de comprimento de arco de uma função paramétrica envolve resolver uma integral definida bastante complicada ; mesmo no caso simples de uma equação cúbica, isso geralmente não pode ser feito.
Assim, você terá que estimar a integral numericamente . "Cortar o spline em 10 linhas retas e somar seus comprimentos", como você sugere, é uma maneira muito simples de fazer isso ; no entanto, existem métodos um pouco mais complicados que fornecerão resultados muito mais precisos usando menos segmentos de linha.