You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/kstars/kstars/ksnumbers.h

128 lines
4.4 KiB

/***************************************************************************
ksnumbers.h - description
-------------------
begin : Sun Jan 13 2002
copyright : (C) 2002-2005 by Jason Harris
email : kstars@30doradus.org
copyright : (C) 2004-2005 by Pablo de Vicente
email : p.devicente@wanadoo.es
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef KSNUMBERS_H
#define KSNUMBERS_H
#define NUTTERMS 63
#include "dms.h"
/**@class KSNumbers
*
*There are several time-dependent values used in position calculations,
*that are not specific to an object. This class provides
*storage for these values, and methods for calculating them for a given date.
*The numbers include solar data like the true/mean solar anomalies
*and longitudes, the longitude of the Earth's perihelion, the
*eccentricity of Earth's orbit, the
*constant of aberration, the obliquity of the Ecliptic, the effects of
*Nutation (delta Obliquity and delta Ecliptic longitude),
*the Julian Day/Century/Millenium, and arrays for computing the precession.
*@short Store several time-dependent astronomical quantities.
*@author Jason Harris
*@version 1.0
*/
class KSNumbers {
public:
/**Constructor. */
KSNumbers( long double jd );
/**Destructor (empty). */
~KSNumbers();
/**@return the current Obliquity (the angle of inclination between
*the celestial equator and the ecliptic)
*/
const dms* obliquity() const { return &Obliquity; }
/**@return the constant of aberration (20.49 arcsec). */
dms constAberr() const { return K; }
/**@return the mean solar anomaly. */
dms sunMeanAnomaly() const { return M; }
/**@return the mean solar longitude. */
dms sunMeanLongitude() const { return L; }
/**@return the true solar anomaly. */
dms sunTrueAnomaly() const { return M0; }
/**@return the true solar longitude. */
dms sunTrueLongitude() const { return L0; }
/**@return the longitude of the Earth's perihelion point. */
dms earthPerihelionLongitude() const { return P; }
/**@return eccentricity of Earth's orbit.*/
double earthEccentricity() const { return e; }
/**@return the change in obliquity due to the nutation of
* Earth's orbit. Value is in degrees */
double dObliq() const { return deltaObliquity; }
/**@return the change in Ecliptic Longitude due to nutation.
* Value is in degrees. */
double dEcLong() const { return deltaEcLong; }
/**@return Julian centuries since J2000*/
double julianCenturies() const { return T; }
/**@return Julian Day*/
long double julianDay() const { return days; }
/**@return Julian Millenia since J2000*/
double julianMillenia() const { return jm; }
/**@return element of P1 precession array at position [i1][i2] */
double p1( int i1, int i2 ) const { return P1[i1][i2]; }
/**@return element of P2 precession array at position [i1][i2] */
double p2( int i1, int i2 ) const { return P2[i1][i2]; }
/**@return element of P1B precession array at position [i1][i2] */
double p1b( int i1, int i2 ) const { return P1B[i1][i2]; }
/**@return element of P2B precession array at position [i1][i2] */
double p2b( int i1, int i2 ) const { return P2B[i1][i2]; }
/**@short update all values for the date given as an argument.
*@param jd the Julian date for which to compute values
*/
void updateValues( long double jd );
double vEarth(int i) const {return vearth[i];}
private:
dms Obliquity, K, L, L0, LM, M, M0, O, P, D, MM, F;
dms XP, YP, ZP, XB, YB, ZB;
double CX, SX, CY, SY, CZ, SZ;
double CXB, SXB, CYB, SYB, CZB, SZB;
double P1[3][3], P2[3][3], P1B[3][3], P2B[3][3];
double deltaObliquity, deltaEcLong;
double e, T, TB;
long double days;
double jm;
static const int arguments[NUTTERMS][5];
static const int amp[NUTTERMS][4];
double vearth[3];
};
#endif