siderust-cpp 0.8.0
Header-only C++ wrapper for siderust
Loading...
Searching...
No Matches
siderust Namespace Reference

Namespaces

namespace  detail
namespace  sun
namespace  moon
namespace  star_altitude
namespace  icrs_altitude
namespace  body
namespace  centers
namespace  constants
namespace  spherical
namespace  cartesian
namespace  coordinates
namespace  ephemeris
namespace  frames
namespace  lambert
namespace  oem
namespace  tle
namespace  sgp4

Classes

struct  CrossingEvent
 A threshold-crossing event (rising or setting). More...
struct  CulminationEvent
 A culmination (local altitude extremum) event. More...
struct  SearchOptions
 Options for altitude search algorithms. More...
struct  Iau2000A
struct  Iau2000B
struct  Iau2006
struct  Iau2006A
class  AstroContext
struct  AzimuthCrossingEvent
 An azimuth bearing-crossing event. More...
struct  AzimuthExtremum
 An azimuth extremum event. More...
struct  ProperMotion
 Proper motion for a star (equatorial). More...
struct  SolarMass
struct  SolarRadius
struct  SolarLuminosity
struct  StellarProperties
struct  Planet
 Planet data (value type, copyable). More...
class  Star
 RAII handle to a Star (opaque Rust object). More...
class  BodyTarget
 Target implementation for solar-system bodies. More...
struct  BodycentricPos
 Result of a body-centric coordinate transformation. More...
struct  Geodetic
 Geodetic position (WGS84 ellipsoid). More...
class  SiderustException
class  NullPointerError
class  InvalidFrameError
class  InvalidCenterError
class  TransformFailedError
class  InvalidBodyError
class  UnknownStarError
class  InvalidPeriodError
class  AllocationFailedError
class  InvalidArgumentError
class  InternalPanicError
class  DataLoadError
class  OutOfRangeError
class  NoEopDataError
class  InvalidDimensionError
struct  MoonPhaseGeometry
 Geometric description of the Moon's phase at a point in time. More...
struct  PhaseEvent
 A principal lunar phase event (new moon, first quarter, etc.). More...
struct  Eccentricity
struct  AngularRate
struct  KeplerianOrbit
struct  MeanMotionOrbit
struct  ConicOrbit
class  PreparedOrbit
struct  BodycentricParams
 Parameters for a body-centric coordinate system. More...
struct  CartesianVelocity
 Cartesian velocity in AU/day, tagged by reference frame. More...
class  RuntimeEphemeris
 Runtime-loaded JPL DE4xx ephemeris. More...
struct  SkyGridCell
 A single sky-grid cell: a Horizontal direction and its solid angle. More...
class  SkyGrid
 Typed hemispherical alt/az grid sampler. More...
class  StarTarget
 Target implementation wrapping a const Star&. More...
class  Subject
 Unified, lightweight handle representing any celestial subject. More...
class  DirectionTarget
 Fixed celestial direction target — a Target for a specific sky position. More...
class  ProperMotionTarget
 ICRS target with proper motion (RAII wrapper over the FFI handle). More...
class  Target
 Abstract base for any celestial object that can be tracked from an observer location. More...

Typedefs

using ICRSTarget = DirectionTarget<spherical::direction::ICRS>
 Fixed direction in ICRS (most common use-case).
using ICRFTarget = DirectionTarget<spherical::direction::ICRF>
 Fixed direction in ICRF (treated identically to ICRS in Siderust).
using EquatorialMeanJ2000Target = DirectionTarget<spherical::direction::EquatorialMeanJ2000>
 Fixed direction in mean equatorial coordinates of J2000.0 (FK5).
using EquatorialMeanOfDateTarget = DirectionTarget<spherical::direction::EquatorialMeanOfDate>
 Fixed direction in mean equatorial coordinates of date (precessed only).
using EquatorialTrueOfDateTarget = DirectionTarget<spherical::direction::EquatorialTrueOfDate>
using EclipticMeanJ2000Target = DirectionTarget<spherical::direction::EclipticMeanJ2000>
 Fixed direction in mean ecliptic coordinates of J2000.0.
using CivilTime = tempoch::CivilTime
using TimeContext = tempoch::TimeContext
using TT = tempoch::scale::TT
using UTC = tempoch::scale::UTC
using UT1 = tempoch::scale::UT1
using TDB = tempoch::scale::TDB
using TCG = tempoch::scale::TCG
using TCB = tempoch::scale::TCB
using TAI = tempoch::scale::TAI
using GPST = tempoch::scale::GPST
using JD = tempoch::format::JD
using MJD = tempoch::format::MJD
using Unix = tempoch::format::Unix
using GPS = tempoch::format::GPS
using J2000s = tempoch::format::J2000s
using Calendar = CivilTime
template<typename Scale, typename Format>
using Time = tempoch::EncodedTime<Scale, Format>
template<typename Scale, typename Format>
using Period = tempoch::Period<Time<Scale, Format>>
template<typename Scale>
using TimeAxis = tempoch::Time<Scale>
template<typename Scale>
using J2000Seconds = tempoch::J2000Seconds<Scale>
using Trackable = Target
 Backward-compatible alias. Prefer Target in new code.

Enumerations

enum class  AzimuthExtremumKind : int32_t { Max = 0 , Min = 1 }
 Distinguishes azimuth extrema: northernmost or southernmost bearing. More...
enum class  Body : int32_t {
  Sun = SIDERUST_BODY_SUN , Moon = SIDERUST_BODY_MOON , Mercury = SIDERUST_BODY_MERCURY , Venus = SIDERUST_BODY_VENUS ,
  Mars = SIDERUST_BODY_MARS , Jupiter = SIDERUST_BODY_JUPITER , Saturn = SIDERUST_BODY_SATURN , Uranus = SIDERUST_BODY_URANUS ,
  Neptune = SIDERUST_BODY_NEPTUNE
}
 Identifies a solar-system body for generic altitude/azimuth dispatch. More...
