PCL
|
Reduction of planetary and stellar positions. More...
#include <Position.h>
Static Public Member Functions | |
static DPoint | EclipticToEquatorial (const DPoint &q, double eps) |
static DPoint | EclipticToEquatorial (const DPoint &q, double se, double ce) |
static Vector | EclipticToEquatorial (const Vector &q, double eps) |
static Vector | EclipticToEquatorial (const Vector &q, double se, double ce) |
static DPoint | EquatorialToEcliptic (const DPoint &q, double eps) |
static DPoint | EquatorialToEcliptic (const DPoint &q, double se, double ce) |
static Vector | EquatorialToEcliptic (const Vector &q, double eps) |
static Vector | EquatorialToEcliptic (const Vector &q, double se, double ce) |
static DPoint | GalacticToICRSEquatorial (const DPoint &g) |
static Vector | GalacticToICRSEquatorial (const Vector &g) |
static DPoint | ICRSEquatorialToGalactic (const DPoint &q) |
static Vector | ICRSEquatorialToGalactic (const Vector &q) |
This class implements algorithms for reduction of positions of solar system bodies and stars. It allows for calculation of geometric, astrometric, proper, apparent and intermediate places, including geocentric and topocentric coordinates.
The implemented vector astrometry and ephemeris calculation algorithms are rigorous and compliant with current IAU and IERS resolutions. Both equinox-based and CIO-based paradigms have been implemented for calculation of positions that depend on Earth's rotation. The apparent and intermediate places include the following corrections:
Vector components are expressed in astronomical units (au) for stars and all solar system bodies except the Moon, for which positions are given in kilometers.
As of writing this documentation (October 2018, last updated June 2024), the IAU 2006/2000A precession-nutation theory is implemented (adjusted model with corrections to nutation angles, IAU 2006/2000AR). The standard fundamental ephemerides are JPL's DE440.
Most of the reference publications and material used are cited in source code comments and the documentation. The main authoritative resource is:
Urban, Sean E., Kenneth Seidelmann, P., ed. (2013), The Explanatory Supplement to the Astronomical Almanac 3rd Edition.
Definition at line 345 of file Position.h.
Constructs a Position object initialized for the specified time of calculation t in the specified timescale.
The supported time scales are:
TT | Terrestrial Time. This is the default timescale. |
TDB | Barycentric Dynamical Time. |
Teph | Ephemeris time, as defined by JPL DE/LE numerical integrations. For all purposes, this is equivalent to TDB. |
UTC | Coordinated Universal Time. |
TAI | Atomic International Time. |
UT1 | Universal Time. |
UT | Universal Time (same as UT1). |
timescale string values are considered case-sensitive.
All necessary timescale conversions to compute ephemerides and reduction of positions are performed automatically.
|
default |
Copy constructor.
|
default |
Move constructor.
Vector pcl::Position::Apparent | ( | const StarPosition & | S | ) |
Computes the apparent place of a star.
The returned vector is the apparent place calculated for the positional star data defined by the specified object S. Its components are geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale.
The implemented reduction algorithm includes the following corrections:
Vector pcl::Position::Apparent | ( | EphemerisFile::Handle & | H | ) |
Computes the apparent place of a solar system body.
The returned vector is the apparent place of the object defined by the specified ephemeris handle H in geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale.
The implemented reduction algorithm includes the following corrections:
Optional<double> pcl::Position::ApparentVisualMagnitude | ( | EphemerisFile::Handle & | H | ) |
Returns the observed visual magnitude of a solar system body.
For objects with known H and G values (absolute magnitude and slope parameters, respectively; see EphemerisFile::Handle::H() and EphemerisFile::Handle::G()), the apparent visual magnitude is calculated applying the algorithm for minor planets described in Bowell et al. (1989). See also The Explanatory Supplement, Section 10.4.3.
For objects with known M1 or M2 parameters (absolute total or nuclear comet magnitudes), the apparent visual magnitude is calculated as either the total comet magnitude (nucleus+coma) or, if only M2 is known, the comet nucleus magnitude. The algorithms are described in the documentation for the EphemerisFile::Handle::M1() member function.
For Mercury, Venus, Mars, Jupiter, Saturn, and Neptune, we apply the equations described in the following paper:
Anthony Mallama, James L. Hilton, Computing Apparent Planetary Magnitudes for The Astronomical Almanac, revised 2018 June 21.
As of writing this documentation, the above paper is available online at: https://arxiv.org/pdf/1808.01973.pdf
For Saturn, we compute the apparent visual magnitude taking into account the planet's rings.
For Uranus, Pluto and the Galilean satellites of Jupiter, data from various sources are taken from Table 10.6 of the Explanatory Supplement.
If the required data are not available, or if no algorithm is known for the calculation of the apparent visual magnitude of the specified object, this member function returns an undefined Optional object.
An undefined object is also returned when the phase angle of the object at the time of calculation is beyond the limits of the set of observations used to generate the underlying models. For Mercury, apparent magnitudes are only calculated for phase angles 2° ≤ i ≤ 170°. For Venus, the magnitude is only calculated for 0° < i ≤ 163°.7. The valid range for Mars is i ≤ 50°.
Vector pcl::Position::Astrometric | ( | const StarPosition & | S | ) |
Computes the astrometric place of a star.
The returned vector is the astrometric place calculated for the positional star data defined by the specified object S. Its components are geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale.
The implemented reduction algorithm includes the following corrections:
An astrometric place does not include annual aberration, nutation and precession corrections. Hence it is referred to an 'hybrid' reference system, but similar to GCRS J2000.0.
Vector pcl::Position::Astrometric | ( | EphemerisFile::Handle & | H | ) |
Computes the astrometric place of a solar system body.
The returned vector is the astrometric place of the object defined by the specified ephemeris handle H in geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale.
The implemented reduction algorithm includes the following corrections:
An astrometric place does not include annual aberration, nutation and precession corrections. Hence it is referred to an 'hybrid' reference system, but similar to GCRS J2000.0.
|
inline |
Returns the ICRS barycentric position of the Earth (barycentric rectangular equatorial coordinates), computed for the TDB time of calculation by the class constructor. The components of the returned vector are expressed in au.
Definition at line 907 of file Position.h.
|
inline |
Returns the ICRS barycentric position of the Sun (barycentric rectangular equatorial coordinates), computed for the TDB time of calculation by the class constructor. The components of the returned vector are in au.
Definition at line 928 of file Position.h.
|
inline |
Returns the ICRS barycentric velocity of the Earth (barycentric rectangular equatorial coordinates), computed for the TDB time of calculation by the class constructor. The components of the returned vector are expressed in au/day.
Definition at line 918 of file Position.h.
bool pcl::Position::CanComputeApparentVisualMagnitude | ( | const EphemerisFile::Handle & | H | ) | const |
Returns true iff the apparent visual magnitude of the object represented by the specified handle H can be calculated with the current implementation, at the calculation time defined by this instance.
Currently apparent visual magnitudes can be calculated for the following solar system bodies:
bool pcl::Position::CanComputeCometApparentVisualNuclearMagnitude | ( | const EphemerisFile::Handle & | H | ) | const |
Returns true iff the comet's apparent visual nuclear magnitude can be calculated at the calculation time defined by this instance for the object represented by the specified handle H.
This function returns true only if the object provides a valid M2 parameter, the absolute nuclear comet magnitude. This is the case for many comets included in standard XEPH files.
bool pcl::Position::CanComputeCometApparentVisualTotalMagnitude | ( | const EphemerisFile::Handle & | H | ) | const |
Returns true iff the comet's apparent visual total magnitude can be calculated at the calculation time defined by this instance for the object represented by the specified handle H.
This function returns true only if the object provides a valid M1 parameter, the absolute total comet magnitude (nucleus and coma). This is the case for most comets included in standard XEPH files.
|
inline |
The Celestial Intermediate Origin (CIO) locator, in radians.
This member function calls InitEquinoxBasedParameters() to ensure that all data required for equinox-based reduction of positions is available.
Definition at line 1094 of file Position.h.
|
inline |
Returns the inverse of the CIO-based combined bias-precession-nutation matrix.
This member function calls InitCIOBasedParameters() to ensure that all data required for equinox-based and CIO-based reduction of positions is available.
Definition at line 1049 of file Position.h.
|
inline |
Returns the CIO-based combined bias-precession-nutation matrix.
This member function calls InitCIOBasedParameters() to ensure that all data required for equinox-based and CIO-based reduction of positions is available.
Definition at line 1035 of file Position.h.
|
inline |
Coordinates of the Celestial Intermediate Pole (CIP) in the GCRS, in radians.
This member function calls InitEquinoxBasedParameters() to ensure that all data required for equinox-based reduction of positions is available.
Definition at line 1062 of file Position.h.
Vector pcl::Position::CIP_ITRS | ( | ) | const |
Coordinates of the Celestial Intermediate Pole (CIP) in the ITRS.
If possible, this member function returns an interpolated value from the global CIP_ITRS database, which will be loaded and parsed upon the first call to this function as a thread-safe procedure. See EphemerisFile::CIP_ITRSDataFilePath() and EphemerisFile::OverrideCIP_ITRSDataFilePath() for more information. See also IsPolarMotionEnabled() for some practical considerations.
Otherwise, if the time of calculation for this object falls outside the CIP_ITRS database time span, this function will return a two-dimensional vector with zero components.
The components of the returned 2-D vector are the coordinates xp, yp of the CIP with respect to the ITRS, expressed in radians.
Optional<double> pcl::Position::CometApparentVisualNuclearMagnitude | ( | EphemerisFile::Handle & | H | ) |
Returns the comet's apparent visual nuclear magnitude.
Nuclear comet magnitudes include the observed brightness of the comet's nucleus, excluding the coma. For information on the calculation of comet magnitudes, see the EphemerisFile::Handle::M1() member function.
If the required data are not available for the specified object, this member function returns an undefined Optional object.
Optional<double> pcl::Position::CometApparentVisualTotalMagnitude | ( | EphemerisFile::Handle & | H | ) |
Returns the comet's apparent visual total magnitude.
Total comet magnitudes include the observed brightness of the comet nucleus and coma. For information on the calculation of comet magnitudes, see the EphemerisFile::Handle::M1() member function.
If the required data are not available for the specified object, this member function returns an undefined Optional object.
|
inline |
Disables polar motion corrections for calculation of topocentric places. See the CIP_ITRS() and IsPolarMotionEnabled() functions for more details.
Definition at line 835 of file Position.h.
Conversion from spherical ecliptic to spherical equatorial coordinates.
q | Spherical ecliptic coordinates in radians, where q.x is the longitude and q.y is the latitude. |
eps | Oliquity of the ecliptic in radians. |
Returns the equatorial coordinates in radians as a point p, where p.x is the right ascension in the range [0,2pi) and p.y is the declination in [-pi/2,+pi/2].
Definition at line 1499 of file Position.h.
References pcl::SinCos().
|
inlinestatic |
Conversion from spherical ecliptic to spherical equatorial coordinates.
q | Spherical ecliptic coordinates in radians, where q.x is the longitude and q.y is the latitude. |
se | Sine of the obliquity of the ecliptic. |
ce | Cosine of the obliquity of the ecliptic. |
Returns the equatorial coordinates in radians as a point p, where p.x is the right ascension in the range [0,2pi) and p.y is the declination in [-pi/2,+pi/2].
Definition at line 1480 of file Position.h.
References pcl::GenericVector< T >::FromSpherical(), pcl::GenericPoint< T >::x, and pcl::GenericPoint< T >::y.
Conversion from rectangular ecliptic to rectangular equatorial coordinates.
q | Rectangular ecliptic coordinates. |
eps | Oliquity of the ecliptic in radians. |
Returns a vector whose components are the rectangular equatorial coordinates corresponding to the specified ecliptic position q at the epoch where the specified obliquity has been calculated.
Definition at line 1460 of file Position.h.
References pcl::SinCos().
|
inlinestatic |
Conversion from rectangular ecliptic to rectangular equatorial coordinates.
q | Rectangular ecliptic coordinates. |
se | Sine of the obliquity of the ecliptic. |
ce | Cosine of the obliquity of the ecliptic. |
Returns a vector whose components are the rectangular equatorial coordinates corresponding to the specified ecliptic position q at the epoch where the specified obliquity has been calculated.
Definition at line 1442 of file Position.h.
|
inline |
Enables polar motion corrections for calculation of topocentric places. See the CIP_ITRS() and IsPolarMotionEnabled() functions for more details.
Definition at line 826 of file Position.h.
|
inline |
Equation of the origins, expressed in radians.
This member function calls InitEquinoxBasedParameters() to ensure that all data required for equinox-based reduction of positions is available.
Definition at line 1106 of file Position.h.
|
inline |
Mean obliquity of the ecliptic, in radians.
Definition at line 1139 of file Position.h.
References pcl::AsRad(), and pcl::Poly().
Conversion from spherical equatorial to spherical ecliptic coordinates.
q | Spherical equatorial coordinates in radians, where q.x is the right ascension and q.y is the declination. |
eps | Oliquity of the ecliptic in radians. |
Returns the ecliptic coordinates in radians as a point p, where p.x is the longitude in the range [0,2pi) and p.y is the latitude in [-pi/2,+pi/2].
Definition at line 1422 of file Position.h.
References pcl::SinCos().
|
inlinestatic |
Conversion from spherical equatorial to spherical ecliptic coordinates.
q | Spherical equatorial coordinates in radians, where q.x is the right ascension and q.y is the declination. |
se | Sine of the obliquity of the ecliptic. |
ce | Cosine of the obliquity of the ecliptic. |
Returns the ecliptic coordinates in radians as a point p, where p.x is the longitude in the range [0,2pi) and p.y is the latitude in [-pi/2,+pi/2].
Definition at line 1403 of file Position.h.
References pcl::GenericVector< T >::FromSpherical(), pcl::GenericPoint< T >::x, and pcl::GenericPoint< T >::y.
Conversion from rectangular equatorial to rectangular ecliptic coordinates.
q | Rectangular equatorial coordinates. |
eps | Oliquity of the ecliptic in radians. |
Returns a vector whose components are the rectangular ecliptic coordinates corresponding to the specified equatorial position q at the epoch where the specified obliquity has been calculated.
Definition at line 1383 of file Position.h.
References pcl::SinCos().
|
inlinestatic |
Conversion from rectangular equatorial to rectangular ecliptic coordinates.
q | Rectangular equatorial coordinates. |
se | Sine of the obliquity of the ecliptic. |
ce | Cosine of the obliquity of the ecliptic. |
Returns a vector whose components are the rectangular ecliptic coordinates corresponding to the specified equatorial position q at the epoch where the specified obliquity has been calculated.
Definition at line 1365 of file Position.h.
Conversion from spherical equatorial to spherical local horizontal coordinates (azimuth and altitude).
q | Spherical equatorial coordinates in radians, where q.x is the right ascension and q.y is the declination. |
Returns the horizontal coordinates in radians as a point p, where p.x is the azimuth in the range [0,2pi) and p.y is the altitude in [-pi/2,+pi/2]. The horizontal coordinates are calculated at the current local hour angle for the specified right ascension.
This function requires valid geodetic coordinates of the observer set through a previous call to SetObserver(). If no valid observer coordinates have been defined, this function returns zero horizontal coordinates conventionally.
Local hour angles are calculated either from the Greenwich Apparent Sidereal Time (GAST) or the Earth Rotation Angle (ERA), respectively for equinox-based and CIO-based observers.
For accurate results, apparent topocentric coordinates should be specified, including corrections for diurnal parallax and diurnal aberration.
Definition at line 1318 of file Position.h.
References pcl::GenericPoint< T >::x, and pcl::GenericPoint< T >::y.
|
inline |
Conversion from spherical equatorial to spherical local horizontal coordinates (azimuth and altitude).
ra | Right ascension in radians. |
dec | Declination in radians. |
Calling this function is equivalent to:
Definition at line 1335 of file Position.h.
References pcl::ArcSin(), pcl::ArcTan(), pcl::Norm2Pi(), pcl::Rad(), and pcl::SinCos().
|
inline |
Returns the inverse of the equinox-based combined bias-precession-nutation matrix.
This member function calls InitEquinoxBasedParameters() to ensure that all data required for equinox-based reduction of positions is available.
Definition at line 1022 of file Position.h.
|
inline |
Returns the equinox-based combined bias-precession-nutation matrix.
This member function calls InitEquinoxBasedParameters() to ensure that all data required for equinox-based reduction of positions is available.
Definition at line 1009 of file Position.h.
|
inline |
Earth rotation angle, expressed in radians.
This member function calls InitEquinoxBasedParameters() to ensure that all data required for equinox-based reduction of positions is available.
Definition at line 1118 of file Position.h.
Conversion from spherical galactic to ICRS spherical equatorial coordinates.
g | Spherical galactic coordinates in radians, where p.x is the galactic longitude and p.y is the galactic latitude. |
Returns the ICRS equatorial coordinates in radians as a point p, where p.x is the right ascension in the range [0,2pi) and p.y is the declination in [-pi/2,+pi/2].
See the documentation for ICRSEquatorialToGalactic( const Vector& ) for detailed information.
Definition at line 1598 of file Position.h.
References pcl::GenericVector< T >::FromSpherical(), pcl::GenericPoint< T >::x, and pcl::GenericPoint< T >::y.
Conversion from rectangular galactic to ICRS rectangular equatorial coordinates.
g | Rectangular galactic coordinates. |
Returns a vector whose components are the calculated rectangular equatorial coordinates in the ICRS.
See ICRSEquatorialToGalactic( const Vector& ) for detailed information.
Definition at line 1577 of file Position.h.
|
inline |
Greenwich apparent sidereal time, expressed in radians.
This member function calls InitEquinoxBasedParameters() to ensure that all data required for equinox-based reduction of positions is available.
Definition at line 1130 of file Position.h.
Vector pcl::Position::Geometric | ( | const StarPosition & | S | ) |
Computes the geometric position of a star.
The components of the returned vector are the geocentric or topocentric rectangular equatorial coordinates for the instant of calculation defined by this object in the TT timescale, for the positional star data defined by the specified object S.
The implemented reduction algorithm includes just the corrections for space motion: parallax, radial velocity and proper motions, when the corresponding data items are nonzero in the specified object S. The space motion vector includes terms to account for the relativistic Doppler effect.
Vector pcl::Position::Geometric | ( | EphemerisFile::Handle & | H | ) |
Computes the geometric position of a solar system body.
The components of the returned vector are the geocentric or topocentric rectangular equatorial coordinates for the instant of calculation defined by this object in the TT timescale, accounting for light-travel time, for the body defined by the specified ephemeris handle H.
The implemented reduction algorithm includes just the correction for light-travel time, but no corrections for light deflection, annual aberration, nutation, or precession. The position so calculated allows to plot the specified body directly on an existing sky chart referred to GCRS/J2000.0. Note however, that for generation of new graphical representations for a given date using star catalog data, astrometric or proper places should be used instead.
|
inline |
Returns the ICRS heliocentric position of the Earth (heliocentric rectangular equatorial coordinates), computed for the TDB time of calculation by the class constructor. The components of the returned vector are expressed in au.
Definition at line 939 of file Position.h.
Conversion from ICRS spherical equatorial to spherical galactic coordinates.
q | Spherical ICRS equatorial coordinates in radians, where q.x is the right ascension and q.y is the declination. |
Returns the galactic coordinates in radians as a point p, where p.x is the longitude in the range [0,2pi) and p.y is the latitude in [-pi/2,+pi/2].
See the documentation for ICRSEquatorialToGalactic( const Vector& ) for critical information on the adopted galactic coordinate system.
Definition at line 1559 of file Position.h.
References pcl::GenericVector< T >::FromSpherical(), pcl::GenericPoint< T >::x, and pcl::GenericPoint< T >::y.
Conversion from ICRS rectangular equatorial to rectangular galactic coordinates.
q | Rectangular equatorial coordinates in the ICRS. |
Returns a vector whose components are the calculated rectangular galactic coordinates.
In this routine we adopt the proposed ICRS coordinates of the galactic pole in:
Jia-Cheng Liu, Zi Zhu, and Hong Zhang, Reconsidering the galactic coordinate system, Astronomy & Astrophysics manuscript no. AA2010, October 26, 2018.
The applied conventional definitions are as follows. The ICRS equatorial coordinates of the zero point of galactic coordinates are:
α = 17h45m40s.0400 δ = –29°00'28".138
The equatorial coordinates of the galactic pole, coherent with the ICRS, are:
αp = 12h51m36s.7151981 δp = +27°06'11".193172
Note that these definitions are not consistent with the conventional values currently accepted by the IAU. The current (as of June 2024) galactic coordinate system was defined by the IAU in 1959 in the FK4 B1950.0 reference system.
Definition at line 1538 of file Position.h.
void pcl::Position::InitCIOBasedParameters | ( | ) |
Calculates all parameters and data structures necessary for CIO-based reduction of positions.
This member function starts by calling InitEquinoxBasedParameters(), so it implicitly calculates all equinox-based parameters. Then it calculates the CIO-based combined bias-precession-nutation matrix. See ESAA sections 6.7 and 7.2.5.2.
Since all of these items depend exclusively on time, they are computed only once in the first call to this function, and subsequent calls will have no effect.
Normally, you don't have to call this function directly because it is invoked automatically when necessary by the different position reduction routines.
void pcl::Position::InitEquinoxBasedParameters | ( | ) |
Calculates all parameters and data structures necessary for equinox-based reduction of positions.
This member function calculates the following structures:
Since all of these items depend exclusively on time, they are computed only once in the first call to this function, and subsequent calls will have no effect.
Normally, you don't have to call this function directly because it is invoked automatically when necessary by the different position reduction routines.
Vector pcl::Position::Intermediate | ( | const StarPosition & | S | ) |
Computes the intermediate place of a star.
The returned vector is the intermediate place calculated for the positional star data defined by the specified object S. Its components are geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale.
The implemented reduction algorithm includes the following corrections:
Vector pcl::Position::Intermediate | ( | EphemerisFile::Handle & | H | ) |
Computes the intermediate place of a solar system body.
The returned vector is the intermediate place of the object defined by the specified ephemeris handle H in geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale.
The implemented reduction algorithm includes the following corrections:
|
inline |
Returns true iff topocentric places take into account polar motion corrections to compute the geocentric position and velocity of the observer. This involves calculation of CIP coordinates with respect to the ITRS, as well as access to a database of CIP/ITRS positions. See the CIP_ITRS() member function for more details.
Polar motion introduces changes at the mas level for calculation of topocentric coordinates of the Moon. For the rest of objects, the effect of polar motion corrections is completely negligible. For topocentric positions of the Moon, polar motion can be necessary to achieve the highest accuracy, but in such case one may also have to take into account a regional geoid referred to the Earth's reference ellipsoid. See the ObserverPosition structure.
Definition at line 817 of file Position.h.
|
inline |
Returns true iff a valid observer location has been defined for this object in a previous call to SetObserver().
Definition at line 797 of file Position.h.
|
inline |
Computes the light-travel time for a solar system body.
The returned value is the light-travel time in days for the instant of calculation defined by this object in the TT timescale, calculated for the body defined by the specified ephemeris handle H.
Definition at line 472 of file Position.h.
|
inline |
Returns the nutation angles in radians as a point p, where p.x is the nutation in longitude and p.y is the nutation in obliquity.
This member function calls InitEquinoxBasedParameters() to ensure that all data required for equinox-based reduction of positions is available.
Definition at line 1154 of file Position.h.
|
inline |
Returns the current observer. If no observer has been defined for this object, returns a default-constructed structure for a fictitious observer at the geocenter.
Definition at line 786 of file Position.h.
Copy assignment operator. Returns a reference to this object.
Move assignment operator. Returns a reference to this object.
double pcl::Position::PhaseAngle | ( | const StarPosition & | S | ) |
The observed phase angle of a star, in radians.
The phase angle of a star is the angle between the observer-star and Sun-star vectors.
double pcl::Position::PhaseAngle | ( | EphemerisFile::Handle & | H | ) |
The observed phase angle of a solar system body, in radians.
The phase angle of a solar system body is the angle between the observer-body and Sun-body vectors.
Vector pcl::Position::Proper | ( | const StarPosition & | S | ) |
Computes the proper place of a star.
The returned vector is the proper place calculated for the positional star data defined by the specified object S. Its components are geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale.
The implemented reduction algorithm includes the following corrections:
A proper place does not include nutation and precession corrections, hence it is referred to the reference coordinate system: GCRS J2000.0.
Vector pcl::Position::Proper | ( | EphemerisFile::Handle & | H | ) |
Computes the proper place of a solar system body.
The returned vector is the proper place of the object defined by the specified ephemeris handle H in geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale.
The implemented reduction algorithm includes the following corrections:
A proper place does not include nutation and precession corrections, hence it is referred to the reference coordinate system: GCRS J2000.0.
void pcl::Position::SetGeocentric | ( | ) |
Removes the current observer, if a valid one has been defined by a previous call to SetObserver(). In such case, all previously computed positional data will be invalidated, with the exception of fundamental ephemerides and existing bias-precession-nutation matrices.
If no observer has been defined for this object, calling this member function has no effect.
After calling this member function, all subsequently calculated geometric, proper, astrometric, apparent and intermediate places will be geocentric.
void pcl::Position::SetObserver | ( | const ObserverPosition & | observer | ) |
Defines the geodetic positional and reference data necessary for calculation of topocentric positions of solar system objects and stars.
By default, an instance of the Position class calculates geocentric coordinates. After calling this member function, subsequently calculated geometric, proper, astrometric, apparent and intermediate places will be topocentric, that is, will be referred to the location of the observer with respect to the center of the Earth.
By calling this member function, all previously computed positional data will be erased with the exception of fundamental ephemerides and existing bias-precession-nutation matrices, which can always be preserved.
The ObserverPosition::cioBased data member of the specified observer structure selects the celestial system and paradigm to be used in the calculation of positions that depend on Earth's rotation. If the cioBased member is true, equinox-based places cannot be calculated, and any of the Apparent() member functions will throw an exception if called. Conversely, if cioBased is false, CIO-based places cannot be calculated and no call to an Intermediate() member function will be allowed.
If polar motion corrections are enabled, the position of the CIP with respect to the ITRS is interpolated from the global CIP_ITRS database, if it provides data for the current time of calculation. In such case, polar motion is taken into account in the calculation of the observer's geocentric position and velocity. For the geocentric velocity a standard constant value for the rotation rate of the Earth is used; the velocity component due to precession and nutation is not taken into account since its effect is negligible. See the IsPolarMotionEnabled() and CIP_ITRS() member functions for more information and additional references.
|
inline |
Returns the time of calculation for this object in the Barycentric Dynamical Time (TDB) timescale.
The times of calculation in different timescales are computed by the class constructor.
Definition at line 847 of file Position.h.
|
inline |
Returns the time of calculation for this object in the ephemeris timescale defined by the JPL DE/LE numerical integration. For all purposes this is equivalent to TDB.
The times of calculation in different timescales are computed by the class constructor.
Definition at line 860 of file Position.h.
|
inline |
Computes the geometric position of a star.
This function has been implemented for completeness. It is a synonym for Geometric( const StarPosition& ). There are no known 'true' positions of stars, since their light-travel time is implicitly included in the space motion equations.
Definition at line 429 of file Position.h.
|
inline |
Computes the true position of a solar system body.
The components of the returned vector are the geocentric or topocentric rectangular equatorial coordinates for the calculation instant defined by this object in the TT timescale, without accounting for light-travel time, for the body defined by the specified ephemeris handle H.
This function calls Geometric( EphemerisFile::Handle& ) internally to compute, if necessary, the geometric position with correction for light time, that is, no separate calculation routine is implemented for true positions. The returned vector is only useful to compute the true geocentric or topocentric distance, and for verification purposes.
Definition at line 415 of file Position.h.
|
inline |
Computes the true distance of a star.
The returned value is just the norm of the geometric position vector, that is:
This should be an actual distance in au only for stars with known parallaxes. For stars where the parallax is unknown or undefined, this value is meaningless because in such cases position vectors are unit vectors, whose components are also known as direction cosines.
Definition at line 460 of file Position.h.
|
inline |
Computes the true distance of a solar system body.
The true distance is the actual distance from the body to the observer, geocentric or topocentric, at the instant of calculation. This excludes the light-travel time correction.
Definition at line 442 of file Position.h.
|
inline |
Returns the time of calculation for this object in the Terrestrial Time (TT) timescale.
The times of calculation in different timescales are computed by the class constructor.
Definition at line 872 of file Position.h.
|
inline |
Returns the time of calculation for this object in the Universal Time (UT1) timescale.
The times of calculation in different timescales are computed by the class constructor.
Definition at line 896 of file Position.h.
|
inline |
Returns the time of calculation for this object in the Coordinated Universal Time (UTC) timescale.
The times of calculation in different timescales are computed by the class constructor.
Definition at line 884 of file Position.h.