View Source SpaceDust.Observations (Space Dust v0.3.0)
Functions for computing angular observations from observer and target states.
Provides transformations between different observation coordinate systems:
- ECI (Earth-Centered Inertial) ↔ RA/Dec (Right Ascension/Declination)
- ECI ↔ Az/El (Azimuth/Elevation) for a ground observer
- RA/Dec ↔ Az/El conversions
All angular computations account for the observer's location and the Earth's rotation at the observation epoch.
Summary
Functions
Compute line of sight unit vector in ECI frame from Az/El observation.
Convert Az/El to RA/Dec for a given observer and time.
Compute unit vector in local SEZ frame from Az/El.
Compute Az/El observation of a target from an observer.
Compute RA/Dec observation of a target from an observer.
Compute RA/Dec of a target directly from ECI position (geocentric).
Check if a target is visible from an observer (above horizon).
Compute the look angles and range from observer to target. Returns {az_deg, el_deg, range_km}.
Convert RA/Dec to Az/El for a given observer and time.
Compute unit vector in ECI frame from RA/Dec.
Functions
@spec az_el_to_eci_direction( SpaceDust.Observations.AzEl.t(), SpaceDust.State.GeodeticState.t() ) :: SpaceDust.Math.Vector.vector()
Compute line of sight unit vector in ECI frame from Az/El observation.
@spec az_el_to_ra_dec( SpaceDust.Observations.AzEl.t(), SpaceDust.State.GeodeticState.t() ) :: SpaceDust.Observations.RaDec.t()
Convert Az/El to RA/Dec for a given observer and time.
@spec az_el_to_sez_direction(SpaceDust.Observations.AzEl.t()) :: SpaceDust.Math.Vector.vector()
Compute unit vector in local SEZ frame from Az/El.
@spec compute_az_el( SpaceDust.State.GeodeticState.t(), SpaceDust.State.ECIState.t(), keyword() ) :: SpaceDust.Observations.AzEl.t()
Compute Az/El observation of a target from an observer.
Parameters
- observer: GeodeticState of the ground observer
- target: ECIState of the target
- opts: Optional parameters
- :include_rates - Compute angular rates (default: false)
Returns
- AzEl observation struct
Example
observer = GeodeticState.new(40.0, -105.0, 1.6)
target = ECIState.new(epoch, {7000.0, 0.0, 0.0}, {0.0, 7.5, 0.0})
SpaceDust.Observations.compute_az_el(observer, target)
@spec compute_ra_dec( SpaceDust.State.GeodeticState.t(), SpaceDust.State.ECIState.t(), keyword() ) :: SpaceDust.Observations.RaDec.t()
Compute RA/Dec observation of a target from an observer.
Parameters
- observer: GeodeticState of the ground observer
- target: ECIState of the target
- opts: Optional parameters
- :include_rates - Compute angular rates (default: false)
Returns
- RaDec observation struct
Example
observer = GeodeticState.new(40.0, -105.0, 1.6)
target = ECIState.new(epoch, {7000.0, 0.0, 0.0}, {0.0, 7.5, 0.0})
SpaceDust.Observations.compute_ra_dec(observer, target)
@spec geocentric_ra_dec(SpaceDust.State.ECIState.t()) :: SpaceDust.Observations.RaDec.t()
Compute RA/Dec of a target directly from ECI position (geocentric).
This gives the geocentric RA/Dec (as seen from Earth's center), not topocentric (as seen from a ground observer).
@spec is_visible?( SpaceDust.State.GeodeticState.t(), SpaceDust.State.ECIState.t(), keyword() ) :: boolean()
Check if a target is visible from an observer (above horizon).
Options:
:min_elevation- Minimum elevation angle in degrees (default: 0.0)
@spec look_angles(SpaceDust.State.GeodeticState.t(), SpaceDust.State.ECIState.t()) :: {float(), float(), float()}
Compute the look angles and range from observer to target. Returns {az_deg, el_deg, range_km}.
@spec ra_dec_to_az_el( SpaceDust.Observations.RaDec.t(), SpaceDust.State.GeodeticState.t() ) :: SpaceDust.Observations.AzEl.t()
Convert RA/Dec to Az/El for a given observer and time.
@spec ra_dec_to_eci_direction(SpaceDust.Observations.RaDec.t()) :: SpaceDust.Math.Vector.vector()
Compute unit vector in ECI frame from RA/Dec.