enum class  Frame : int32_t {
  ICRS = SIDERUST_FRAME_T_ICRS , EclipticMeanJ2000 = SIDERUST_FRAME_T_ECLIPTIC_MEAN_J2000 , EquatorialMeanJ2000 = SIDERUST_FRAME_T_EQUATORIAL_MEAN_J2000 , EquatorialMeanOfDate = SIDERUST_FRAME_T_EQUATORIAL_MEAN_OF_DATE ,
  EquatorialTrueOfDate = SIDERUST_FRAME_T_EQUATORIAL_TRUE_OF_DATE , Horizontal = SIDERUST_FRAME_T_HORIZONTAL , ECEF = SIDERUST_FRAME_T_ECEF , Galactic = SIDERUST_FRAME_T_GALACTIC ,
  GCRS = SIDERUST_FRAME_T_GCRS , EclipticOfDate = SIDERUST_FRAME_T_ECLIPTIC_OF_DATE , EclipticTrueOfDate = SIDERUST_FRAME_T_ECLIPTIC_TRUE_OF_DATE , CIRS = SIDERUST_FRAME_T_CIRS ,
  TIRS = SIDERUST_FRAME_T_TIRS , ITRF = SIDERUST_FRAME_T_ITRF , ICRF = SIDERUST_FRAME_T_ICRF
}
enum class  Center : int32_t {
  Barycentric = SIDERUST_CENTER_T_BARYCENTRIC , Heliocentric = SIDERUST_CENTER_T_HELIOCENTRIC , Geocentric = SIDERUST_CENTER_T_GEOCENTRIC , Topocentric = SIDERUST_CENTER_T_TOPOCENTRIC ,
  Bodycentric = SIDERUST_CENTER_T_BODYCENTRIC
}
enum class  EarthOrientationModel : int32_t { Iau2000A = SIDERUST_EARTH_ORIENTATION_MODEL_T_IAU2000_A , Iau2000B = SIDERUST_EARTH_ORIENTATION_MODEL_T_IAU2000_B , Iau2006 = SIDERUST_EARTH_ORIENTATION_MODEL_T_IAU2006 , Iau2006A = SIDERUST_EARTH_ORIENTATION_MODEL_T_IAU2006_A }
enum class  CrossingDirection : int32_t { Rising = SIDERUST_CROSSING_DIRECTION_T_RISING , Setting = SIDERUST_CROSSING_DIRECTION_T_SETTING }
enum class  CulminationKind : int32_t { Max = SIDERUST_CULMINATION_KIND_T_MAX , Min = SIDERUST_CULMINATION_KIND_T_MIN }
enum class  RaConvention : int32_t { MuAlpha = SIDERUST_RA_CONVENTION_T_MU_ALPHA , MuAlphaStar = SIDERUST_RA_CONVENTION_T_MU_ALPHA_STAR }
enum class  PhaseKind : int32_t { NewMoon = 0 , FirstQuarter = 1 , FullMoon = 2 , LastQuarter = 3 }
 Principal lunar phase kinds (new-moon quarter events). More...
enum class  MoonPhaseLabel : int32_t {
  NewMoon = 0 , WaxingCrescent = 1 , FirstQuarter = 2 , WaxingGibbous = 3 ,
  FullMoon = 4 , WaningGibbous = 5 , LastQuarter = 6 , WaningCrescent = 7
}
 Descriptive moon phase labels (8 canonical phases). More...
enum class  ConicKind : std::uint8_t { Elliptic = 0 , Hyperbolic = 1 }
enum class  OrbitReferenceCenter : std::uint8_t { Barycentric = 0 , Heliocentric = 1 , Geocentric = 2 }
 Specifies the reference center for an orbit. More...
enum class  SubjectKind : int32_t { Body = SIDERUST_SUBJECT_KIND_T_BODY , Star = SIDERUST_SUBJECT_KIND_T_STAR , Icrs = SIDERUST_SUBJECT_KIND_T_ICRS , GenericTarget = SIDERUST_SUBJECT_KIND_T_GENERIC_TARGET }
 Discriminant for the active field in a Subject. More...
enum class  TwilightPhase : int32_t {
  Day = SIDERUST_TWILIGHT_PHASE_T_DAY , Civil = SIDERUST_TWILIGHT_PHASE_T_CIVIL , Nautical = SIDERUST_TWILIGHT_PHASE_T_NAUTICAL , Astronomical = SIDERUST_TWILIGHT_PHASE_T_ASTRONOMICAL ,
  Dark = SIDERUST_TWILIGHT_PHASE_T_DARK
}
 Sky-condition phase determined by the Sun's altitude. More...

Functions

std::ostream & operator<< (std::ostream &os, AzimuthExtremumKind kind)
 Stream operator for AzimuthExtremumKind.
const Planet & MERCURY ()
const Planet & VENUS ()
const Planet & EARTH ()
const Planet & MARS ()
const Planet & JUPITER ()
const Planet & SATURN ()
const Planet & URANUS ()
const Planet & NEPTUNE ()
Planet mercury ()
Planet venus ()
Planet earth ()
Planet mars ()
Planet jupiter ()
Planet saturn ()
Planet uranus ()
Planet neptune ()
const Star & VEGA ()
const Star & SIRIUS ()
const Star & POLARIS ()
const Star & CANOPUS ()
const Star & ARCTURUS ()
const Star & RIGEL ()
const Star & BETELGEUSE ()
const Star & PROCYON ()
const Star & ALDEBARAN ()
const Star & ALTAIR ()
template<typename C, typename F, typename U>
BodycentricPos< F, U > to_bodycentric (const cartesian::Position< C, F, U > &pos, const BodycentricParams &params, const Time< TT, JD > &jd)
 Transform a position to body-centric coordinates.
