pub const CARD_SAMPLE_INTERVAL_M: f64 = HoldCurve::SAMPLE_INTERVAL_M; // 0.91439999999999999f64Expand description
Distance interval every DOPE-card surface samples its trajectory on, meters (~1 yard).
Deliberately independent of the card’s row spacing (MBA-1476). Sampling on a grid
whose spacing was the card’s own --step made the value printed against a range depend
on the step, the start and the end of the card that asked for it: the grid is anchored at
zero, so a card starting anywhere that is not a multiple of its step put every requested
row between two samples, and sample_at_range’s predecessor – a nearest-sample search
with a tolerance of one and a half whole steps – then substituted a neighbouring range’s
data without saying so. A shooter dialing 300 yd off a --start 300 --step 200 card was
reading the 200-yard line. The grid spacing is now a constant of the engine, and the value
at a range is read off it by interpolation, so a range’s row is the same row on every card
that contains it.
Same grid as HoldCurve::SAMPLE_INTERVAL_M, and for the same reason: fine enough that
linear interpolation between neighbours is orders of magnitude below what any card
resolves, coarse enough that a 1500 m card is a couple of thousand points. Sampling is
pure post-integration interpolation over the solver’s knots – it does not re-integrate –
so refining it is measurably free next to the solve that produced those knots.