私は現在、フロー スライダー プラグインの 2 番目のバージョンを作成しています。アニメーション オプションの 1 つは、スライダーが最大速度まで一定の加速で加速し、一定の減速で減速する場合です。減速を開始する適切なタイミングを見つけるのに問題があります。
時間が連続していれば問題ないのですが、時間は離散的な間隔で動いているため、動きが加速しているフレームがいくつかあり、(連続時間演算を使用すると) 減速を開始する必要はありませんが、次のすでに遅すぎて減速できません。
たとえば、毎秒 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 番目) では、減速距離はそこから減速し始めると、時間通りに終わらなくなります。
これを解決するための最良の戦略は何でしょうか?