cartesian::position::ECEF< qtty::Meter > geodetic_to_cartesian_ecef (const Geodetic &geo)
 Convert a Geodetic (WGS84) to ECEF Cartesian position.
std::ostream & operator<< (std::ostream &os, const Geodetic &geo)
 Stream operator for Geodetic.
void check_status (siderust_status_t status, const char *operation)
void check_tempoch_status (tempoch_status_t status, const char *operation)
 Backward-compatible wrapper — delegates to tempoch::check_status.
uint32_t ffi_version ()
 Returns the siderust-ffi ABI version (major*10000 + minor*100 + patch).
std::ostream & operator<< (std::ostream &os, CrossingDirection dir)
std::ostream & operator<< (std::ostream &os, CulminationKind kind)
std::ostream & operator<< (std::ostream &os, EarthOrientationModel model)
double illuminated_percent (const MoonPhaseGeometry &geom)
 Get the illuminated fraction as a percentage [0, 100].
bool is_waxing (MoonPhaseLabel label)
 Check if a phase label describes a waxing moon.
bool is_waning (MoonPhaseLabel label)
 Check if a phase label describes a waning moon.
std::ostream & operator<< (std::ostream &os, PhaseKind kind)
 Stream operator for PhaseKind.
std::ostream & operator<< (std::ostream &os, MoonPhaseLabel label)
 Stream operator for MoonPhaseLabel.
Geodetic geodetic (double lon_deg, double lat_deg, double height_m=0.0)
 Create a custom geodetic position (WGS84).
const Geodetic & ROQUE_DE_LOS_MUCHACHOS ()
 Roque de los Muchachos Observatory (La Palma, Spain).
const Geodetic & EL_PARANAL ()
 El Paranal Observatory (Chile).
const Geodetic & MAUNA_KEA ()
 Mauna Kea Observatory (Hawaii, USA).
const Geodetic & LA_SILLA_OBSERVATORY ()
 La Silla Observatory (Chile).
Geodetic roque_de_los_muchachos ()
Geodetic el_paranal ()
Geodetic mauna_kea ()
Geodetic la_silla ()
template<typename C = centers::Heliocentric>
cartesian::Position< C, frames::EclipticMeanJ2000, qtty::AstronomicalUnit > kepler_position (const KeplerianOrbit &orbit, const Time< TT, JD > &jd)
std::ostream & operator<< (std::ostream &os, ConicKind kind)
std::ostream & operator<< (std::ostream &os, OrbitReferenceCenter center)
qtty::Radian altitude_at (const Subject &subj, const Geodetic &obs, const Time< TT, MJD > &mjd)
 Altitude at an instant (radians) for any subject.
std::vector< Period< TT, MJD > > above_threshold (const Subject &subj, const Geodetic &obs, const Period< TT, MJD > &window, qtty::Degree threshold, const SearchOptions &opts={})
 Periods when a subject is above a threshold altitude.
std::vector< Period< TT, MJD > > below_threshold (const Subject &subj, const Geodetic &obs, const Period< TT, MJD > &window, qtty::Degree threshold, const SearchOptions &opts={})
 Periods when a subject is below a threshold altitude.
std::vector< CrossingEvent > crossings (const Subject &subj, const Geodetic &obs, const Period< TT, MJD > &window, qtty::Degree threshold, const SearchOptions &opts={})
 Threshold-crossing events for a subject.
std::vector< CulminationEvent > culminations (const Subject &subj, const Geodetic &obs, const Period< TT, MJD > &window, const SearchOptions &opts={})
 Culmination (local extrema) events for a subject.
std::vector< Period< TT, MJD > > altitude_ranges (const Subject &subj, const Geodetic &obs, const Period< TT, MJD > &window, qtty::Degree min_alt, qtty::Degree max_alt, const SearchOptions &opts={})
 Periods when a subject's altitude is within [min, max].
qtty::Degree azimuth_at (const Subject &subj, const Geodetic &obs, const Time< TT, MJD > &mjd)
 Azimuth at an instant (degrees, N-clockwise) for any subject.
std::vector< AzimuthCrossingEvent > azimuth_crossings (const Subject &subj, const Geodetic &obs, const Period< TT, MJD > &window, qtty::Degree bearing, const SearchOptions &opts={})
 Azimuth bearing-crossing events for a subject.
std::vector< AzimuthExtremum > azimuth_extrema (const Subject &subj, const Geodetic &obs, const Period< TT, MJD > &window, const SearchOptions &opts={})
 Azimuth extrema (northernmost / southernmost) for a subject.
std::vector< Period< TT, MJD > > in_azimuth_range (const Subject &subj, const Geodetic &obs, const Period< TT, MJD > &window, qtty::Degree min_deg, qtty::Degree max_deg, const SearchOptions &opts={})
 Periods when a subject's azimuth is within [min_deg, max_deg].
TwilightPhase twilight_phase (qtty::Degree altitude)
 Classify the sky condition from the Sun's altitude in degrees.
TwilightPhase twilight_phase (qtty::Radian altitude)
 Classify the sky condition from the Sun's altitude in radians.

Typedef Documentation

◆ Calendar

Definition at line 34 of file time.hpp.

◆ CivilTime

using siderust::CivilTime = tempoch::CivilTime
Examples
06_night_events.cpp, 07_moon_properties.cpp, and 10_time_periods.cpp.

Definition at line 15 of file time.hpp.

◆ EclipticMeanJ2000Target

Fixed direction in mean ecliptic coordinates of J2000.0.

Definition at line 393 of file target.hpp.

◆ EquatorialMeanJ2000Target

Fixed direction in mean equatorial coordinates of J2000.0 (FK5).

Definition at line 383 of file target.hpp.

◆ EquatorialMeanOfDateTarget

Fixed direction in mean equatorial coordinates of date (precessed only).

