Il semble que vous souhaitiez maintenir la vitesse de l'objet à une valeur constante sur toute la courbe - sachant que la longueur de l'arc ne vous y aidera pas. Cela vous aidera à calculer à quelle heure l'objet atteindrait son point final s'il allait à cette vitesse, il sera donc meilleur que ce que vous avez maintenant (l'objet aura la même vitesse moyenne entre tous les points), mais le la vitesse réelle de l'objet variera quand il se déplace sur la courbe.
Une meilleure solution serait de changer notre paramètre paramétrique (le paramètre qui va de 0 à 1, que j'appellerai s
pour éviter toute confusion t = time
) à une vitesse variable ds/dt
, qui est déterminée par la vitesse à laquelle vous voulez que l'objet se déplace ce point sur la courbe. En d'autres termes, au lieu de changer s
de 0,01 chaque image, nous pourrions le changer de 0,005 une image, 0,02 la suivante, etc.
Nous faisons cela en calculant les dérivées de x
( dx/ds
) et y
( dy/ds
) chaque image, puis en définissant
ds / dt = vitesse / sqrt ((dx / ds) 2 + (dy / ds) 2 )
Autrement dit, en prenant la vitesse que nous voulons aller, et en divisant par la vitesse que nous allions réellement si nous changions s
à un incrément fixe.
Preuve
Nous voulons que la vitesse de notre objet soit constante; donnons le nom à cette constante speed
.
Nous apprenons en calcul de deuxième année que, pour les équations paramétriques x(s)
et y(s)
,
vitesse = sqrt ((dx / dt) 2 + (dy / dt) 2 )
Nous apprenons également que
dx / dt = dx / ds * ds / dt (règle de chaîne)
Donc,
vitesse = sqrt ((dx / ds) 2 (ds / dt) 2 + (dy / ds) 2 (ds / dt) 2 )
En résolvant pour ds/dt
, nous obtenons l'équation indiquée.
Calcul des dérivés
Je n'ai jamais travaillé avec ces splines particulières, mais je comprends qu'elles donnent juste x(s)
et y(s)
en termes d'équations cubiques de s
. Ainsi, nous pouvons dx/ds
facilement trouver la dérivée : si
x (s) = a * s 3 + b * s 2 + c * s + e
ensuite
dx / ds = 3a * s 2 + 2b * s + c
(Idem pour dy/ds
) Bien sûr, vous aurez besoin de connaître les valeurs exactes de a
, b
et c
de le faire. Selon cette page , ces valeurs sont faciles à trouver.
Enfin, pour répondre à la question du titre: trouver l'équation de longueur d'arc d'une fonction paramétrique implique de résoudre une intégrale définie assez compliquée ; même pour le cas simple d'une équation cubique, cela ne peut généralement pas être fait.
Ainsi, vous devrez estimer l'intégrale numériquement . "Couper la spline en 10 lignes droites et additionner leurs longueurs" comme vous le suggérez est une façon très simple de le faire ; cependant, il existe des méthodes légèrement plus compliquées qui vous donneront des résultats beaucoup plus précis en utilisant moins de segments de ligne.