✓ CLEAR — LOS clear and Fresnel meets preset threshold (40 % for Meshtastic/ham, 60 % for Wi-Fi). ⚠ MARGINAL — LOS clear but the 1st Fresnel zone is obstructed below the preset threshold. Each link result shows the estimated knife-edge diffraction loss (Diff) in dB. ✕ BLOCKED — terrain crosses the line of sight.
From each node, rays are swept in every direction (1° steps by default) and terrain is sampled every ~40 m out to the smaller of the free-space link budget or the Search cap. A point is covered when (a) the terrain doesn't cross the optical line of sight and (b) the link budget still closes after free-space loss and knife-edge diffraction. Fill is shown in the node's colour: more opaque = stronger margin, fading to the edge; areas with no usable link (terrain shadow) are left blank, and the thin outline marks the farthest reach per direction. Rays and Samples in Settings trade speed for smoothness/accuracy.
Bare terrain misses trees and buildings. Tick Surface clutter in Settings to add canopy/land-cover obstruction: measured tree heights (Meta/WRI via Global Forest Watch) over forest, plus ESA WorldCover land cover (Terrascope). Clutter doesn't hard-block like terrain — it adds frequency-scaled diffraction loss (set by Atten @915, dB/m) as the path grazes through it. The Clear < radius keeps clutter from blocking your own mast. First compute is slower while the data loads.
Tips: terrain is AWS Open Terrain Tiles (~30 m, no key, cached in memory). Open 🐛 LOG to see exactly what each calculation used — link budgets, clutter loading, and per-link results. Use ⇪ SHARE to copy a URL containing your full setup. Modelling is first-order (single knife-edge diffraction, 4/3-earth) — for engineered links verify with a full Longley-Rice/ITWOM tool.