Definition at line 386 of file target.hpp.

◆ EquatorialTrueOfDateTarget

Fixed direction in true equatorial coordinates of date (precessed + nutated).

Definition at line 390 of file target.hpp.

◆ GPS

using siderust::GPS = tempoch::format::GPS

Definition at line 30 of file time.hpp.

◆ GPST

using siderust::GPST = tempoch::scale::GPST

Definition at line 25 of file time.hpp.

◆ ICRFTarget

Fixed direction in ICRF (treated identically to ICRS in Siderust).

Definition at line 380 of file target.hpp.

◆ ICRSTarget

Fixed direction in ICRS (most common use-case).

Examples
05_target_tracking.cpp.

Definition at line 377 of file target.hpp.

◆ J2000s

using siderust::J2000s = tempoch::format::J2000s

Definition at line 31 of file time.hpp.

◆ J2000Seconds

template<typename Scale>
using siderust::J2000Seconds = tempoch::J2000Seconds<Scale>

Definition at line 40 of file time.hpp.

◆ JD

using siderust::JD = tempoch::format::JD

Definition at line 27 of file time.hpp.

◆ MJD

using siderust::MJD = tempoch::format::MJD

Definition at line 28 of file time.hpp.

◆ Period

template<typename Scale, typename Format>
using siderust::Period = tempoch::Period<Time<Scale, Format>>

◆ TAI

using siderust::TAI = tempoch::scale::TAI

Definition at line 24 of file time.hpp.

◆ TCB

using siderust::TCB = tempoch::scale::TCB

Definition at line 23 of file time.hpp.

◆ TCG

using siderust::TCG = tempoch::scale::TCG

Definition at line 22 of file time.hpp.

◆ TDB

using siderust::TDB = tempoch::scale::TDB
Examples
10_time_periods.cpp.

Definition at line 21 of file time.hpp.

◆ Time

◆ TimeAxis

template<typename Scale>
using siderust::TimeAxis = tempoch::Time<Scale>
Examples
10_time_periods.cpp.

Definition at line 39 of file time.hpp.

◆ TimeContext

using siderust::TimeContext = tempoch::TimeContext

Definition at line 16 of file time.hpp.

◆ Trackable

Backward-compatible alias. Prefer Target in new code.

Definition at line 132 of file trackable.hpp.

◆ TT

using siderust::TT = tempoch::scale::TT
Examples
10_time_periods.cpp.

Definition at line 18 of file time.hpp.

◆ Unix

using siderust::Unix = tempoch::format::Unix

Definition at line 29 of file time.hpp.

◆ UT1

using siderust::UT1 = tempoch::scale::UT1
Examples
10_time_periods.cpp.

Definition at line 20 of file time.hpp.

◆ UTC

using siderust::UTC = tempoch::scale::UTC
Examples
10_time_periods.cpp.

Definition at line 19 of file time.hpp.

Enumeration Type Documentation

◆ AzimuthExtremumKind

enum class siderust::AzimuthExtremumKind : int32_t
strong

Distinguishes azimuth extrema: northernmost or southernmost bearing.

Enumerator
Max 

Northernmost (or easternmost) direction reached by the body.

Min 

Southernmost (or westernmost) direction reached by the body.

Definition at line 38 of file azimuth.hpp.

◆ Body

enum class siderust::Body : int32_t
strong

Identifies a solar-system body for generic altitude/azimuth dispatch.

Maps 1:1 to the FFI SiderustBody discriminant.

Enumerator
Sun 
Moon 
Mercury 
Venus 
Mars 
Jupiter 
Saturn 
Uranus 
Neptune 

Definition at line 47 of file body_target.hpp.

◆ Center

enum class siderust::Center : int32_t
strong
Enumerator
Barycentric 
Heliocentric 
Geocentric 
Topocentric 
Bodycentric 

Definition at line 187 of file ffi_core.hpp.

◆ ConicKind

enum class siderust::ConicKind : std::uint8_t
strong
Enumerator
Elliptic 
Hyperbolic 

Definition at line 36 of file orbit.hpp.

◆ CrossingDirection

enum class siderust::CrossingDirection : int32_t
strong
Enumerator
Rising 
Setting 

Definition at line 202 of file ffi_core.hpp.

◆ CulminationKind

enum class siderust::CulminationKind : int32_t
strong
Enumerator
Max 
Min 

Definition at line 207 of file ffi_core.hpp.

◆ EarthOrientationModel

enum class siderust::EarthOrientationModel : int32_t
strong
Enumerator
Iau2000A 
Iau2000B 
Iau2006 
Iau2006A 

Definition at line 195 of file ffi_core.hpp.

◆ Frame

enum class siderust::Frame : int32_t
strong
Enumerator
ICRS 
EclipticMeanJ2000 
EquatorialMeanJ2000 
EquatorialMeanOfDate 
EquatorialTrueOfDate 
Horizontal 
ECEF 
Galactic 
GCRS 
EclipticOfDate 
EclipticTrueOfDate 
CIRS 
TIRS 
ITRF 
ICRF 

Definition at line 169 of file ffi_core.hpp.

◆ MoonPhaseLabel

enum class siderust::MoonPhaseLabel : int32_t
strong

Descriptive moon phase labels (8 canonical phases).

Enumerator
NewMoon 
WaxingCrescent 
FirstQuarter 
WaxingGibbous 
FullMoon 
WaningGibbous 
LastQuarter 
WaningCrescent 

Definition at line 40 of file lunar_phase.hpp.

◆ OrbitReferenceCenter

enum class siderust::OrbitReferenceCenter : std::uint8_t
strong

Specifies the reference center for an orbit.

Indicates which standard center the orbital elements are defined relative to. This is needed when transforming positions to/from a body-centric frame, as the orbit must be converted to match the coordinate system.

Enumerator
Barycentric 

