Sembra che tu voglia mantenere la velocità dell'oggetto ad un valore costante sull'intera curva - sapendo che la lunghezza dell'arco non ti aiuterà a farlo. Ti aiuterà a calcolare a che ora l'oggetto raggiungerebbe il suo punto finale se stesse andando a quella velocità, quindi sarà migliore di quello che hai ora (l'oggetto avrà la stessa velocità media tra tutti i punti), ma il la velocità effettiva dell'oggetto varierà comunque mentre si muove attorno alla curva.
Una soluzione migliore sarebbe quella di cambiare il nostro parametro parametrico (il parametro che va da 0 a 1, che chiamerò sper evitare confusione t = time) a una velocità variabile ds/dt, che è determinato dalla velocità con cui si desidera che l'oggetto si sposti quel punto sulla curva. Quindi, in altre parole, invece di cambiare sdi 0,01 ogni fotogramma, potremmo cambiarlo di 0,005 un fotogramma, 0,02 il successivo, ecc.
Facciamo questo calcolando le derivate di x( dx/ds) e y( dy/ds) ogni fotogramma, quindi impostando
ds / dt = speed / sqrt ((dx / ds) 2 + (dy / ds) 2 )
Cioè, prendendo la velocità che vogliamo andare e dividendola per la velocità che effettivamente andremmo se cambiassimo sad un incremento fisso.
Prova
Vogliamo che la velocità del nostro oggetto sia costante; diamo a quella costante il nome speed.
Nel calcolo del secondo anno apprendiamo che, per le equazioni parametriche x(s)e y(s),
velocità = sqrt ((dx / dt) 2 + (dy / dt) 2 )
Lo impariamo anche
dx / dt = dx / ds * ds / dt (regola catena)
Così,
velocità = sqrt ((dx / ds) 2 (ds / dt) 2 + (dy / ds) 2 (ds / dt) 2 )
Risolvendo ds/dt, otteniamo l'equazione dichiarata.
Calcolo dei derivati
Non ho mai lavorato con quelle spline particolari, ma capisco che danno x(s)e y(s)in termini di equazioni cubiche di s. Quindi, possiamo trovare dx/dsfacilmente la derivata : if
x (s) = a * s 3 + b * s 2 + c * s + e
poi
dx / ds = 3a * s 2 + 2b * s + c
(Lo stesso vale per dy/ds) Naturalmente, è necessario conoscere i valori esatti di a, be cper fare questo. Secondo questa pagina , questi valori sono facili da trovare.
Infine, per rispondere alla domanda nel titolo: trovare l'equazione della lunghezza dell'arco di una funzione parametrica implica risolvere un integrale definito abbastanza complicato ; anche per il semplice caso di un'equazione cubica, ciò non è generalmente possibile.
Pertanto, dovrai stimare l'integrale numericamente . "Tagliare la spline in 10 rette e sommarne le lunghezze" come suggerisci è un modo molto semplice per farlo ; tuttavia, ci sono metodi leggermente più complicati che ti daranno risultati molto più accurati usando meno segmenti di linea.