|
| auto | validate (const GeoLocation &location) -> void |
| | Validate an observer location, throwing on out-of-range or non-finite coordinates.
|
| auto | jde_tt_to_jd_ut1 (const double jde_tt) -> double |
| | Convert a JDE (TT) to the JD (UT1) of the same instant.
|
| template<BodyProvider P> |
| auto | body_local (const double jde_tt, const GeoLocation &location, const P &provider) -> BodyLocal |
| | Compute a body's local hour angle and equatorial coordinates for an observer.
|
| template<BodyProvider P> |
| auto | altitude (const double jde_tt, const GeoLocation &location, const P &provider) -> toolbox::AngleDeg |
| | Compute a body's geometric altitude for an observer at one instant.
|
template<typename Func>
requires std::invocable<const Func&, double> and std::convertible_to<std::invoke_result_t<const Func&, double>, double> |
| auto | golden_section_argmin (const Func &f, const double a, const double b, const double tolerance=EXTREMUM_SEARCH_TOLERANCE_DAYS) -> double |
| | Find the argmin of a unimodal function on [a, b] by golden-section search.
|
| template<typename Func> |
| auto | altitude_grid (const Func &f, const double start_jde_tt, const double step_days) -> AltitudeGrid |
| | Sample every grid endpoint in increasing TT order, including both window ends.
|
| template<typename Func> |
| auto | interior_extrema (const Func &f, const double start_jde_tt, const double step_days, const AltitudeGrid &values) -> std::vector< AltitudeExtremum > |
| | Refine strict direction changes; a flat plateau does not define an interior extremum.
|
| template<typename Func> |
| auto | append_edge_extrema (const Func &f, const double lo_jde_tt, const double hi_jde_tt, std::vector< AltitudeExtremum > &extrema) -> void |
| | Probe a cell with a missing outer grid neighbor for an interior minimum and maximum.
|
template<typename Func>
requires std::invocable<const Func&, double> and std::convertible_to<std::invoke_result_t<const Func&, double>, double> |
| auto | find_extrema (const Func &f, const double a, const double b) -> std::vector< AltitudeExtremum > |
| | Find every local extremum of the altitude curve on [a, b], in time order.
|
| template<BodyProvider P> |
| auto | min_altitude_jde (const double transit, const bool before, const GeoLocation &location, const P &provider) -> double |
| | Find the instant of minimum altitude in the half-arc adjacent to a transit.
|
| auto | validate_pm90 (const char *name, const double angle_deg) -> void |
| | Reject a named non-finite angle or one outside [-90°, 90°].
|
| auto | validate_rise_set_inputs (const double transit_jde_tt, const GeoLocation &location, const toolbox::AngleDeg &h0) -> void |
| | Validate rise_set_jde's inputs.
|
template<typename Func>
requires std::invocable<const Func&, double> and std::convertible_to<std::invoke_result_t<const Func&, double>, double> |
| auto | crossing_in_bracket (const Func &f, const double lo_jde, const double hi_jde, const bool rising) -> std::optional< Solved > |
| | Try to solve one altitude crossing inside a bracket.
|
| template<BodyProvider P> |
| auto | polish_transit (const double estimate_jde, const GeoLocation &location, const P &provider) -> double |
| | Polish a transit estimate into the instant of upper culmination (H = 0).
|
| auto | day_window (const std::chrono::year_month_day &ymd_ut1) -> DayWindow |
| | Convert both UT1 midnights independently; a UT1 day is not exactly one TT day.
|
| auto | crossing_error (const std::string_view caller, const bool rising, const Solved &solved, const double lo_jde_tt, const double hi_jde_tt) -> std::runtime_error |
| | Describe a bracketed altitude crossing that failed its caller's residual guard.
|
| template<typename Func> |
| auto | scan_day_crossings (const Func &f, const DayWindow &window, const std::vector< AltitudeExtremum > &extrema, Result &result) -> void |
| | Scan monotone segments in time order, trying rise before set and keeping later crossings.
|
| template<typename Func> |
| auto | day_polar (const Func &h, const DayWindow &window, const std::vector< AltitudeExtremum > &extrema, const toolbox::AngleDeg &h0) -> Polar |
| | Classify a crossing-free day from its global altitude bounds, including the window ends.
|