Orbit defined relative to the solar system barycenter.

Heliocentric 

Orbit defined relative to the Sun (planets, asteroids, comets).

Geocentric 

Orbit defined relative to Earth (artificial satellites, Moon).

Definition at line 50 of file orbital_center.hpp.

◆ PhaseKind

enum class siderust::PhaseKind : int32_t
strong

Principal lunar phase kinds (new-moon quarter events).

Enumerator
NewMoon 
FirstQuarter 
FullMoon 
LastQuarter 

Definition at line 30 of file lunar_phase.hpp.

◆ RaConvention

enum class siderust::RaConvention : int32_t
strong
Enumerator
MuAlpha 
MuAlphaStar 

Definition at line 250 of file ffi_core.hpp.

◆ SubjectKind

enum class siderust::SubjectKind : int32_t
strong

Discriminant for the active field in a Subject.

Enumerator
Body 
Star 
Icrs 
GenericTarget 

Definition at line 62 of file subject.hpp.

◆ TwilightPhase

enum class siderust::TwilightPhase : int32_t
strong

Sky-condition phase determined by the Sun's altitude.

Mirrors SiderustTwilightPhase from siderust-ffi.

Enumerator
Day 

Sun above horizon.

Civil 

-6° to 0°.

Nautical 

-12° to -6°.

Astronomical 

-18° to -12°.

Dark 

Below -18°.

Definition at line 42 of file twilight.hpp.

Function Documentation

◆ above_threshold()

std::vector< Period< TT, MJD > > siderust::above_threshold ( const Subject & subj,
const Geodetic & obs,
const Period< TT, MJD > & window,
qtty::Degree threshold,
const SearchOptions & opts = {} )
inline

Periods when a subject is above a threshold altitude.

Definition at line 159 of file subject.hpp.

◆ ALDEBARAN()

const Star & siderust::ALDEBARAN ( )
inline

Definition at line 296 of file bodies.hpp.

References siderust::Star::catalog().

◆ ALTAIR()

const Star & siderust::ALTAIR ( )
inline

Definition at line 300 of file bodies.hpp.

References siderust::Star::catalog().

◆ altitude_at()

qtty::Radian siderust::altitude_at ( const Subject & subj,
const Geodetic & obs,
const Time< TT, MJD > & mjd )
inline

Altitude at an instant (radians) for any subject.

Definition at line 148 of file subject.hpp.

References siderust::Subject::c_inner(), check_status(), and siderust::Geodetic::to_c().

◆ altitude_ranges()

std::vector< Period< TT, MJD > > siderust::altitude_ranges ( const Subject & subj,
const Geodetic & obs,
const Period< TT, MJD > & window,
qtty::Degree min_alt,
qtty::Degree max_alt,
const SearchOptions & opts = {} )
inline

Periods when a subject's altitude is within [min, max].

Definition at line 217 of file subject.hpp.

◆ ARCTURUS()

const Star & siderust::ARCTURUS ( )
inline

Definition at line 280 of file bodies.hpp.

References siderust::Star::catalog().

◆ azimuth_at()

qtty::Degree siderust::azimuth_at ( const Subject & subj,
const Geodetic & obs,
const Time< TT, MJD > & mjd )
inline

Azimuth at an instant (degrees, N-clockwise) for any subject.

Definition at line 233 of file subject.hpp.

References siderust::Subject::c_inner(), check_status(), and siderust::Geodetic::to_c().

◆ azimuth_crossings()

std::vector< AzimuthCrossingEvent > siderust::azimuth_crossings ( const Subject & subj,
const Geodetic & obs,
const Period< TT, MJD > & window,
qtty::Degree bearing,
const SearchOptions & opts = {} )
inline

Azimuth bearing-crossing events for a subject.

Definition at line 243 of file subject.hpp.

◆ azimuth_extrema()

std::vector< AzimuthExtremum > siderust::azimuth_extrema ( const Subject & subj,
const Geodetic & obs,
const Period< TT, MJD > & window,
const SearchOptions & opts = {} )
inline

Azimuth extrema (northernmost / southernmost) for a subject.

Definition at line 258 of file subject.hpp.

◆ below_threshold()

std::vector< Period< TT, MJD > > siderust::below_threshold ( const Subject & subj,
const Geodetic & obs,
const Period< TT, MJD > & window,
qtty::Degree threshold,
const SearchOptions & opts = {} )
inline

Periods when a subject is below a threshold altitude.

Definition at line 174 of file subject.hpp.

◆ BETELGEUSE()

const Star & siderust::BETELGEUSE ( )
inline

Definition at line 288 of file bodies.hpp.

References siderust::Star::catalog().

◆ CANOPUS()

const Star & siderust::CANOPUS ( )
inline

Definition at line 276 of file bodies.hpp.

References siderust::Star::catalog().

◆ check_status()

void siderust::check_status ( siderust_status_t status,
const char * operation )
inline

Definition at line 111 of file ffi_core.hpp.

