• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.12
  • kdeedu
  • marble
  • src
  • plugins
  • render
  • satellites
  • mex
astrolib.h
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2012 Gerhard HOLTKAMP
9 //
10 
11 #if !defined(__astrolib_h)
12 #define __astrolib_h
13 
14 #include "attlib.h"
15 
16 double ddd (int d, int m, double s); // deg, min, sec -> decimal degrees
17 void dms (double dd, int &d, int &m, double &s); // dec deg -> deg, min, sec
18 double mjd (int day, int month, int year, double hour); // modified Julian date
19 double julcent (double mjuld); // Julian centuries since 2000.0
20 void caldat (double mjd, int &day, int &month, int &year, double &hour);
21 double DefTdUt (int yr); // default value for TDT - UT in seconds
22 double lsidtim (double jd, double lambda, double ep2); // Sidereal Time
23 
24 double eps (double t); // obliquity of ecliptic
25 Vec3 eclequ (double t, Vec3& r1); // ecliptic -> equatorial
26 Vec3 equecl (double t, Vec3& r1); // equatorial -> ecliptic
27 Mat3 pmatecl (double t1, double t2); // ecl. precession
28 Mat3 pmatequ (double t1, double t2); // equ. precession
29 Mat3 nutmat (double t, double& ep2, bool hipr = false); // nutation (equatorial)
30 Mat3 nutecl (double t, double& ep2); // nutation matrix (ecliptic)
31 Mat3 PoleMx (double xp, double yp); // Polar motion matrix
32 Vec3 aberrat (double t, Vec3& ve); // aberration
33 
34 Vec3 GeoPos (double jd, double ep2, double lat, double lng, double ht);
35 Vec3 GeoPos (double jd, double ep2, double lat, double lng, double ht,
36  double xp, double yp);
37 Vec3 EquHor (double jd, double ep2, double lat, double lng, Vec3 r);
38 Vec3 HorEqu (double jd, double ep2, double lat, double lng, Vec3 r);
39 void AppPos (double jd, double ep2, double lat, double lng, double ht,
40  int solsys, Vec3 r, double& azim, double& elev, double& dist);
41 void AppRADec (double jd, double ep2, double lat, double lng,
42  double azim, double elev, double& ra, double& dec);
43 double Refract (double h, double p = 1015.0, double t = 15.0); // refraction
44 
45 double eccanom (double man, double ecc); // eccentric anomaly
46 double hypanom (double mh, double ecc); // hyperbolic anomaly
47 void ellip (double gm, double t0, double t, double a, double ecc,
48  double m0, Vec3& r1, Vec3& v1); // elliptic state vector
49 void hyperb (double gm, double t0, double t, double a, double ecc,
50  Vec3& r1, Vec3& v1); // hyperbolic state vector
51 void parab (double gm, double t0, double t, double q, double ecc,
52  Vec3& r1, Vec3& v1); // elliptic state vector
53 void kepler (double gm, double t0, double t, double m0, double a, double ecc,
54  double ran, double aper, double inc, Vec3& r1, Vec3& v1);
55 void oscelm (double gm, double t, Vec3& r1, Vec3& v1,
56  double& t0, double& m0, double& a, double& ecc,
57  double& ran, double& aper, double& inc);
58 
59 Vec3 QuickSun (double t); // low precision position of the Sun at time t
60 
61 class Sun200 // Calculating the Sun in epoch J2000.0 coordinates
62  {
63  public:
64  Sun200();
65  Vec3 position (double t); // position of the Sun
66  void state (double t, Vec3& rs, Vec3& vs); // State vector of the Sun
67 
68  private:
69  double c3[9], s3[9];
70  double c[9], s[9];
71  double m2, m3, m4, m5, m6;
72  double d, a, uu, tt;
73  double cl, sl, cb, sb;
74  double u, v, dl, dr, db;
75  void addthe (double c1, double s1, double c2, double s2,
76  double& cc, double& ss);
77  void term (int i1, int i, int it, double dlc, double dls, double drc,
78  double drs, double dbc, double dbs);
79  void pertven();
80  void pertmar();
81  void pertjup();
82  void pertsat();
83  void pertmoo();
84  };
85 
86 class Moon200 // Calculating the position of the Moon in J2000.0
87  {
88  public:
89  Moon200();
90  Vec3 position (double t); // position of the Moon
91 
92  private:
93  double dgam, dlam, n, gam1c, sinpi;
94  double l0, l, ls, f, d, s;
95  double dl0, dl, dls, df, dd, ds;
96  double co[13][4];
97  double si[13][4];
98  void addthe (double c1, double s1, double c2, double s2,
99  double& c, double& s);
100  double sinus (double phi);
101  void long_periodic (double t);
102  void minit(double t);
103  void term (int p, int q, int r, int s, double& x, double& y);
104  void addsol(double coeffl, double coeffs, double coeffg,
105  double coeffp, int p, int q, int r, int s);
106  void solar1();
107  void solar2();
108  void solar3();
109  void addn (double coeffn, int p, int q, int r, int s,
110  double& n, double&x, double& y);
111  void solarn (double& n);
112  void planetary (double t);
113  };
114 
115 class Eclipse // Eclipse Calculations
116  {
117  public:
118  Eclipse();
119  int solar (double jd, double tdut, double& phi, double& lamda);
120  void maxpos (double jd, double tdut, double& phi, double& lamda);
121  void penumd (double jd, double tdut, Vec3& vrm, Vec3& ves,
122  double& dpn, double& pang);
123  void umbra (double jd, double tdut, Vec3& vrm, Vec3& ves,
124  double& dpn, double& pang);
125  double duration (double jd, double tdut, double& width);
126  Vec3 GetRSun (); // get Earth - Sun vector in Earth radii
127  Vec3 GetRMoon (); // get Earth - Moon vector in Earth radii
128  double GetEp2 (); // get the ep2 value
129  int lunar (double jd, double tdut);
130 
131  private:
132  Sun200 sun;
133  Moon200 moon;
134  Vec3 rs, rm; // position of the Sun and the Moon
135  Vec3 eshadow; // unit vector in direction of shadow
136  Vec3 rint; // intersection shadow axis - Earth surface
137  double t; // time in Julian Centuries
138  double ep2; // correction for Apparent Sideral Time
139  double d_umbra; // diameter of umbra in Earth Radii
140  double d_penumbra; // diameter of penumbra in Earth Radii
141  void equ_sun_moon(double jd, double tdut);
142  };
143 
144 #endif // __astrolib_h sentry.
145 
146 
pmatequ
Mat3 pmatequ(double t1, double t2)
Definition: astrolib.cpp:406
Sun200::state
void state(double t, Vec3 &rs, Vec3 &vs)
Definition: astrolib.cpp:1401
AppPos
void AppPos(double jd, double ep2, double lat, double lng, double ht, int solsys, Vec3 r, double &azim, double &elev, double &dist)
Definition: astrolib.cpp:833
Mat3
Definition: attlib.h:62
Eclipse::duration
double duration(double jd, double tdut, double &width)
Definition: astrolib.cpp:2155
Eclipse::Eclipse
Eclipse()
Definition: astrolib.cpp:1880
ellip
void ellip(double gm, double t0, double t, double a, double ecc, double m0, Vec3 &r1, Vec3 &v1)
Definition: astrolib.cpp:980
Vec3
Definition: attlib.h:26
Moon200
Definition: astrolib.h:86
julcent
double julcent(double mjuld)
Definition: astrolib.cpp:134
Eclipse::GetRMoon
Vec3 GetRMoon()
Definition: astrolib.cpp:2218
kepler
void kepler(double gm, double t0, double t, double m0, double a, double ecc, double ran, double aper, double inc, Vec3 &r1, Vec3 &v1)
Definition: astrolib.cpp:1132
parab
void parab(double gm, double t0, double t, double q, double ecc, Vec3 &r1, Vec3 &v1)
Definition: astrolib.cpp:1062
mjd
double mjd(int day, int month, int year, double hour)
Definition: astrolib.cpp:93
Moon200::position
Vec3 position(double t)
Definition: astrolib.cpp:1592
Sun200::Sun200
Sun200()
Definition: astrolib.cpp:1389
Eclipse::solar
int solar(double jd, double tdut, double &phi, double &lamda)
Definition: astrolib.cpp:1891
QuickSun
Vec3 QuickSun(double t)
Definition: astrolib.cpp:1357
Refract
double Refract(double h, double p=1015.0, double t=15.0)
Definition: astrolib.cpp:891
Eclipse::lunar
int lunar(double jd, double tdut)
Definition: astrolib.cpp:2228
HorEqu
Vec3 HorEqu(double jd, double ep2, double lat, double lng, Vec3 r)
Definition: astrolib.cpp:811
dms
void dms(double dd, int &d, int &m, double &s)
Definition: astrolib.cpp:58
AppRADec
void AppRADec(double jd, double ep2, double lat, double lng, double azim, double elev, double &ra, double &dec)
Definition: astrolib.cpp:865
nutmat
Mat3 nutmat(double t, double &ep2, bool hipr=false)
Definition: astrolib.cpp:435
ddd
double ddd(int d, int m, double s)
Definition: astrolib.cpp:34
attlib.h
Eclipse::maxpos
void maxpos(double jd, double tdut, double &phi, double &lamda)
Definition: astrolib.cpp:1981
Eclipse
Definition: astrolib.h:115
Eclipse::GetRSun
Vec3 GetRSun()
Definition: astrolib.cpp:2213
Sun200
Definition: astrolib.h:61
pmatecl
Mat3 pmatecl(double t1, double t2)
Definition: astrolib.cpp:373
aberrat
Vec3 aberrat(double t, Vec3 &ve)
Definition: astrolib.cpp:693
PoleMx
Mat3 PoleMx(double xp, double yp)
Definition: astrolib.cpp:673
GeoPos
Vec3 GeoPos(double jd, double ep2, double lat, double lng, double ht)
Definition: astrolib.cpp:716
DefTdUt
double DefTdUt(int yr)
Definition: astrolib.cpp:222
eclequ
Vec3 eclequ(double t, Vec3 &r1)
Definition: astrolib.cpp:339
equecl
Vec3 equecl(double t, Vec3 &r1)
Definition: astrolib.cpp:356
eccanom
double eccanom(double man, double ecc)
Definition: astrolib.cpp:913
Eclipse::GetEp2
double GetEp2()
Definition: astrolib.cpp:2223
caldat
void caldat(double mjd, int &day, int &month, int &year, double &hour)
Definition: astrolib.cpp:144
Sun200::position
Vec3 position(double t)
Definition: astrolib.cpp:1392
Eclipse::penumd
void penumd(double jd, double tdut, Vec3 &vrm, Vec3 &ves, double &dpn, double &pang)
Definition: astrolib.cpp:2033
hyperb
void hyperb(double gm, double t0, double t, double a, double ecc, Vec3 &r1, Vec3 &v1)
Definition: astrolib.cpp:1011
EquHor
Vec3 EquHor(double jd, double ep2, double lat, double lng, Vec3 r)
Definition: astrolib.cpp:788
oscelm
void oscelm(double gm, double t, Vec3 &r1, Vec3 &v1, double &t0, double &m0, double &a, double &ecc, double &ran, double &aper, double &inc)
Definition: astrolib.cpp:1218
eps
double eps(double t)
Definition: astrolib.cpp:323
Moon200::Moon200
Moon200()
Definition: astrolib.cpp:1589
hypanom
double hypanom(double mh, double ecc)
Definition: astrolib.cpp:949
Eclipse::umbra
void umbra(double jd, double tdut, Vec3 &vrm, Vec3 &ves, double &dpn, double &pang)
Definition: astrolib.cpp:2079
lsidtim
double lsidtim(double jd, double lambda, double ep2)
Definition: astrolib.cpp:300
nutecl
Mat3 nutecl(double t, double &ep2)
Definition: astrolib.cpp:635
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:38:49 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal