Detail info

Complete feature guide for Tom’s Ballistics — inputs, libraries, trajectory physics, chart/table tools, preferences, export, and free recoil.

Feature highlights

Imperial / metric Caliber search Bullet library G1–G8 · GL · Custom Form-factor BC Multi-band BC ICAO / ASM atmosphere Miller Sg MPM spin drift + decay RH / LH twist Wind profile / gust Aerodynamic jump Coriolis / Eötvös Interactive chart Reticle hold Mach bands Column / font prefs Cookie restore DOPE card JPG / PDF / CSV export Live free recoil

Platform / UI

FeatureNotes
Imperial / metric unitsToggle converts form values and all outputs; engine always integrates in imperial internally
Searchable caliber libraryCombo search from calibers.json (name, aliases, diameter, category); blank = custom cartridge
Bullet library pickerDiameter → manufacturer → bullet; selecting autofills weight, length, BC, and drag model (all overwritable)
Sectional densityLive SD = weight ÷ (7000 × diameter²)
Drag-model visual pickerSilhouette thumbs for G1–G8, GL, and Custom (reference projectile shapes for each drag function)
Form-factor pickerWhen BC is empty (non-Custom): shape presets pick a drag model and estimate BC = SD / i
Custom drag tableMach, Cd pairs (one per line); BC acts as a scale factor (1.0 ≈ absolute form factor 1)
Reticle / sight pickerIron, peep, magnified, red-dot, holographic; SVG preview + chart holdover overlay; selector lists iron & peep first, then others sorted by name
Correction per clickTurret POI shift per click (in @ 100 yd or mm @ 100 m) → Drop/Wind Clicks columns
Live free-recoil panelUpdates as inputs change, before or after a full calculate
Results summaryCaliber, drag/BC, SD, Sg pill, opt/min twist, density ratio, atmosphere standard, Coriolis on/off, zero elevation MOA, aero jump MOA (when wind), twist, wind, muzzle TKO & PF
Interactive trajectory chartPath vs LOS, velocity, and Sg vs range; hover tooltip + reticle hold
DOPE / truing cardCompact printable holds (MOA/MRAD/clicks) at common distances from the current trajectory; also via Download menu
Trajectory tableColumn picker, font-size slider, Mach-bands toggle, deeper green row hover, Sg color bands
Cookie consentAccept / Decline banner; reopen via Cookie settings in the footer
Location & weatherAtmosphere section button opens a picker (ZIP / address search via Open-Meteo + Nominatim postal lookup, GPS, Leaflet map). When a postal code matches multiple countries, a country dropdown filters results before apply. Current conditions from Open-Meteo multi-model best match fill temp, station pressure, humidity, elevation, latitude, wind speed, and clock wind direction from shooting azimuth

Data libraries

SourceContents
calibers.jsonSearchable cartridge list (names, aliases, diameters, categories)
data/bullets.jsonMerged component / catalog library: MidwayUSA, JBM lengths, Sierra official G1/G7 catalog, manufacturer BC catalogs, BulletArc, commercial ammo scrapes, cast makers, and related sources; sibling BC backfill copies catalog BCs onto sparse picker rows; Litz-labeled rows get Bryan Litz / Applied Ballistics measured G1/G7 from the public Courtney (2012) tables plus Berger catalog siblings
Autofill preferenceUses G7 BC when both G1 and G7 exist; measured lengths can highlight vs typical averages
data/drag_cd.jsonStandard Cd vs Mach tables for G1–G8 and GL
data/reticles.jsonIron, peep, scope, red-dot, and holographic catalogs for the hold overlay

Inputs

GroupFields
Firearm / sightMuzzle velocity, zero range, sight height, twist (1:N), twist direction (RH/LH), reticle, correction per click, firearm weight, powder charge (blank → estimate)
AmmunitionManufacturer, bullet, weight, diameter, length, drag model, BC (or Custom scale), optional multi-band BC (fps, bc lines), form factor, custom Cd table
AtmosphereICAO or Army Standard Metro (BC density reference ρ₀); temperature, pressure, humidity, altitude; Apply standard conditions fills sea-level T/P/RH/alt for the selected standard; Location & weather… fills live station conditions via Open-Meteo
CoriolisOptional latitude (+N / −S) and azimuth / shooting direction (0° N, 90° E); both required or Coriolis / Eötvös stay off
TargetTarget distance, wind speed & direction (0 head / 90 right / 180 tail / 270 left), optional wind profile (range, speed, dir) and gust (±), shooting angle (+ incline / − decline), table step

Atmosphere tip: leave pressure at the standard sea-level value to derive pressure from altitude.

Trajectory engine

Integrator: Heun (improved Euler) point-mass.
Drag: Cd vs Mach from standard tables or a custom curve; scalar or multi-band BC (velocity thresholds) scales the drag.
Atmosphere: ICAO or Army Standard Metro BC density reference (temp, pressure, humidity, altitude).
Zero: Elevation solved to zero range (spin ignored in the zero solve). Output always includes a sample at the zero distance.

Variables used in the flight path

