Loading...
Searching...
No Matches
Geometric positions and velocities

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

## Classes

class | supernovas::AstrometricPosition
| The 3D geometric equatorial position of an object, relative to a reference Solar-system location and a specific instant of time, in the coordinate system of choice. 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::SolarSystemSource::barycentric_at (const Time &time, enum novas_accuracy accuracy=NOVAS_FULL_ACCURACY) const
| Returns the Solar-system barycentric position and velocity of this Solar-system source, or else an undefined geometry if the source's place cannot be determined at the requested time or accuracy.
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) relative to the observer, or else an invalid position if the source could not be positioned in the observing frame.
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 and motion of a source when the observed light originated from the source.

## 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:

- 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

  frame | the 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.

Since
  1.6

See also
  approx_apparent_in()

References supernovas::Frame::_novas_frame(), supernovas::Unit::AU, supernovas::Unit::AU_per_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.

Since
  1.6

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

Referenced by astrometric_position().

## barycentric_at()

Geometric supernovas::SolarSystemSource::barycentric_at | ( | const Time & | time,
|  | enum novas_accuracy | accuracy = NOVAS_FULL_ACCURACY ) const

Returns the Solar-system barycentric position and velocity of this Solar-system source, or else an undefined geometry if the source's place cannot be determined at the requested time or accuracy.

Parameters

  time | The astrometric time
  accuracy | (optional) NOVAS_FULL_ACCURACY (default), or NOVAS_REDUCED_ACCURACY.

Returns
  The Solar-system barycentric geometric position and velocity of this source at the specified time, as obtained from ephemeris lookup; or else an undefined (invalid) object if the place ould not be determined.

Since
  1.6

References supernovas::Source::_novas_object(), supernovas::Observer::at_ssb(), supernovas::Unit::AU, supernovas::Unit::AU_per_day, ephemeris(), supernovas::Time::jd(), NOVAS_BARYCENTER, NOVAS_ICRS, NOVAS_TDB, and supernovas::Geometric::undefined().

## 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) relative to the observer, or else an invalid position if the source could not be positioned in the observing frame.

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.
...
}
supernovas::Geometric
The geometric (3D) position and velocity of a source relative to an observer location.
Definition supernovas.h:2645
supernovas::Validating::is_valid
bool is_valid() const
Returns the previously set 'valid' state of the implementing instance.
Definition supernovas.h:278

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

  frame | observer frame, which defines the observer location and the time of observation, as well as the accuracy requirement.
  system | coordinate 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.

Since
  1.6

See also
  apparent_in()

References supernovas::Frame::_novas_frame(), _object, supernovas::Unit::au, supernovas::Unit::AU_per_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:

1. Chapront-Touze, M., & Chapront, J., A&A, 190, 342 (1988)
2. Chapront, J., Francou G., 2003, A&A, 404, 735
3. Chapront, J., & Francou, G., "LUNAR SOLUTION ELP version ELP/MPP02", (October 2002), https://cyrano-se.obspm.fr/pub/2_lunar_solutions/2_elpmpp02/

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.

Since
  1.6

See also
  apparent_moon_elp2000()

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