SuperNOVAS C++ API v1.6
High-precision C/C++ astrometry library
Loading...
Searching...
No Matches
Geometric equatorial positions and velocities

Geometric locations are 3D positions and velocities relative to an observer location. More...

Classes

class  supernovas::AstrometricPosition
 The astrometric 3D geometric equatorial position of an object, referenced to the Solar System Barycenter (SSB) or place in the Solar-system w.r.t. More...
class  supernovas::Geometric
 The geometric (3D) position and velocity of a source relative to an observer location. More...
class  supernovas::Position
 A 3D physical position vector in space. More...
class  supernovas::Velocity
 A 3D physical velocity vector in space. More...

Functions

Geometric supernovas::Planet::approx_geometric_in (const Frame &frame) const
 Returns approximate eometric posiitions and velocities for a major planet, Sun, Moon, Earth-Moon Barycenter (EMB) – typically to arcmin level accuracy – using Keplerian orbital elements.
AstrometricPosition supernovas::Apparent::astrometric_position () const
 Returns the projected 3D position, relative to the SSB or other Solar-System place, which gave rise to these apparent place on sky.
Geometric supernovas::Source::geometric_in (const Frame &frame, enum novas_reference_system system=NOVAS_TOD) const
 Returns the geometric position of a source (if possible), or else an invalid position.
Geometric supernovas::Frame::geometric_moon_elp2000 (double limit_term=0.0) const
 Returns the Moon's geometric position using the ELP/MPP02 model by Chapront & Francou (2003), down to the specified limiting term amplitude.

Detailed Description

Geometric locations are 3D positions and velocities relative to an observer location.

They are corrected for light travel time to the observer, so they reflect the position of sources either for when light originated from the source (for Solar-system bodies), or for when light reaches the Solar-system barycenter (for sidereal sources).

Function Documentation

◆ approx_geometric_in()

Geometric supernovas::Planet::approx_geometric_in ( const Frame & frame) const

Returns approximate eometric posiitions and velocities for a major planet, Sun, Moon, Earth-Moon Barycenter (EMB) – typically to arcmin level accuracy – using Keplerian orbital elements.

The orbitals can provide planet positions to arcmin-level precision for the rocky inner planets, and to a fraction of a degree precision for the gas and ice giants and Pluto. The accuracies for Uranus, Neptune, and Pluto are significantly improved (to the arcmin level) if used in the time range of 1800 AD to 2050 AD. For a more detailed summary of the typical accuracies, see either of the top two references below.

For accurate positions, you should use planetary ephemerides (such as the JPL ephemerides via the CALCEPH or CSPICE plugins) and novas_sky_pos() instead.

While this function is generally similar to creating an orbital object with an orbit initialized with novas_make_planet_orbit() or novas_make_moon_orbit(), and then calling novas_geom_posvel(), with an important difference:

  1. This function calculates Earth and Moon positions about the Keplerian orbital position of the Earth-Moon Barycenter (EMB). In contrast, novas_make_planet_orbit() does not provide orbitals for the Earth directly, and make_moot_orbit() references the Moon's orbital to the Earth position returned by the currently configured planet calculator function (see set_planet_provider()).

REFERENCES:

  1. E.M. Standish and J.G. Williams 1992.
  2. https://ssd.jpl.nasa.gov/planets/approx_pos.html
  3. Chapront, J. et al., 2002, A&A 387, 700–709
  4. Chapront-Touze, M., and Chapront, J. 1983, Astronomy and Astrophysics (ISSN 0004-6361), vol. 124, no. 1, July 1983, p. 50-62.
Parameters
Observing framesthe observing frame for which to calculate geometric positions.
Returns
approximate, orbital model based, geometric positions and velocities of this planet in the specified observing frame. It may be invalid either if this planet or the frame argument is invalid.
See also
approx_apparent_in()

References supernovas::Frame::_novas_frame(), supernovas::Unit::AU, supernovas::Unit::day, supernovas::Validating::is_valid(), supernovas::Frame::jd(), novas_approx_heliocentric(), novas_id(), NOVAS_TDB, novas_frame::sun_pos, and novas_frame::sun_vel.

◆ astrometric_position()

AstrometricPosition supernovas::Apparent::astrometric_position ( ) const

Returns the projected 3D position, relative to the SSB or other Solar-System place, which gave rise to these apparent place on sky.

The position is antedated to the time the observed light originated from the observed body,

Returns
The position referenced to the given Solar-system body or place, and antedated for light travel time for this apparent position.

References astrometric_position(), supernovas::Unit::au, novas_app_to_geom(), NOVAS_TOD, and supernovas::Position::undefined().

Referenced by astrometric_position().

◆ geometric_in()

Geometric supernovas::Source::geometric_in ( const Frame & frame,
enum novas_reference_system system = NOVAS_TOD ) const

Returns the geometric position of a source (if possible), or else an invalid position.

After the return, you should probably check for validity:

Geometric geom = my_source.geometric(frame);
if(!geom.is_valid()) {
// We could not obtain geometric positions for some reason.
...
}
The geometric (3D) position and velocity of a source relative to an observer location.
Definition supernovas.h:2340
bool is_valid() const
Returns the previously set 'valid' stae of the implementing instance.
Definition supernovas.h:247

There are multiple reasons why we might not be able to calculate valid geometric positions, such as:

  • the frame itself may be invalid.
  • the system parameter may be outside of the enum range
  • for Solar system sources:
    • SuperNOVAS may not have a planet or ephemeris provider function configured for the given accuracy.
    • the planet or ephemeris provider function does not have data for the source, or planet at the orbital center (for orbital sources), for the requested time of observation.

A geometric position is the 3D location, relative to the observer location, where the light originated from the source before being detected by the observer at the time of observation. As such, geometric positions are necessarily antedated for light travel time (for Solar-system sources) or corrected for the differential light-travel between the Solar-system barycenter and the observer location (for sidereal sources).

In other words, geometric positions are not the same as ephemeris positions for the equivalent time for Solar-system bodies. Rather, geometric positions match the ephemeris positions for an earlier time, when the observed light originated from the source.

Parameters
Observing framesobserver frame, which defines the observer location and the time of observation, as well as the accuracy requirement.
systemcoordinate reference system in which to return positions and velocities.
Returns
the geometric (3D) position and velocity of the source, which may be invalid if the position cannot be determined.
See also
apparent_in()

References supernovas::Frame::_novas_frame(), _object, supernovas::Unit::au, supernovas::Unit::day, novas_geom_posvel(), NOVAS_TOD, and supernovas::Geometric::undefined().

◆ geometric_moon_elp2000()

Geometric supernovas::Frame::geometric_moon_elp2000 ( double limit_term = 0.0) const

Returns the Moon's geometric position using the ELP/MPP02 model by Chapront & Francou (2003), down to the specified limiting term amplitude.

NOTES:

  • The initial implementation (in v1.6) truncates the full series, keeping only terms with amplitudes larger than 1 mas (around 3400 harmonic terms in total), resulting in a limiting accuracy below 1 km level (and less than 100 meter error typically for 1900 – 2100).

REFERENCES:

Parameters
limit_term(optional) [arcsec|km] Sum only the harmonic terms with amplitudes larger than this limit.
Returns
The calculated geometric geocentric position and velocity of the Moon in the ICRS.
See also
apparent_moon_elp2000()

References _novas_frame(), supernovas::Unit::AU, supernovas::Unit::day, supernovas::Validating::is_valid(), NOVAS_ICRS, novas_moon_elp_posvel_fp(), and supernovas::Geometric::undefined().