๐ฌ๐ง A ballistic fire control simulator featuring NASA SRTM terrain masking (real elevation data, horizon scan algorithm), asymmetric blast zones blocked by real mountains, nuclear blast zones, radioactive fallout, cluster munitions, Coriolis effect and hybrid ballistic model. Built as microservices: Python/Flask + C#/.NET + Redis Streams.
๐ต๐ฑ Symulator balistyczny z maskowaniem terenowym NASA SRTM (rzeczywiste dane wysokoลciowe, algorytm horizon scan), asymetrycznymi strefami raลผenia blokowanymi przez prawdziwe gรณry, strefami jฤ drowymi, opadem radioaktywnym, gลowicami kasetowymi, efektem Coriolisa i hybrydowym modelem balistycznym. Architektura mikrousลug: Python/Flask + C#/.NET + Redis Streams.
| Feature | Description |
|---|---|
| โฐ๏ธ NASA SRTM Terrain Masking | Real elevation data (90m resolution) โ 72-ray horizon scan algorithm, blast zones blocked by actual mountains |
| ๐ Global SRTM Coverage | ~5700 tiles, full world 60ยฐSโ60ยฐN offline cache (srtm_cache/) |
| ๐ญ Horizon Scan Algorithm | For each of 72 rays: scans terrain profile, detects shadow zones behind ridges |
| ๐ Asymmetric Blast Zones | Zones expand freely through valleys, contract against mountain faces |
| ๐๏ธ Elevation Display | Impact point elevation shown in panel (e.g. โฐ๏ธ SRTM (1340m n.p.m.)) |
| ๐ฌ๏ธ Fallout Polygon Fix | Corrected azimuthโlat/lon conversion โ proper wind-aligned elliptical plume |
| ๐ Hybrid Ballistic Model | SRBM: Euler+ISA physics; ICBM/IRBM: analytic formulas calibrated to SIPRI/CSIS data |
| ๐ Realistic ICBM Data | Sarmat 9000km: 29.9min, apogee 1080km โ / MM-III 8000km: 28.4min, apogee 960km โ |
| ๐๏ธ weapons_db.json | Full weapon database externalized โ 195 systems, all parameters |
| Technology | Role |
|---|---|
| Python 3.10+ / Flask | REST API, SRTM terrain masking, weather, heartbeat, PDF export |
| C# / .NET 10 | Ballistic processor โ hybrid Euler+analytic model, ISA atmosphere, Coriolis |
| Redis 7.x Streams | Microservices queue (XADD/XREAD) + heartbeat |
| NASA SRTM | Real elevation data via srtm.kurviger.de โ 90m global DEM |
| srtm_module.py | Horizon scan terrain masking โ auto-downloads tiles on demand |
| Leaflet.js 1.9.4 | 2D satellite map โ irregular GeoJSON blast polygons |
| CesiumJS 1.114 | 3D globe โ animated trajectories, Primitive API |
| OpenStreetMap Overpass | Fallback terrain density (when SRTM unavailable) |
| Google Satellite | High-res imagery, English labels |
| OpenWeatherMap API | Real-time wind, pressure, temperature |
| ReportLab | Automated PDF ballistic reports |
| Source | Application |
|---|---|
| Glasstone & Dolan (1977) | Nuclear blast radii โ fireball, overpressure zones, thermal burns |
| NATO FM 6-40 | Conventional HE blast zones |
| ISA Standard Atmosphere | Air density by altitude for trajectory simulation |
| Haversine formula | Accurate great-circle distance |
| Euler integration (dt=1.0s) | SRBM trajectory with air drag, Coriolis deflection |
| SIPRI / CSIS / FAS | ICBM calibration data โ apogee ratios, flight times |
| NASA SRTM | Real elevation sampling for terrain masking horizon scan |
Fireball: r = 100 ร W^0.41 [m]
Heavy (20psi): r = 290 ร W^0.33 [m]
Light (5psi): r = 690 ร W^0.33 [m]
Burns (1ยฐ): r = 2200 ร W^0.41 [m]
SRBM / short MRBM (dist < maxRangeSim):
โ Full Euler+ISA simulation
โ FindElevationAngle bisection [45ยฐโ85ยฐ]
โ SimulateFlightTime with ISA density layers
ICBM / IRBM (dist > maxRangeSim):
โ Analytic formulas (calibrated SIPRI/CSIS/FAS):
angle = 45ยฐ
apogee = dist ร apogeeRatio (0.06โ0.13 by range)
tof = dist / (v0 ร 0.70) โ v_avg = 70% burnout velocity
Validation:
ATACMS 165km, v0=1766: tof=134s (2.2min), apogee=10km โ
Iskander 500km, v0=2203: tof=324s (5.4min), apogee=40km โ
Sarmat 9174km, v0=7300: tof=1795s (29.9min), apogee=1101km โ
MM-III 8000km, v0=6700: tof=1706s (28.4min), apogee=960km โ
For each of 72 ray directions (0โ360ยฐ):
elev0 = SRTM elevation at impact point
max_horizon = -999ยฐ
For each sample s (0 to n_samples):
d = max_blast_radius ร s / n_samples
point = impact + d ร direction
elev = SRTM.get_elevation(point)
angle = atan2(elev - elev0, d) โ elevation angle from impact
if angle > max_horizon:
max_horizon = angle โ new horizon line
elif max_horizon > 3ยฐ and angle < max_horizon - 3ยฐ:
shadow_dist = d โ terrain blocks wave here
break
ray_factor = shadow_dist / max_blast_radius (0..1)
Polygon: each zone radius ร ray_factor ร small noise
Result: asymmetric polygon โ contracted against ridges, expanded through valleys
| Category | Systems |
|---|---|
| Artillery | AHS KRAB 155mm (L52), M120 RAK 120mm, Leopard 2 120mm |
| Category | Systems |
|---|---|
| Artillery | M109A7 Paladin, M198, M777 |
| Missiles | ATACMS-A, HIMARS/GMLRS, PrSM, PAC-3 MSE, SM-3/6, Lance โข, Pershing II โข, GLCM โข, Minuteman III โข, Trident II D5 โข, W76-2 โข |
| Cruise | Tomahawk, JASSM-ER, LRASM, AGM-86 ALCM โข, AGM-183 ARRW (Mach 20) |
| Aircraft โ๏ธ | B-29 (Little Boy/Fat Man 1945), B-52 โข, B-1B, F-35A โข, B-2 Spirit โข, B-21 Raider โข, F-15E โข |
| Category | Systems |
|---|---|
| Artillery | 2S19 Msta-S, 2S3 Akacja, 2S7 Pion (203mm), 2S35 Koalicja, 2S1 Gvozdika |
| Missiles | Iskander-M 9M723, Tochka-U, Scud-B, Kinลผaล, Rubezh โข, Sarmat โข, Bulava โข, Sinewa โข, Yars โข, Topol-M โข, Avangard โข |
| Cruise | Kalibr, Oniks, Zircon (Mach 9), Burevestnik โข, Kh-101, Kh-102 โข |
| Aircraft โ๏ธ | Tu-160 Blackjack โข, Tu-95 Bear โข, Tu-22M Backfire โข |
| Category | Systems |
|---|---|
| Missiles | DF-11A, DF-15B, DF-17, DF-21D, DF-26 โข, DF-27 โข, DF-31AG โข, DF-41 โข, DF-4 โข, DF-5B โข |
| SLBM | JL-2 โข, JL-3 โข |
| Cruise | CJ-10, YJ-12, DF-100, BrahMos, C-802 |
| Aircraft โ๏ธ | H-6K โข |
| Country | Systems |
|---|---|
| ๐ฐ๐ต N. Korea | KN-23, Hwasong-12/15/17/18 โข, Pukguksong-3 โข |
| ๐ฎ๐ท Iran | Fateh-110, Zolfaghar, Shahab-3, Khorramshahr, Fattah, Emad, Ghadr |
| ๐ฎ๐ฑ Israel | Jericho II, Jericho III โข |
| ๐ฎ๐ณ India | Agni-V โข, Agni-VI โข, K-4 โข, BrahMos |
| ๐ต๐ฐ Pakistan | Shaheen-III โข, Ababeel โข, Ra'ad โข |
| ๐ฌ๐ง UK | Storm Shadow, Trident II โข, Avro Vulcan B2 โข โ๏ธ |
| ๐ซ๐ท France | M51 โข, SCALP-EG, ASMP-A โข, Rafale F3 โข โ๏ธ |
| ๐ฉ๐ช Germany | PzH 2000, TAURUS KEPD 350, Tornado IDS โข โ๏ธ |
| ๐น๐ท Turkey | SOM, Bora, Kasirga |
| ๐ฐ๐ท S. Korea | K9 Thunder, Hyunmoo-2C/3C/4/5 |
| ๐บ๐ฆ Ukraine | Bohdana, Neptune, Vilkha, Hrim-2 |
| ๐ธ๐ฆ Saudi Arabia | CSS-5 โข |
| ๐ธ๐ช Sweden | Archer FH77BW, RBS-15 |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ Redis Streams โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Python / Flask โ โโโโโโโโโโโโโโโโโโโบ โ C# Processor โ
โ โ ballistics:stream โ โ
โ - Leaflet 2D โ โ - Hybrid ballistic โ
โ - CesiumJS 3D globe โ โโโโโโโโโโโโโโโโโโโ โ - Euler+ISA (SRBM) โ
โ - SRTM terrain masking โ ballistics:result โ - Analytic (ICBM) โ
โ - srtm_module.py โ โ - ISA atmosphere โ
โ - Horizon scan โ Redis Keys โ - Coriolis effect โ
โ - /api/terrain route โ โโโโโโโโโโโโโโโโโโโบ โ โ
โ - /health heartbeat โ processor:heartbeat โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ - PDF export โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
srtm_module.py
โโโ get_elevation() โ bilinear interpolation from HGT tile
โโโ terrain_shadowing_factor() โ horizon scan per ray
โโโ compute_blast_radii_with_terrain() โ 72-ray polygon generator
โโโ srtm_cache/ โ local tile cache (~16GB, gitignored)
git clone https://github.com/InsaneInfinity/Balistic.git cd Balistic pip install flask redis requests python-dotenv reportlab numpy srtm.py
Create .env:
WEATHER_API_KEY=your_openweathermap_key
CESIUM_TOKEN=your_cesium_ion_token
dotnet build dotnet run
python balistic_input.py
Login: admin / admin โ http://127.0.0.1:5000
python srtm_module.py
python download_srtm_tiles.py
SRTM tiles cached in srtm_cache/ (gitignored). First shot in new region = auto-download (~3s).
pip install numpy srtm.py)| Action | Effect |
|---|---|
| RMB | Move shooter |
| LMB | Mark target |
| FIRE | Launch to all targets simultaneously |
| ๐ 3D | Toggle CesiumJS globe |
| ๐ฐ๏ธ Layer | Switch map layer |
| ๐ฏ GPS | Search target by name or coordinates |
| History click | Zoom + update results panel |
| โฌ PDF | Export ballistic report |
For educational and simulation purposes only. All data from publicly available sources: Glasstone & Dolan 1977, CSIS Missile Threat, Jane's, NATO FM 6-40, SIPRI, OSINT. Real fire control systems use significantly more complex models.
MIT โ use it, modify it, build on it.
| Feature | Opis |
|---|---|
| โฐ๏ธ NASA SRTM | Rzeczywiste dane wysokoลciowe (90m) โ algorytm horizon scan, strefy blokowane przez prawdziwe gรณry |
| ๐ Globalne pokrycie SRTM | ~5700 tile, caลy ลwiat 60ยฐSโ60ยฐN w cache offline |
| ๐ญ Horizon Scan | 72 promienie, skanowanie profilu terenu, wykrywanie stref cienia za grzbietami |
| ๐ Asymetryczne strefy | Strefy rozszerzajฤ siฤ przez doliny, kurczฤ przy zboczach |
| ๐ฌ๏ธ Poprawiony opad | Poprawiona konwersja azymutโlat/lon โ wลaลciwa elipsa zgodna z wiatrem |
| ๐ Hybrydowy model | SRBM: fizyka Euler+ISA; ICBM/IRBM: wzory analityczne kalibrowane SIPRI/CSIS |
| ๐ Realistyczne ICBM | Sarmat 9000km: 29.9min, apogeum 1080km โ |
| ๐๏ธ weapons_db.json | Zewnฤtrzna baza 195 systemรณw |
git clone https://github.com/InsaneInfinity/Balistic.git cd Balistic pip install flask redis requests python-dotenv reportlab numpy srtm.py
Utwรณrz .env:
WEATHER_API_KEY=twรณj_klucz_openweathermap
CESIUM_TOKEN=twรณj_token_cesium_ion
dotnet build && dotnet run
python balistic_input.py
Login: admin / admin โ http://127.0.0.1:5000
python srtm_module.py # test moduลu python download_srtm_tiles.py # opcjonalne: pobierz caลy ลwiat (~16GB, ~3h)
Tile w srtm_cache/ (w .gitignore). Pierwszy strzaล w nowy region = auto-pobranie (~3s).
System wyลฤ cznie do celรณw edukacyjnych i symulacyjnych. Dane z jawnych ลบrรณdeล: Glasstone & Dolan 1977, CSIS, Jane's, NATO FM 6-40, SIPRI, OSINT.
MIT โ uลผywaj, modyfikuj, rozwijaj.