Vorrei una funzione per calcolare la durata di un'animazione in modo tale che anche quando la distanza cambia, la velocità rimane costante.Durata di attenuazione calcolata in funzione della distanza
====================================
| |
|<============ width =============>|
| |
| <====== distance1 ======>|
| |
| <=== distance2 ===>|
| |
===================================
Questo è banale da realizzare quando si tratta di allentamento lineare,
function getDuration (width, distance, duration) {
return duration * (1 - distance/width);
}
Tuttavia, questo diventa molto più complesso quando si utilizza non lineare funzioni di andamento, come easeInOutQuad
(Un esempio di questo problema: http://jsfiddle.net/Wexcode/rdrbm8et/3/).
Dato una funzione di andamento, come ad esempio easeInOutQuad
, come si calcola la durata in modo che la velocità per qualsiasi distanza rimanga costante?
easeInOutQuad: function (t) { return t<.5 ? 2*t*t : -1+(4-2*t)*t },
Fonte: https://gist.github.com/gre/1650294
Fonte: http://api.jqueryui.com/easings/
guardando da un punto di vista matematico, si dovrebbe differenziare la curva? Domanda interessante :) +1 –
Prova la registrazione facilita in Excel, guarda cosa puoi trovare. Forse puoi mettere insieme una formula: D Ecco come ho risolto la mia domanda ruotando la saturazione del colore in RGB. –
Non capisco esattamente cosa stai chiedendo. Se hai un andamento non lineare, la velocità non è costante. Quindi * quale * velocità vuoi rimanere costante quando cambi la distanza? – Bergi