I added a couple more things relating to range and bearing yesterday evening, and the easiest thing appears to be an early coordinate transformation.
I already know that all points are within 15km groundrange, so for practical purposes can assume that the local coordinate system is flat. At that point converting to either relative coordinates in metres or km or to absolute coordinates relative to some distant point makes things much easier, and in practice can probably be done very early in the calculations.
Hence calculations of range, bearing (azimuth) and altitude may be computed with minimal transcendentals.
However I think it is also useful to be able to dump any program-generated regions in e.g. GPX format, so that their correctness can be checked in an external GIS (QGIS, Google Earth running locally on a PC, etc.).
MarkMLl