CelestialCalendar 1.0.0 · unreleased development @ 67a7c4c79a4a4a6aa7e703c9e6f0039ae34bee82
Loading...
Searching...
No Matches
astro::planet::phenomena::detail Namespace Reference

Classes

struct  Sample
 Solver samples in degrees; samples() lifts longitude and difference continuously across the grid. More...
struct  SamplingWindow
struct  CrossingSpec

Enumerations

enum class  Category : uint8_t { INNER , OUTER }

Functions

auto category (const Planet planet) -> Category
 Select the inner/outer event family, rejecting unnamed planets.
auto raw_difference (const toolbox::SphericalCoordinate &source, const toolbox::SphericalCoordinate &target) -> double
 Hand over target-minus-source longitude to the scalar solvers as IEEE-remainder degrees.
auto raw_difference (const Planet planet, const double jde_tt) -> double
 Evaluate apparent planet-minus-Sun longitude in degrees at JDE(TT).
auto sample (const Planet planet, const double jde_tt) -> Sample
 Evaluate longitude, planet-minus-Sun difference and great-circle separation at JDE(TT).
auto samples (const Planet planet, const SamplingWindow window) -> std::vector< Sample >
 Sample a padded absolute TT lattice, lifting each angle relative to the preceding sample.
auto refine_crossing (const Planet planet, const Sample &left_sample, const Sample &right_sample, const CrossingSpec spec) -> double
 Bisect a lifted longitude crossing until both the degree residual and TT bracket width pass.
template<typename Objective>
auto refine_extremum (const Planet planet, const double left_jde_tt, const double right_jde_tt, const bool maximize, const Objective &objective) -> double
 Contract an extremum bracket in TT, then require a strict two-sided objective witness.
auto crossing_samples (const Planet planet, const std::vector< Sample > &grid) -> std::vector< Sample >
 Insert refined reversals of the lifted difference so a coarse interval can expose two crossings.
auto outer_kind (const int64_t level_index) -> Kind
 Map an unwrapped 90-degree level index to the outer planet's event kind.
auto append_crossings (const Planet planet, const Category planet_category, const std::vector< Sample > &grid, std::vector< Event > &result) -> void
 Append longitude crossings in grid order; the caller later combines them with extrema.
auto append_extrema (const Planet planet, const Category planet_category, const std::vector< Sample > &grid, std::vector< Event > &result) -> void
 Append separation maxima and lifted-longitude turns, not zeros of the seven-point rate.
auto in_year (const double jde_tt, const double start_jde_tt, const double end_jde_tt) -> bool
 Test ownership in the UTC year's half-open JDE(TT) window.
auto search (const Planet planet, const double start_jde_tt, const double end_jde_tt, const double step_days) -> std::vector< Event >
 Combine annual event candidates, retain query-owned times and deduplicate consecutive same-kind events.

Variables

constexpr double COARSE_STEP_DAYS
constexpr double TIME_TOLERANCE_DAYS
constexpr double ANGLE_RESIDUAL_TOLERANCE_DEG
constexpr double WITNESS_HALF_WIDTH_DAYS
constexpr double DEDUPLICATION_TOLERANCE_DAYS
constexpr std::size_t MAX_REFINEMENT_ITERATIONS
constexpr int32_t PLUTO_EVENT_START_YEAR
constexpr int32_t PLUTO_EVENT_END_YEAR

Enumeration Type Documentation

◆ Category

enum class astro::planet::phenomena::detail::Category : uint8_t
strong
Enumerator
INNER 
OUTER 

Function Documentation

◆ append_crossings()

auto astro::planet::phenomena::detail::append_crossings ( const Planet planet,
const Category planet_category,
const std::vector< Sample > & grid,
std::vector< Event > & result )->void
inline

Append longitude crossings in grid order; the caller later combines them with extrema.

◆ append_extrema()

auto astro::planet::phenomena::detail::append_extrema ( const Planet planet,
const Category planet_category,
const std::vector< Sample > & grid,
std::vector< Event > & result )->void
inline

Append separation maxima and lifted-longitude turns, not zeros of the seven-point rate.

◆ category()

auto astro::planet::phenomena::detail::category ( const Planet planet) ->Category
inlinenodiscard

Select the inner/outer event family, rejecting unnamed planets.

