- NONE
- IAU1976
- B1950
- IAU2000
- IAU2000A = IAU2000,IAU2000B=IAU2000,
Types of known precession calculations (at 1995/09/04 STANDARD ==
IAU1976), from 2004/01/01 will be IAU2000)
Return the precession angles (for IAU2000 including
the IAU 2000 corrections) at the specified epoch (in MJD; TT for IAU2000).
Return derivative of precession (d-1)
Make a copy
Prerequisite
Etymology
Precession
Synopsis
Precession forms the class for precession calculations. It is a simple
container with the selected method, and the mean epoch. It acts as a cache
for values and their derivatives, to enable fast calculations for time
epochs close together (see the aipsrc variable
measures.precession.d_interval.
The calculation method is selected from one of the following:
Epochs can be specified as the MJD (with defined constants
MeasData::MJD2000 and MeasData::MJD1950 or the actual MJD),
leading to the following constructors:
Actual precession for a certain Epoch (TT for IAU2000) is calculated by
the () operator
as Precession(epoch), with epoch Double MJD. Values returned as an
Euler.
The derivative (d-1) can be obtained as well by
derivative(epoch).
A Precession can be re-initialed with a different method and/or zero
epoch with the init() functions (same format as constructors).
To bypass the full calculation actual returned values are calculated
using the derivative if within about 2 hours (error less than about
10-5 mas). A call to refresh() will re-initiate calculations
from scratch.
The following details can be set with the
Aipsrc mechanism:
Example
#include <measures/Measures.h>
MVDirection pos(Quantity(10,"degree"),Quantity(-10.5,"degree"));
// direction RA=10; DEC=-10.5
Precession mine(Precession::IAU1976); // define precession type
RotMatrix rotat(mine(45837.0)); // rotation matrix for 84/05/17
MVDirection new = rotat*pos; // apply precession
rotat = RotMatrix(mine(45839.0)); // interpolate new precession
// assuming d_interval set large
Motivation
To calculate the precession angles. An alternate route could have been
a global function, but having a simple container allows caching of some
calculations for speed.
Using MJD (JD-2400000.5) rather than JD is for precision reasons.
To Do
Member Description
enum PrecessionTypes
Precession()
Default constructor, generates default J2000 precession identification
Precession(const Precession &other)
Copy constructor (deep copy)
explicit Precession(PrecessionTypes type, Double catepoch=0)
Constructor with epoch in Julian days
Precession &operator=(const Precession &other)
Copy assignment (deep copy)
~Precession()
const Euler &operator()(Double epoch)
const Euler &derivative(Double epoch)
void init()
Re-initialise Precession object
void init(PrecessionTypes type, Double catepoch=0)
void refresh()
Refresh calculations
void copy(const Precession &other)
void fillEpoch()
Create correct default fixedEpoch and catalogue epoch data
void calcPrec(Double t)
Calculate precession angles for time t