# splat-rs **splat-rs** es un *fork* / port a Rust de [**SPLAT!**](http://www.qsl.net/kd2bd/splat.html) (Signal Propagation, Loss, And Terrain analysis tool), la herramienta de predicción de cobertura de radiofrecuencia de referencia en el mundo del radioaficionado y la radiodifusión. ## Proyecto original **SPLAT!** fue creado por **John A. Magliacane, KD2BD** (2002–2014) y es software libre bajo **GPLv2**. Este repositorio es un fork derivado de SPLAT! 1.4.2 — no es un proyecto independiente ni pretende serlo. El núcleo de cálculo de pérdida de propagación (**ITWOM v3.0**, de **Sid Shumate**, a su vez basado en el modelo ITM/Longley-Rice de dominio público del NTIA/ITS con contribuciones de J. D. McDonald y del propio John A. Magliacane) **se mantiene sin modificar**, compilado desde `cpp/itwom3.0.cpp` y llamado vía FFI (`cpp/itwom_ffi.cpp` → `src/itwom.rs`). Ver cabecera de ese archivo para la historia completa de autoría del modelo. ## Qué cambia este fork - **Port completo a Rust** del resto del pipeline (antes en C++): lectura de `.qth`/`.lrp`/`.sdf`/`.az`/`.el`/`.udt`/`.cities`, generación de reportes, mapas de cobertura, KML, gráficos vía gnuplot. - **Paralelización nativa con [rayon](https://crates.io/crates/rayon)**: el cálculo de cobertura, que en el SPLAT! original se paralelizaba lanzando múltiples procesos por separado (uno por radial/azimut), acá corre en un solo proceso multi-hilo — mismo resultado numérico (validado contra el corpus golden de SPLAT! con drift < 0.02 dB), muchísimo más rápido. - Salidas en español, tabla de intensidad de campo (SFT) nueva, defaults métricos, leyenda SVG nativa sin depender de un bitmap font vendorizado. Detalle completo de las fases de desarrollo y decisiones de diseño en el historial de commits. ## Binarios | Binario | Descripción | |---|---| | `splat-rs` | Herramienta principal — compatible en banderas con el SPLAT! original | | `splat-bench` | Microbenchmark serial vs. paralelo del núcleo ITWOM | ## Compilar ```bash cargo build --release ``` Requiere un compilador de C++ (se compila `cpp/itwom3.0.cpp` vía `build.rs`). ## Uso Ver [`MANUAL.md`](./MANUAL.md) para la referencia completa de banderas y ejemplos (análisis de enlace, cobertura, tabla SFT, exportación KML/PPM, etc.). ## Créditos y licencia | | | |---|---| | SPLAT! original | John A. Magliacane, KD2BD (2002–2014) | | ITWOM v3.0 | Sid Shumate (2010), sobre ITM/NTIA (dominio público) | | Port a Rust + paralelización | Charles Escobar, 2026 | Distribuido bajo los términos de la **GNU General Public License v2.0** (GPLv2), heredada del SPLAT! original. Ver el archivo [`LICENSE`](./LICENSE).