A straight trajectory flown at varying speed: fixed direction, authored throttle.
Straight because the reference's passes are straight. Fitting lines to the measured screen tracks leaves a perpendicular residual of 109 m over the 4.0 km cruise approach (2.7%, about a sixth of a hull length, and concentrated where the far-end widths are noisiest) and 19 m over the 35.9 km wipe approach — 0.05%, which is a straight line by any standard the imagery can support. A constant-velocity line does not fit: the reference holds range from f760 to f792 at w ≈ 0.40 and then rushes in. Fixed direction and a speed profile is the honest model, and it is also the brief — an enormous starship is massive, stable and approximately linear.
What the type buys is not compression. Attitude comes from
orientationAlong, which cannot slide because it cannot vary; velocity
comes from differentiating the advance rather than from finite-differencing
a screen spline; and a mirrored pass is the same path with the lateral
components of anchor and direction negated, so the reference's one wipe
animation played three times is one LinePath used three times — which is
also how it was measured.
Everything is in camera axes, the frame screenOffset produces offsets in,
so anchor is a displacement from the lens rather than a place in the
universe. Fitting one of these from a measured track belongs in devtools and
is not written yet: a solver has no business on the sample path. Nothing in
tngIntro.ts flies one of these either — the straight passes are still
authored AimBeats composed through withAttitude, which is the same
attitude a line would derive but without the guarantee.
Members
advancereadonly
The throttle. Splined in log distance, so it may not cross or touch zero: an approach is authored as a negative advance rising toward the anchor (−4000 → −60 m), a departure as a positive one leaving it.
anchorreadonly
Camera axes. The point t = 0 names.
directionreadonly
Unit, camera axes, and the direction of flight — see orientationAlong.
Taken at its word rather than normalized on every evaluation: a direction
that is not unit rescales the whole advance profile silently, and the only
producer today is a hand-authored Vec.normalize.