Each charge zone burns a different propellant mass, giving a different muzzle
velocity and therefore a different range-vs-elevation curve. A real firing table
is a lookup grid — this sim precomputes elevation for a coarse grid of ranges per
zone with real drag physics, then linearly interpolates between grid rows for any
in-between range you dial in, exactly as a paper or digital firing table does.
for each zone: elevation(range) sampled on a coarse grid
requested range → interpolate between nearest grid rows
fire with (interpolated elevation, zone muzzle velocity)
compare simulated impact range against the requested target
- Charge zone — propellant charge size (1 = smallest/lowest velocity, 8 = largest/highest velocity, larger zones reach further at a given elevation).
- Target range — the range you want the round to land at; the table looks up the elevation for it.
The table error readout shows how close the coarse-grid interpolation gets to
the true physics-based impact point — small for ranges near a grid row, larger
mid-way between rows, which is exactly why finer-grained tables improve accuracy.