Batch single-epoch coverage helpers backed by the Rust core.
Summary
Functions
Compute {azimuth_deg, elevation_deg, range_km} for every satellite/station pair.
Compute detailed per-cell results while retaining input satellite row positions.
Types
@type detailed_look_cell() :: {:ok, {float(), float(), float()}} | {:error, look_angle_error()}
@type look_angle_error() :: {:invalid_input, String.t(), String.t()} | {:init, sgp4_error()} | {:propagate, sgp4_error()} | {:frame_transform, frame_transform_error()}
Functions
@spec look_angles([Sidereon.Elements.t()], [station()], datetime()) :: [[look_cell()]]
Compute {azimuth_deg, elevation_deg, range_km} for every satellite/station pair.
If SGP4 initialization fails, this legacy API raises ErlangError with the
typed, unindexed sgp4_error() in error.original. Use look_angles_detailed/3
to retain one row per input satellite when stations are present.
@spec look_angles_detailed([Sidereon.Elements.t()], [station()], datetime()) :: [ [detailed_look_cell()] ]
Compute detailed per-cell results while retaining input satellite row positions.
With stations present, a satellite initialization failure fills that satellite's
row with {:error, {:init, sgp4_error()}}. If there are no stations and an
initialization fails, no cell can carry the failure, so this function raises
ErlangError whose original is
{:satellite_initialization, input_index, sgp4_error()}.