Referenced by altitude_at(), siderust::body::altitude_at(), siderust::DirectionTarget< spherical::direction::ICRS >::altitude_at(), siderust::icrs_altitude::altitude_at(), siderust::moon::altitude_at(), siderust::ProperMotionTarget::altitude_at(), siderust::star_altitude::altitude_at(), siderust::sun::altitude_at(), azimuth_at(), siderust::body::azimuth_at(), siderust::DirectionTarget< spherical::direction::ICRS >::azimuth_at(), siderust::icrs_altitude::azimuth_at(), siderust::moon::azimuth_at(), siderust::ProperMotionTarget::azimuth_at(), siderust::star_altitude::azimuth_at(), siderust::sun::azimuth_at(), siderust::Star::catalog(), siderust::SkyGrid::cells(), siderust::Star::create(), siderust::DirectionTarget< spherical::direction::ICRS >::data(), siderust::ProperMotionTarget::data(), siderust::DirectionTarget< spherical::direction::ICRS >::DirectionTarget(), siderust::ephemeris::earth_barycentric(), siderust::RuntimeEphemeris::earth_barycentric(), siderust::RuntimeEphemeris::earth_barycentric_velocity(), siderust::ephemeris::earth_heliocentric(), siderust::RuntimeEphemeris::earth_heliocentric(), siderust::sgp4::Propagator::epoch_jd_utc(), siderust::AstroContext::from_default_ffi(), geodetic(), siderust::sgp4::Propagator::gravity_model(), siderust::ephemeris::jupiter_barycentric(), siderust::ephemeris::jupiter_heliocentric(), kepler_position(), siderust::detail::make_el_paranal(), siderust::detail::make_la_silla(), siderust::detail::make_mauna_kea(), siderust::detail::make_planet_earth(), siderust::detail::make_planet_jupiter(), siderust::detail::make_planet_mars(), siderust::detail::make_planet_mercury(), siderust::detail::make_planet_neptune(), siderust::detail::make_planet_saturn(), siderust::detail::make_planet_uranus(), siderust::detail::make_planet_venus(), siderust::detail::make_roque_de_los_muchachos(), siderust::ephemeris::mars_barycentric(), siderust::ephemeris::mars_heliocentric(), siderust::ephemeris::mercury_barycentric(), siderust::ephemeris::mercury_heliocentric(), siderust::detail::OwnedFfiContext::model(), siderust::ephemeris::moon_geocentric(), siderust::RuntimeEphemeris::moon_geocentric(), siderust::Star::name(), siderust::ephemeris::neptune_barycentric(), siderust::ephemeris::neptune_heliocentric(), siderust::tle::Tle::norad_id(), siderust::detail::OwnedFfiContext::OwnedFfiContext(), siderust::detail::OwnedFfiContext::OwnedFfiContext(), siderust::oem::parse(), siderust::tle::Tle::parse(), siderust::moon::phase_geocentric(), siderust::moon::phase_label(), siderust::moon::phase_topocentric(), siderust::ConicOrbit::position_at(), siderust::MeanMotionOrbit::position_at(), siderust::PreparedOrbit::position_at(), siderust::PreparedOrbit::PreparedOrbit(), siderust::sgp4::Propagator::propagate_at(), siderust::sgp4::Propagator::Propagator(), siderust::ProperMotionTarget::ProperMotionTarget(), siderust::RuntimeEphemeris::RuntimeEphemeris(), siderust::RuntimeEphemeris::RuntimeEphemeris(), siderust::ephemeris::saturn_barycentric(), siderust::ephemeris::saturn_heliocentric(), siderust::lambert::detail::solve_impl(), siderust::ephemeris::sun_barycentric(), siderust::RuntimeEphemeris::sun_barycentric(), to_bodycentric(), siderust::Geodetic::to_cartesian(), siderust::cartesian::Position< centers::Heliocentric, frames::EclipticMeanJ2000, U >::to_center(), siderust::cartesian::Direction< frames::EclipticMeanJ2000 >::to_frame(), siderust::cartesian::Displacement< F, U >::to_frame(), siderust::cartesian::Position< centers::Heliocentric, frames::EclipticMeanJ2000, U >::to_frame(), siderust::spherical::Direction< frames::EclipticMeanJ2000 >::to_frame(), siderust::cartesian::Direction< frames::EclipticMeanJ2000 >::to_frame_with(), siderust::cartesian::Displacement< F, U >::to_frame_with(), siderust::cartesian::Position< centers::Heliocentric, frames::EclipticMeanJ2000, U >::to_frame_with(), siderust::spherical::Direction< frames::EclipticMeanJ2000 >::to_frame_with(), siderust::BodycentricPos< F, U >::to_geocentric(), siderust::spherical::Direction< frames::EclipticMeanJ2000 >::to_horizontal(), siderust::spherical::Direction< frames::EclipticMeanJ2000 >::to_horizontal_precise(), siderust::spherical::Direction< frames::EclipticMeanJ2000 >::to_horizontal_with(), twilight_phase(), twilight_phase(), siderust::ephemeris::uranus_barycentric(), siderust::ephemeris::uranus_heliocentric(), siderust::ephemeris::venus_barycentric(), and siderust::ephemeris::venus_heliocentric().

◆ check_tempoch_status()

void siderust::check_tempoch_status ( tempoch_status_t status,
const char * operation )
inline

Backward-compatible wrapper — delegates to tempoch::check_status.

Definition at line 151 of file ffi_core.hpp.

◆ crossings()

std::vector< CrossingEvent > siderust::crossings ( const Subject & subj,
const Geodetic & obs,
const Period< TT, MJD > & window,
qtty::Degree threshold,
const SearchOptions & opts = {} )
inline

Threshold-crossing events for a subject.

Definition at line 189 of file subject.hpp.

◆ culminations()

std::vector< CulminationEvent > siderust::culminations ( const Subject & subj,
const Geodetic & obs,
const Period< TT, MJD > & window,
const SearchOptions & opts = {} )
inline

Culmination (local extrema) events for a subject.

Definition at line 203 of file subject.hpp.

◆ EARTH()

const Planet & siderust::EARTH ( )
inline
Examples
08_solar_system.cpp, and 11_serde_serialization.cpp.

Definition at line 132 of file bodies.hpp.

References siderust::detail::make_planet_earth().

Referenced by earth().

◆ earth()

Planet siderust::earth ( )
inline
Examples
01_basic_coordinates.cpp, and 13_coordinate_operations.cpp.

Definition at line 160 of file bodies.hpp.

References EARTH().

◆ EL_PARANAL()

const Geodetic & siderust::EL_PARANAL ( )
inline

El Paranal Observatory (Chile).

Definition at line 61 of file observatories.hpp.