VariableUsed for
Muzzle velocityLaunch speed
Zero rangeSight elevation solve
Sight heightInitial path offset below LOS
Bullet weightEnergy, TKO, PF, sectional density, inertias, recoil
Bullet diameterSD, TKO, inertias, area for MPM
Bullet lengthMiller Sg, inertias (Iy)
Drag model + BC (or custom Cd)Drag deceleration; optional multi-band BC by airspeed
Temperature, pressure, humidity, altitudeAir density / Mach / sound speed
Wind speed + direction (+ profile / gust)Range & cross wind; layered wind by range; gust → ± windage band
Shooting angleIncline / decline
Target distance + table stepOutput sampling
Twist rate + directionLaunch spin, Miller Sg, MPM spin drift hand (RH/LH)
Latitude + azimuth (both required)Coriolis / Eötvös; blank = off

Derived / secondary physics

QuantityFrom
Atmosphere standardICAO or Army Standard Metro (BC density reference ρ₀)
Density ratioActual density / selected standard ρ₀
Sectional densityWeight / diameter²
Miller / Berger SgWeight, diameter, length, twist, MV, atmosphere; fv floors near sonic (~1120 fps)
Opt / min twistSame inputs for Sg 1.5 (optimal) and 1.3 (marginal)
Sg bands≥1.5 stable (high if ≥2), ≥1.3 marginal, else unstable
MPM spin driftTwist, MV, Sg → C, yaw of repose, lift (C≈2); McCoy spin decay (Clp≈0.02); RH drifts right, LH left
Aerodynamic jumpLitz closed-form: MOA/mph ≈ 0.01·Sg − 0.0024·L + 0.032 (L in calibers); applied as launch elevation bias; hand follows twist; wind from the right → jump up for RH; zero solve ignores AJ
Coriolis / EötvösLatitude, azimuth, velocity (when both lat & az set)
Downrange SgMuzzle Sg × (MV / v)² × (p / p₀)² with spin decay
TKO(grains × velocity × diameter) / 7000
Power factor(grains × velocity) / 1000

Outputs — chart, table, summary

SurfaceContents
Chart seriesPath vs LOS (with drop fill), velocity, Sg (dashed); fine dash at Sg 1.5; dashed LOS at zero height
Chart tooltipRange, path, drop, velocity, energy, TKO, PF, Sg; reticle hold block with nearest mark
Table columnsRange (always on), Path, Drop, Wind, Spin, Vel, Energy, TKO, PF, Sg, TOF, Drop MOA / MRAD / Clicks, Wind MOA / MRAD / Clicks — plus Mach when Mach bands are on
AnglesTrue angular offset vs LOS: MOA = in × 100 / (yd × 1.047); MRAD = in × 100 / (yd × 3.6)
WindageAero + Coriolis + spin; Spin column shows spin-only drift; optional gust shows ± band on Wind
Table font9–28 px slider; auto-fits to panel width until you choose a size; choice is saved and restored (clamped so the table still fits)
Column visibilityCheckboxes above the table; selection saved with prefs (Range stays on)

Mach bands

Toggle beside the font-size control. Uses the same local speed of sound as the trajectory engine (temperature + path-height lapse).

Reticle overlay

Display only. Impact / hold is recomputed from path vs LOS at the hover range. Hold is on (0) at the zero distance — never at the muzzle. Trajectory output always includes a sample at the zero range so short zeros (e.g. 25 yd with a 50 yd step) stay correct.

Categories: iron, peep, magnified (scope, FFP/SFP), red-dot, holographic — MOA or MRAD catalogs. The sight selector lists iron and peep first, then other sights sorted by name. Hover shows hold over / under and wind hold, plus the nearest hash or dot mark (where applicable).

Drop MOA / MRAD are true angles at that range: MOA = inches × 100 / (yards × 1.047). At 100 yd, 1 MOA ≈ 1.047″; at 1 yd, 1 MOA ≈ 0.01″ — so a 1.4″ sight-height offset near the muzzle is ~134 MOA, not a math error.

Free recoil

Separate from the trajectory solve; evaluated at muzzle velocity (V0) only. Gas model uses an effective powder-gas velocity of 4700 fps.

VariableRole
Firearm weightGun mass
Bullet weightProjectile mass
Powder chargeOptional; else estimated from caliber / load heuristics (field fills when estimated)
Muzzle velocityRecoil velocity at V0

Outputs: free-recoil impulse, velocity, and energy, with a short method note

Saved preferences

ItemBehavior
ConsentAccept stores prefs; Decline keeps the session only and clears stored prefs
Form fieldsAll named calculator inputs are saved and restored on the next visit
Display prefsTable columns, chosen font size (and user-lock), Mach-bands on/off
StorageCookie tba_prefs (1 year) plus a full localStorage backup for large payloads (e.g. custom drag)

Export

After Calculate: Download chart & table as JPG, PDF, or CSV (Letter when imperial, A4 when metric for PDF). CSV downloads the trajectory table (all columns present, including Mach when bands are on). Filename uses caliber and drag model. Hover UI and the column picker are hidden while capturing JPG/PDF.

Explicitly not modeled

Copyright 2026 Red Oak Arms LLC · Rev 1.2.42 · Aug-11-2026