Fling Animator
class FlingAnimator(scheduler: FrameScheduler, applyPanDelta: (deltaPxX: Double, deltaPxY: Double) -> Unit, onActiveChange: (active: Boolean) -> Unit = {})
Drives a per-frame action with monotonically decaying velocity until the velocity drops below a threshold. The platform supplies a FrameScheduler that fires a tick on each render frame (Choreographer / requestAnimationFrame / Swing Timer); each tick computes its own elapsed time so the animation stays correct even when the scheduler's interval drifts.
Used for inertial pan ("fling") after a drag/pan gesture. Distance integrates to v0 / k (linear in initial velocity) and duration is ln(v0 / vMin) / k (logarithmic) — so harder flicks travel proportionally further while still settling in roughly the same wall-clock time.