References siderust::detail::make_el_paranal().

Referenced by el_paranal().

◆ el_paranal()

Geodetic siderust::el_paranal ( )
inline

Definition at line 84 of file observatories.hpp.

References EL_PARANAL().

◆ ffi_version()

uint32_t siderust::ffi_version ( )
inline

Returns the siderust-ffi ABI version (major*10000 + minor*100 + patch).

Definition at line 163 of file ffi_core.hpp.

◆ geodetic()

Geodetic siderust::geodetic ( double lon_deg,
double lat_deg,
double height_m = 0.0 )
inline

Create a custom geodetic position (WGS84).

Definition at line 44 of file observatories.hpp.

References check_status(), and siderust::Geodetic::from_c().

◆ illuminated_percent()

double siderust::illuminated_percent ( const MoonPhaseGeometry & geom)
inline

Get the illuminated fraction as a percentage [0, 100].

Examples
07_moon_properties.cpp.

Definition at line 233 of file lunar_phase.hpp.

References siderust::MoonPhaseGeometry::illuminated_fraction.

◆ in_azimuth_range()

std::vector< Period< TT, MJD > > siderust::in_azimuth_range ( const Subject & subj,
const Geodetic & obs,
const Period< TT, MJD > & window,
qtty::Degree min_deg,
qtty::Degree max_deg,
const SearchOptions & opts = {} )
inline

Periods when a subject's azimuth is within [min_deg, max_deg].

Definition at line 272 of file subject.hpp.

◆ is_waning()

bool siderust::is_waning ( MoonPhaseLabel label)
inline

Check if a phase label describes a waning moon.

Definition at line 254 of file lunar_phase.hpp.

References LastQuarter, WaningCrescent, and WaningGibbous.

◆ is_waxing()

bool siderust::is_waxing ( MoonPhaseLabel label)
inline

Check if a phase label describes a waxing moon.

Definition at line 240 of file lunar_phase.hpp.

References FirstQuarter, WaxingCrescent, and WaxingGibbous.

◆ JUPITER()

const Planet & siderust::JUPITER ( )
inline
Examples
08_solar_system.cpp.

Definition at line 140 of file bodies.hpp.

References siderust::detail::make_planet_jupiter().

Referenced by jupiter().

◆ jupiter()

Planet siderust::jupiter ( )
inline

Definition at line 162 of file bodies.hpp.

References JUPITER().

◆ kepler_position()

template<typename C = centers::Heliocentric>
cartesian::Position< C, frames::EclipticMeanJ2000, qtty::AstronomicalUnit > siderust::kepler_position ( const KeplerianOrbit & orbit,
const Time< TT, JD > & jd )
inline

◆ la_silla()

Geodetic siderust::la_silla ( )
inline

Definition at line 86 of file observatories.hpp.

References LA_SILLA_OBSERVATORY().

◆ LA_SILLA_OBSERVATORY()

const Geodetic & siderust::LA_SILLA_OBSERVATORY ( )
inline

La Silla Observatory (Chile).

Definition at line 77 of file observatories.hpp.

References siderust::detail::make_la_silla().

Referenced by la_silla().

◆ MARS()

const Planet & siderust::MARS ( )
inline
Examples
08_solar_system.cpp.

Definition at line 136 of file bodies.hpp.

References siderust::detail::make_planet_mars().

Referenced by mars().

◆ mars()

Planet siderust::mars ( )
inline
Examples
13_coordinate_operations.cpp.

Definition at line 161 of file bodies.hpp.

References MARS().

◆ MAUNA_KEA()

const Geodetic & siderust::MAUNA_KEA ( )
inline

Mauna Kea Observatory (Hawaii, USA).

Definition at line 69 of file observatories.hpp.

References siderust::detail::make_mauna_kea().

Referenced by mauna_kea().

◆ mauna_kea()

Geodetic siderust::mauna_kea ( )
inline

Definition at line 85 of file observatories.hpp.

References MAUNA_KEA().

◆ MERCURY()

const Planet & siderust::MERCURY ( )
inline
Examples
08_solar_system.cpp.

Definition at line 124 of file bodies.hpp.

References siderust::detail::make_planet_mercury().

Referenced by mercury().

◆ mercury()

Planet siderust::mercury ( )
inline

Definition at line 158 of file bodies.hpp.

References MERCURY().

◆ NEPTUNE()

const Planet & siderust::NEPTUNE ( )
inline
Examples
08_solar_system.cpp.

Definition at line 152 of file bodies.hpp.

References siderust::detail::make_planet_neptune().

Referenced by neptune().

◆ neptune()

Planet siderust::neptune ( )
inline

Definition at line 165 of file bodies.hpp.

References NEPTUNE().

◆ operator<<() [1/9]

std::ostream & siderust::operator<< ( std::ostream & os,
AzimuthExtremumKind kind )
inline

Stream operator for AzimuthExtremumKind.

Definition at line 395 of file azimuth.hpp.

References Max, and Min.

◆ operator<<() [2/9]

std::ostream & siderust::operator<< ( std::ostream & os,
ConicKind kind )
inline

Definition at line 222 of file orbit.hpp.

References Elliptic, and Hyperbolic.

◆ operator<<() [3/9]

std::ostream & siderust::operator<< ( std::ostream & os,
const Geodetic & geo )
inline

Stream operator for Geodetic.

Definition at line 67 of file geodetic.hpp.

References siderust::Geodetic::height, siderust::Geodetic::lat, and siderust::Geodetic::lon.

◆ operator<<() [4/9]

std::ostream & siderust::operator<< ( std::ostream & os,
CrossingDirection dir )
inline

Definition at line 216 of file ffi_core.hpp.

References Rising, and Setting.

◆ operator<<() [5/9]

std::ostream & siderust::operator<< ( std::ostream & os,
CulminationKind kind )
inline

