DEV Community

Patryk
Patryk

Posted on

BALISTIC v6.0 — NASA SRTM Terrain Masking: Blast Zones Now Blocked by Real Mountains

BALISTIC v6.0 — NASA SRTM Terrain Masking

The biggest update yet. Blast zones are no longer circles —
they're now physically accurate polygons blocked by real terrain.

What changed

Previous versions used random noise + OSM building density to
generate "irregular" zones. Looked nice, but wasn't physically
meaningful. Mountains didn't block anything.

v6.0 integrates NASA SRTM elevation data (90m resolution,
global coverage) with a horizon scan algorithm:

For each of 72 ray directions:

  • Sample terrain elevation every ~400m along the ray
  • Track the "horizon angle" seen from the blast point
  • When terrain drops behind a ridge → shadow zone starts
  • Clip the blast radius at that distance

Result: zones expand freely through valleys, contract against
mountain faces.

Three test cases

Islamabad, Pakistan
The city sits at the foot of Margalla Hills. North-west zones
are cut hard by the ridge. South-east over the flat Indus plain
— full radius, nothing blocking.

Red Rock Canyon, Las Vegas
Impact point in the canyon. West zones cut by canyon walls.
East toward the city — open desert, full radius.
The asymmetry is dramatic.


Jerusalem
Impact on the ridge (535m). East toward the Judean Desert —
zones extend far through the open valley. West toward the
Judean Hills — clipped.

Tech

  • srtm_module.py — downloads tiles from srtm.kurviger.de on first shot, caches locally
  • ~5700 tiles, full world 60°S–60°N offline
  • 72-ray horizon scan per shot, ~35 samples per ray
  • Fallback to OSM Overpass density if SRTM unavailable

Also in v6.0

  • Fixed ballistic model for ICBM/IRBM — Sarmat 9000km now gives correct 29.9min flight time and 1080km apogee (was stuck at hardcoded values before)
  • Corrected fallout polygon geometry — wind-aligned ellipse was broken due to wrong azimuth→lat/lon conversion
  • weapons_db.json — all 195 weapon systems externalized

Stack

Python/Flask + C#/.NET 10 + Redis Streams + Leaflet.js +
CesiumJS + NASA SRTM

GitHub: https://github.com/InsaneInfinity/Balistic

Top comments (0)