The friction/acceleration awkwardness can be solved by using a physically based timestep-independent formulation, which I implemented in TPMouse[0] and explained its derivation in a previous comment reply[1].
The gist of it is that the solution to a linearly damped particle is a linear system, so the x and y components can be calculated completely independently and the analytic solution is just an exponential of time.
It is a special case of the timestep-independent damped harmonic oscillator, which I previously wrote a blogpost about [10].
Namely it is the "unsprung" special case under "Overdamped"
The very same formulation is also what I used to implement LibreScroll[11] to add inertial scrolling to any mouse.
The gist of it is that the solution to a linearly damped particle is a linear system, so the x and y components can be calculated completely independently and the analytic solution is just an exponential of time.
It is a special case of the timestep-independent damped harmonic oscillator, which I previously wrote a blogpost about [10].
Namely it is the "unsprung" special case under "Overdamped"
The very same formulation is also what I used to implement LibreScroll[11] to add inertial scrolling to any mouse.
[0] https://github.com/EsportToys/TPMouse
[1] https://www.reddit.com/r/Trackballs/comments/ym9q2t/tpmouse_...
[10] https://news.ycombinator.com/item?id=35899215
[11] https://news.ycombinator.com/item?id=36783942