Definition at line 226 of file ffi_core.hpp.

References Max, and Min.

◆ operator<<() [6/9]

std::ostream & siderust::operator<< ( std::ostream & os,
EarthOrientationModel model )
inline

Definition at line 236 of file ffi_core.hpp.

References Iau2000A, Iau2000B, Iau2006, and Iau2006A.

◆ operator<<() [7/9]

std::ostream & siderust::operator<< ( std::ostream & os,
MoonPhaseLabel label )
inline

Stream operator for MoonPhaseLabel.

Definition at line 289 of file lunar_phase.hpp.

References FirstQuarter, FullMoon, LastQuarter, NewMoon, WaningCrescent, WaningGibbous, WaxingCrescent, and WaxingGibbous.

◆ operator<<() [8/9]

std::ostream & siderust::operator<< ( std::ostream & os,
OrbitReferenceCenter center )
inline

Definition at line 163 of file orbital_center.hpp.

References Barycentric, Geocentric, and Heliocentric.

◆ operator<<() [9/9]

std::ostream & siderust::operator<< ( std::ostream & os,
PhaseKind kind )
inline

Stream operator for PhaseKind.

Definition at line 272 of file lunar_phase.hpp.

References FirstQuarter, FullMoon, LastQuarter, and NewMoon.

◆ POLARIS()

const Star & siderust::POLARIS ( )
inline

Definition at line 272 of file bodies.hpp.

References siderust::Star::catalog().

◆ PROCYON()

const Star & siderust::PROCYON ( )
inline

Definition at line 292 of file bodies.hpp.

References siderust::Star::catalog().

◆ RIGEL()

const Star & siderust::RIGEL ( )
inline

Definition at line 284 of file bodies.hpp.

References siderust::Star::catalog().

◆ ROQUE_DE_LOS_MUCHACHOS()

const Geodetic & siderust::ROQUE_DE_LOS_MUCHACHOS ( )
inline

Roque de los Muchachos Observatory (La Palma, Spain).

Examples
09_star_observability.cpp.

Definition at line 53 of file observatories.hpp.

References siderust::detail::make_roque_de_los_muchachos().

Referenced by roque_de_los_muchachos().

◆ roque_de_los_muchachos()

Geodetic siderust::roque_de_los_muchachos ( )
inline

Definition at line 83 of file observatories.hpp.

References ROQUE_DE_LOS_MUCHACHOS().

◆ SATURN()

const Planet & siderust::SATURN ( )
inline
Examples
08_solar_system.cpp.

Definition at line 144 of file bodies.hpp.

References siderust::detail::make_planet_saturn().

Referenced by saturn().

◆ saturn()

Planet siderust::saturn ( )
inline

Definition at line 163 of file bodies.hpp.

References SATURN().

◆ SIRIUS()

const Star & siderust::SIRIUS ( )
inline
Examples
05_target_tracking.cpp, and 09_star_observability.cpp.

Definition at line 268 of file bodies.hpp.

References siderust::Star::catalog().

◆ to_bodycentric()

template<typename C, typename F, typename U>
BodycentricPos< F, U > siderust::to_bodycentric ( const cartesian::Position< C, F, U > & pos,
const BodycentricParams & params,
const Time< TT, JD > & jd )
inline

Transform a position to body-centric coordinates.

Mirrors Rust's position.to_bodycentric(params, jd).

The source center must be Geocentric, Heliocentric, or Barycentric. Calling this with Bodycentric or Topocentric as the source center will throw InvalidCenterError at runtime.

The result frame F and unit U are preserved from the source position.

Template Parameters
CSource center (Geocentric, Heliocentric, or Barycentric).
FReference frame.
ULength unit.
Parameters
posSource position.
paramsOrbital parameters of the body to use as the new center.
jdJulian Date for Keplerian propagation and center shifts.
Returns
BodycentricPos<F, U> — relative position plus embedded params.
Exceptions
InvalidCenterErrorif the source center is not supported.
Examples
04_all_center_conversions.cpp.

Definition at line 137 of file bodycentric_transforms.hpp.

References check_status(), siderust::centers::is_center_v, siderust::BodycentricParams::to_c(), and siderust::cartesian::Position< C, F, U >::to_c().

◆ twilight_phase() [1/2]

TwilightPhase siderust::twilight_phase ( qtty::Degree altitude)
inline

Classify the sky condition from the Sun's altitude in degrees.

Parameters
altitudeSun altitude above the horizon (degrees, signed). Negative values mean the Sun is below the horizon.
Returns
The corresponding TwilightPhase value.
Exceptions
NullPointerError(should never happen in normal operation).

Definition at line 58 of file twilight.hpp.

References check_status().

◆ twilight_phase() [2/2]

TwilightPhase siderust::twilight_phase ( qtty::Radian altitude)
inline

Classify the sky condition from the Sun's altitude in radians.

Parameters
altitudeSun altitude (radians).
Returns
The corresponding TwilightPhase value.

Definition at line 70 of file twilight.hpp.

References check_status().

◆ URANUS()

const Planet & siderust::URANUS ( )
inline
Examples
08_solar_system.cpp.

Definition at line 148 of file bodies.hpp.

References siderust::detail::make_planet_uranus().

Referenced by uranus().

◆ uranus()

Planet siderust::uranus ( )
inline

Definition at line 164 of file bodies.hpp.

References URANUS().

◆ VEGA()

const Star & siderust::VEGA ( )
inline

Definition at line 264 of file bodies.hpp.

References siderust::Star::catalog().

◆ VENUS()

const Planet & siderust::VENUS ( )
inline
Examples
08_solar_system.cpp.

Definition at line 128 of file bodies.hpp.

References siderust::detail::make_planet_venus().

Referenced by venus().

◆ venus()

Planet siderust::venus ( )
inline

Definition at line 159 of file bodies.hpp.

References VENUS().