/usr/include/astro/solarsystem.h is in libastro-dev 4:4.13.0-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | //
// This file is part of the Marble Virtual Globe.
//
// This program is free software licensed under the GNU LGPL. You can
// find a copy of this license in LICENSE.txt in the top directory of
// the source code.
//
// Copyright 2013 Gerhard Holtkamp
//
#if !defined(__solarsystem_h)
#define __solarsystem_h
#include "attlib.h"
#include "astrolib_export.h"
class ASTROLIB_EXPORT SolarSystem // Calculate Positions of Solar System Bodies
{
public:
SolarSystem();
~SolarSystem();
void setTimezone(double d); // set timezone for I/O
void setDeltaTAI_UTC(double d); // set IERS Parameter TAI - UTC
void setAutoTAI_UTC(); // IERS Parameter TAI - UTC to auto
void setCurrentMJD(int year, int month, int day, int hour, int min, double sec); // set current time
void setCurrentMJD(); // sets current MJD to R/T
double getMJD(int year, int month, int day, int hour, int min, double sec) const; // get MJD from date
void getDatefromMJD(double mjd, int &year, int &month, int &day,
int &hour, int &min, double &sec) const; // convert MJD into date and time
void setEpoch (double yr); // set epoch of coordinates
void setNutation (bool nut); // specify whether nutation is to be included.
void setCentralBody (const char *pname); // select which planet is central body
void getSun (double& ra, double& decl); // RA and Dec for the Sun
void getMoon (double& ra, double& decl); // RA and Dec for the Moon
void getMercury (double& ra, double& decl); // RA and Dec for Mercury
void getVenus (double& ra, double& decl); // RA and Dec for Venus
void getEarth (double& ra, double& decl); // RA and Dec for Earth (with regard to the Sun)
void getMars (double& ra, double& decl); // RA and Dec for Mars
void getJupiter (double& ra, double& decl); // RA and Dec for Jupiter
void getSaturn (double& ra, double& decl); // RA and Dec for Saturn
void getUranus (double& ra, double& decl); // RA and Dec for Uranus
void getNeptune (double& ra, double& decl); // RA and Dec for Neptune
void getPhysSun (double &pdiam, double &pmag); // Physical elements Sun
void getPhysMercury(double &pdiam, double &pmag, double &pphase); // Physical elements Mercury
void getPhysVenus(double &pdiam, double &pmag, double &pphase); // Physical elements Venus
void getPhysEarth(double &pdiam, double &pmag, double &pphase); // Physical elements Earth
void getPhysMars(double &pdiam, double &pmag, double &pphase); // Physical elements Mars
void getPhysJupiter(double &pdiam, double &pmag, double &pphase); // Physical elements Jupiter
void getPhysSaturn(double &pdiam, double &pmag, double &pphase); // Physical elements Saturn
void getPhysUranus(double &pdiam, double &pmag, double &pphase); // Physical elements Uranus
void getPhysNeptune(double &pdiam, double &pmag, double &pphase); // Physical elements Neptune
double getDiamMoon (); // Apparent diameter for the Moon
void getLunarLibration (double &lblon, double &lblat, double &termt); // librations of the Moon and terminator position
void getLunarPhase (double &phase, double &ildisk, double &amag); // phase and mag of Moon
Vec3 getPlanetocentric (double ra, double decl); // planetocentric position
void getPlanetographic (double ra, double decl, double &lng, double &lat);
void putOrbitElements (double t0, double pdist, double ecc, double ran, double aper, double inc, double eclep);
void putEllipticElements (double t0, double a, double m0, double ecc, double ran, double aper, double inc, double eclep);
void getOrbitPosition (double& ra, double& decl);
double getDistance(); // distance in AU of Kepler object
double getCometMag(double g, double k); // apparent magnitude of comet
double getAsteroidMag(double h, double g); // apparent magnitude of asteroid
static double DmsDegF (double h); // conversion from Format DDD.MMSS into d.fff
static double DegFDms (double h); // conversion from Format d.fff into DDD.MMSS
private:
void ssinit(); // initialize SolarSystem
static double atan23 (double y, double x); // atan without singularity for x,y=0
void DefTime (); // Get System Time and Date
static void getRaDec (Vec3 r1, double& ra, double& decl); // convert r1 into RA and DEC
void updateSolar(); // update all positions of planets according to current MJD.
void MoonDetails();
static void MoonLibr (double jd, Vec3 rm, Vec3 sn, double &lblon, double &lblat, double &termt);
Vec3 SnPos (double &ep2, double &els) const;
Vec3 MnPos (double &ep2, double &els) const;
Mat3 getSelenographic() const;
void getConstSun(); // Sun constants
void getConstMoon(); // Moon planetary constants
void getConstMercury(); // Mercury planetary constants
void getConstVenus(); // Venus planetary constants
void getConstEarth(); // Earth planetary constants
void getConstMars(); // Mars planetary constants
void getConstJupiter(); // Jupiter planerary constants
void getConstSaturn(); // Saturn planerary constants
void getConstUranus(); // Uranus planerary constants
void getConstNeptune(); // Neptune planerary constants
void getPlanMat(); // get Matrix to convert from J2000.0 into planetary coordinates
// data fields
bool ss_update_called; // true if updateSolar() has already been called
bool ss_moon_called; // true if special Moon calculation called
bool ss_planmat_called; // true if matrix for planetary coordintes called
bool ss_kepler_stored; // true if Kepler elements for comet or asteroid stored
bool ss_kepler_called; // true if comet or asteroid position calculated
int ss_day; // date
int ss_month;
int ss_year;
int ss_hour;
int ss_minute;
int ss_second;
double ss_time; // currently used MJD
double ss_tzone; // timezone in hours
double ss_del_tdut; // TDT - UT in sec
int ss_del_auto; // 1 = automatic del_tdut, 0 = manual
bool ss_RT; // true if calculations in Real Time, false if time manually set to MJD.
bool ss_nutation; // true if position corrected for nutation
double ss_epoch; // epoch of coordinates in MJD
int ss_central_body; // body defining the coordinate origin (0=sun,1=moon,2=mercury etc.)
Vec3 ss_rm, ss_rs; // position of Moon and Sun in ecliptic of date (A.U.)
Vec3 ss_pmer, ss_pven, ss_pearth, ss_pmars, ss_pjup, ss_psat, ss_pura, ss_pnept; // positions of planets
double ss_moon_mag; // apparent magnitude of the Moon
double ss_moon_lblon; // longitude of lunar libration
double ss_moon_lblat; // latitude of lunar libration
double ss_moon_term; // position of lunar terminator
double ss_moon_ildisk; // fraction of Moon's illuminated disk
double ss_moon_phase; // phase of Moon
double ss_GM; // graviatational constant (m^3/s^2)
double ss_J2; // J2 gravitational term
double ss_R0; // equatorial radius (km)
double ss_flat; // flattening factor
double ss_axl0; // l-direction of rotation axis
double ss_axl1; // delta of axl0
double ss_axb0; // b-direction of rotation axis
double ss_axb1; // delta of axb0
double ss_W; // location of prime meridian
double ss_Wd; // daily variation of W.
Mat3 ss_planmat; // matrix to convert from J2000.0 into planetary coordinates
double ss_lat; // planetary latitude (decimal degrees)
double ss_lng; // planetary longitude (decimal degrees)
double ss_height; // height above reference ellipsoid (km)
double ss_t0; // time of perihelion passage or epoch of elliptical elements (MJD)
double ss_m0; // Mean Anomaly in degrees
double ss_a; // semi-major axis in AU
double ss_ecc; // eccentricity
double ss_ran; // right ascension of ascending node in degrees
double ss_aper; // argument of perihelion
double ss_inc; // inclination in degrees
double ss_eclep; // epoch of ecliptic and equator for these elements
Vec3 ss_comet; // position vector of comet or asteroid in AU
};
#endif // __solarsystem_h sentry.
|