How the trajectory engine works
This page documents the model used in /build and /range.
It is not the most complex model in existence — that's Hornady 4DOF or
pure 6DOF aero — but it is calibrated to match published JBM tables at
ranges out to ~1500 yards for typical precision-rifle calibers.
Modified Point Mass (MPM)
We treat the bullet as a point mass with a drag coefficient that varies with Mach number. The integrator steps the equations of motion (gravity + drag + wind) forward in small time slices and records position, velocity, and energy at each output range.
G1 vs G7 drag tables
G1 was historically standard for flat-base bullets; G7 fits modern boat-tail match projectiles much better. Where a manufacturer publishes both, we prefer G7. Both tables are from the McCoy / JBM canonical data.
Deep dive: G1 vs G7 — which to use and why →
Atmosphere
Air density is computed from temperature, station pressure, humidity, and altitude using the ICAO standard atmosphere with humidity correction. Density alone moves drag — at 4,000 feet on a hot day, your .308 will shoot meaningfully flatter than at sea level on a cold morning, even with the same load.
Wind
We model a vector wind with a configurable direction. A 90° crosswind gives the full advertised drift; a headwind contributes nothing to lateral movement (and only a small amount to vertical via reduced forward speed). Internally, every shot's drift is the integral of lateral acceleration over time of flight.
Spin drift
A right-twist barrel produces a small rightward yaw that becomes a meaningful drift (3–10 inches at 1000 yards on a .308). We use Bryan Litz's approximation:
SD (in) = 1.25 × (Sg + 1.2) × TOF^1.83
Where Sg is the Miller stability factor (computed from twist,
bullet length, mass, and atmospheric density) and TOF is time of flight in seconds.
What we don't model (yet)
- Coriolis — small but real beyond ~1000 yards. Coming Phase 2.
- Aerodynamic jump — the small vertical kick from crosswind acting on a yawing bullet. Coming Phase 2.
- Transonic instability — we flag it, we don't model the destabilization in detail.
- Bullet stability degradation at extreme range / low velocity.
Validation
Every release runs unit tests against published JBM trajectories for benchmark loads (.308 168gr SMK at 2650, 6.5 CM 140gr ELD-M at 2710, etc.) and asserts agreement to within ~5% on drop and drift at typical ranges. If you spot a discrepancy, file a bug.
Scope corrections: MOA and MIL
The trajectory table outputs drop and drift in both MOA and MIL simultaneously, so you can read the correction directly in whichever unit your scope uses. MOA is 1/60th of a degree (1.047" at 100 yards); MIL is 1/1000th of a radian (3.6" at 100 yards). Both scale linearly with range — pick the one that matches your turrets and reticle.
Deep dive: MOA vs MIL — a complete reference for precision shooters →
Reticle focal plane: FFP vs SFP
Where the reticle lives in the optical path determines whether holdovers are correct at any power, or only at one. First focal plane (FFP) reticles scale with the target image; second focal plane (SFP) reticles stay visually fixed and are calibrated at one magnification, almost always the maximum.