В настоящее время я пишу вторую версию плагина Flow Slider , и один из вариантов анимации - это когда слайдер ускоряется с некоторым постоянным ускорением до некоторой максимальной скорости, а затем замедляется с постоянным замедлением.У меня проблема с поиском подходящего времени для запуска замедления .
Если бы время было непрерывным, не было бы никаких проблем, но время движется с дискретными интервалами, и в результате естьнекоторые кадры, когда движение ускоряется и (с использованием математики с непрерывным временем) вам не нужно начинать замедление, но в следующем кадре вы уже слишком поздно, чтобы замедляться.
Например, допустим, у нас есть кадрскорость 20 в секунду.Нам нужно переместить 500px, начальная скорость 0px / кадр, максимальная скорость 50px / кадр, ускорение 3px / кадр, замедление 3px / кадр.Ниже вы можете видеть первые 13 кадров системы.
| frame | speed | traveled | to go | deceleration distance |
|-----------------------------------------------------------
| 1 | 3 | 3 | 497 | 3 |
| 2 | 6 | 9 | 491 | 9 |
| 3 | 9 | 18 | 482 | 18 |
| 4 | 12 | 30 | 470 | 30 |
| 5 | 15 | 45 | 455 | 45 |
| 6 | 18 | 63 | 437 | 63 |
| 7 | 21 | 84 | 416 | 84 |
| 8 | 24 | 108 | 392 | 108 |
| 9 | 27 | 135 | 365 | 135 |
| 10 | 30 | 165 | 335 | 165 |
| 11 | 33 | 198 | 302 | 198 |
| 12 | 36 | 234 | 266 | 234 |
| 13 | 39 | 273 | 227 | 273 |
|-----------------------------------------------------------
Теперь вы можете видеть, что на 0,6 с (12-й кадр) замедление слишком рано, потому что расстояние замедления из234 меньше, чем расстояние до из 266. Но уже в следующем (13-м) кадре расстояние замедления намного больше, чем расстояние до , иесли мы начнем замедляться оттуда, мы не закончим вовремя.
Какова будет лучшая стратегия для решения этой проблемы?