chase-cam lab

In comet, the camera doesn't sit still — it picks an orb on the rotating starfield and drifts toward where that orb will be when it crosses the camera plane. The orb dies, a new one is picked, and the camera replans. The chase happens entirely in x/y (orbs handle the z), so this lab strips it down to a top-down 2D view: same target motion as comet, same chase model, no perspective distractions.

Four panes run the chase model side-by-side at different chase values so you can see how aggressively the camera commits to the predicted death point. Target orbits; camera chases.

panes

target predicted death point trust point (pane's aim) camera

controls

spin (rad/s)
0.50
target lifetime (s)
4.0
ramp (trapezoid shape)
0.25

chase model: on each target handoff, the camera plans a trapezoidal-eased trajectory from its current position to a "trust point" = target + (deathPoint − target) × chase, executed over the target's remaining lifetime. Camera arrives at the trust point precisely when the target dies.

chase = 1.0: fully commits to the predicted death point — locks on at end-of-life.
chase = 0.5: lands halfway between current target position and predicted death.
chase = 0.2: barely deviates from where it was; minimal anticipation.
chase = 0.0: no chase; camera decays back to origin.

ramp: trapezoidal shape. 0 = pure linear (constant velocity, hard starts/stops). 0.25 = ¼ ramp-up, ½ cruise, ¼ ramp-down. 0.5 = degenerates to smoothstep (no constant middle).

target motion mirrors the actual chase target in comet: a point on a fixed circle of random radius, rotating at spin, with a finite lifetime. On expiry, a new (radius, base angle) is picked.