◆ crossing_samples()

auto astro::planet::phenomena::detail::crossing_samples ( const Planet planet,
const std::vector< Sample > & grid )->std::vector< Sample >
inlinenodiscard

Insert refined reversals of the lifted difference so a coarse interval can expose two crossings.

◆ in_year()

auto astro::planet::phenomena::detail::in_year ( const double jde_tt,
const double start_jde_tt,
const double end_jde_tt )->bool
inlinenodiscard

Test ownership in the UTC year's half-open JDE(TT) window.

◆ outer_kind()

auto astro::planet::phenomena::detail::outer_kind ( const int64_t level_index) ->Kind
inlinenodiscard

Map an unwrapped 90-degree level index to the outer planet's event kind.

◆ raw_difference() [1/2]

auto astro::planet::phenomena::detail::raw_difference ( const Planet planet,
const double jde_tt )->double
inlinenodiscard

Evaluate apparent planet-minus-Sun longitude in degrees at JDE(TT).

◆ raw_difference() [2/2]

auto astro::planet::phenomena::detail::raw_difference ( const toolbox::SphericalCoordinate & source,
const toolbox::SphericalCoordinate & target )->double
inlinenodiscard

Hand over target-minus-source longitude to the scalar solvers as IEEE-remainder degrees.

◆ refine_crossing()

auto astro::planet::phenomena::detail::refine_crossing ( const Planet planet,
const Sample & left_sample,
const Sample & right_sample,
const CrossingSpec spec )->double
inlinenodiscard

Bisect a lifted longitude crossing until both the degree residual and TT bracket width pass.

Note
Exact endpoint zeros return before refinement; this differs from the Placidus residual-or-width rule.

◆ refine_extremum()

template<typename Objective>
auto astro::planet::phenomena::detail::refine_extremum ( const Planet planet,
const double left_jde_tt,
const double right_jde_tt,
const bool maximize,
const Objective & objective )->double
inlinenodiscard

Contract an extremum bracket in TT, then require a strict two-sided objective witness.

See also
Kiefer, "Sequential minimax search for a maximum", Proc. Amer. Math. Soc. 4 (1953), 502-506.

◆ sample()

auto astro::planet::phenomena::detail::sample ( const Planet planet,
const double jde_tt )->Sample
inlinenodiscard

Evaluate longitude, planet-minus-Sun difference and great-circle separation at JDE(TT).

◆ samples()

auto astro::planet::phenomena::detail::samples ( const Planet planet,
const SamplingWindow window )->std::vector< Sample >
inlinenodiscard

Sample a padded absolute TT lattice, lifting each angle relative to the preceding sample.

◆ search()

auto astro::planet::phenomena::detail::search ( const Planet planet,
const double start_jde_tt,
const double end_jde_tt,
const double step_days )->std::vector< Event >
inlinenodiscard

Combine annual event candidates, retain query-owned times and deduplicate consecutive same-kind events.

Variable Documentation

◆ ANGLE_RESIDUAL_TOLERANCE_DEG

double astro::planet::phenomena::detail::ANGLE_RESIDUAL_TOLERANCE_DEG
inlineconstexpr

◆ COARSE_STEP_DAYS

double astro::planet::phenomena::detail::COARSE_STEP_DAYS
inlineconstexpr

◆ DEDUPLICATION_TOLERANCE_DAYS

double astro::planet::phenomena::detail::DEDUPLICATION_TOLERANCE_DAYS
inlineconstexpr

◆ MAX_REFINEMENT_ITERATIONS

std::size_t astro::planet::phenomena::detail::MAX_REFINEMENT_ITERATIONS
inlineconstexpr

◆ PLUTO_EVENT_END_YEAR

int32_t astro::planet::phenomena::detail::PLUTO_EVENT_END_YEAR
inlineconstexpr

◆ PLUTO_EVENT_START_YEAR

int32_t astro::planet::phenomena::detail::PLUTO_EVENT_START_YEAR
inlineconstexpr

◆ TIME_TOLERANCE_DAYS

double astro::planet::phenomena::detail::TIME_TOLERANCE_DAYS
inlineconstexpr

◆ WITNESS_HALF_WIDTH_DAYS

double astro::planet::phenomena::detail::WITNESS_HALF_WIDTH_DAYS
inlineconstexpr