
Per-identity constant-velocity Kalman smoother. It takes [(UInt64, Point<Double>)] id-and-position pairs and emits a smoothed position with an averaged velocity direction per id as [Vector2d<Double>], holding one filter per tracking id across frames.
Smooth tracked positions before zone-transition logic.
Smooth tracked positions before distance checks.
forget_threshold frames is dropped, and reappearing with the same id starts a fresh filter so its position jumps rather than interpolating. While an id is absent but still inside the window the filter coasts on its last velocity (prediction only).
measurement_noise_cov to process_noise_cov: raising the measurement noise (or lowering the process noise) smooths harder but lags real motion, while the opposite passes raw jitter through.
velocity_history_size frames, so a short window reacts quickly but is noisier than a longer one.
Automated release