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ò s
per 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 s
di 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 s
ad 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/ds
facilmente 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
, b
e c
per 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.