Stellarium 0.15.0
StelCore.hpp
1 /*
2  * Copyright (C) 2003 Fabien Chereau
3  * Copyright (C) 2012 Matthew Gates
4  * Copyright (C) 2015 Georg Zotti (Precession fixes)
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA.
19  */
20 
21 #ifndef _STELCORE_HPP_
22 #define _STELCORE_HPP_
23 
24 #include "StelProjector.hpp"
25 #include "StelProjectorType.hpp"
26 #include "StelLocation.hpp"
27 #include "StelSkyDrawer.hpp"
28 #include <QString>
29 #include <QStringList>
30 #include <QTime>
31 #include <QPair>
32 
33 class StelToneReproducer;
34 class StelSkyDrawer;
35 class StelGeodesicGrid;
36 class StelMovementMgr;
37 class StelObserver;
38 
48 class StelCore : public QObject
49 {
50  Q_OBJECT
51  Q_ENUMS(ProjectionType)
52  Q_ENUMS(DeltaTAlgorithm)
53  Q_PROPERTY(bool flipHorz READ getFlipHorz WRITE setFlipHorz)
54  Q_PROPERTY(bool flipVert READ getFlipVert WRITE setFlipVert)
55  Q_PROPERTY(bool flagUseNutation READ getUseNutation WRITE setUseNutation)
56  Q_PROPERTY(bool flagUseTopocentricCoordinates READ getUseTopocentricCoordinates WRITE setUseTopocentricCoordinates)
57 
58 public:
59 
62  enum FrameType
63  {
70  FrameJ2000,
74  };
75 
79  {
89  };
90 
94  {
98  };
99 
103  {
107  IAU,
135  };
136 
137  StelCore();
138  virtual ~StelCore();
139 
141  void init();
142 
145  void update(double deltaTime);
146 
148  void windowHasBeenResized(float x, float y, float width, float height);
149 
151  void preDraw();
152 
154  void postDraw();
155 
159 
162  StelProjectorP getProjection(FrameType frameType, RefractionMode refractionMode=RefractionAuto) const;
163 
167 
171  const StelToneReproducer* getToneReproducer() const;
172 
176  const StelSkyDrawer* getSkyDrawer() const;
177 
179  const StelGeodesicGrid* getGeodesicGrid(int maxLevel) const;
180 
184  const StelMovementMgr* getMovementMgr() const;
185 
187  void setClippingPlanes(double znear, double zfar);
189  void getClippingPlanes(double* zn, double* zf) const;
190 
192  QString projectionTypeKeyToNameI18n(const QString& key) const;
193 
195  QString projectionNameI18nToTypeKey(const QString& nameI18n) const;
196 
201 
203  void lookAtJ2000(const Vec3d& pos, const Vec3d& up);
204 
205  Vec3d altAzToEquinoxEqu(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
206  Vec3d equinoxEquToAltAz(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
207  Vec3d altAzToJ2000(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
208  Vec3d j2000ToAltAz(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
209  void j2000ToAltAzInPlaceNoRefraction(Vec3f* v) const {v->transfo4d(matJ2000ToAltAz);}
210  Vec3d galacticToJ2000(const Vec3d& v) const;
211  Vec3d equinoxEquToJ2000(const Vec3d& v) const;
212  Vec3d j2000ToEquinoxEqu(const Vec3d& v) const;
213  Vec3d j2000ToGalactic(const Vec3d& v) const;
214 
217 
220 // //! Transform vector from heliocentric coordinate to false equatorial : equatorial
221 // //! coordinate but centered on the observer position (useful for objects close to earth)
222 // //! Unused as of V0.13
223 // Vec3d heliocentricEclipticToEarthPosEquinoxEqu(const Vec3d& v) const;
224 
227 
230 
233 
236 
239 
242 
245 
247  static const Mat4d matJ2000ToVsop87;
249  static const Mat4d matVsop87ToJ2000;
251  static const Mat4d matJ2000ToGalactic;
253  static const Mat4d matGalacticToJ2000;
254 
257 
259  const StelLocation& getCurrentLocation() const;
260 
261  const QSharedPointer<class Planet> getCurrentPlanet() const;
262 
264  const StelObserver* getCurrentObserver() const;
265 
266 
267  SphericalCap getVisibleSkyArea() const;
268 
274  void moveObserverTo(const StelLocation& target, double duration=1., double durationIfPlanetChange=1.);
275 
276  // Conversion in standard Julian time format
277  static const double JD_SECOND;
278  static const double JD_MINUTE;
279  static const double JD_HOUR;
280  static const double JD_DAY;
281  static const double ONE_OVER_JD_SECOND;
282 
285  double getLocalSiderealTime() const;
286 
288  double getLocalSiderealDayLength() const;
289 
291  double getLocalSiderealYearLength() const;
292 
295  QString getStartupTimeMode();
296  void setStartupTimeMode(const QString& s);
297 
302  QString getCurrentDeltaTAlgorithmValidRangeDescription(const double JD, QString* marker) const;
303 
307  bool isBrightDaylight() const;
308 
310  double getCurrentEpoch() const;
311 
313  QString getDefaultProjectionTypeKey(void) const;
314 
315 public slots:
316 
319  ProjectionType getCurrentProjectionType() const;
320 
322  QString getCurrentProjectionTypeKey(void) const;
324  void setCurrentProjectionTypeKey(QString type);
325 
327  QStringList getAllProjectionTypeKeys() const;
328 
330  void setCurrentDeltaTAlgorithm(DeltaTAlgorithm algorithm) { currentDeltaTAlgorithm=algorithm; }
332  DeltaTAlgorithm getCurrentDeltaTAlgorithm() const { return currentDeltaTAlgorithm; }
334  QString getCurrentDeltaTAlgorithmDescription(void) const;
336  QString getCurrentDeltaTAlgorithmKey(void) const;
338  void setCurrentDeltaTAlgorithmKey(QString type);
339 
342 
345  void setFlagGravityLabels(bool gravity);
347  void setDefaultAngleForGravityText(float a);
350  void setFlipHorz(bool flip);
353  void setFlipVert(bool flip);
356  bool getFlipHorz(void) const;
359  bool getFlipVert(void) const;
360 
362  QString getDefaultLocationID() const;
364  void setDefaultLocationID(const QString& id);
368  void returnToHome();
369 
371  void setJD(double newJD);
375  void setJDE(double newJDE);
377  double getJD() const;
381  double getJDE() const;
382 
386  void setMJDay(double MJD);
388  double getMJDay() const;
389 
400  double computeDeltaT(const double JD) const;
402  double getDeltaT() const;
403 
405  bool getUseNutation() const {return flagUseNutation;}
407  void setUseNutation(bool useNutation) { flagUseNutation=useNutation;}
408 
410  bool getUseTopocentricCoordinates() const {return flagUseTopocentricCoordinates;}
412  void setUseTopocentricCoordinates(bool use) { flagUseTopocentricCoordinates=use;}
413 
415  double getPresetSkyTime() const;
417  void setPresetSkyTime(double d);
418 
420  void setTimeRate(double ts);
422  double getTimeRate() const;
423 
425  void increaseTimeSpeed();
427  void decreaseTimeSpeed();
429  void increaseTimeSpeedLess();
431  void decreaseTimeSpeedLess();
432 
434  void setZeroTimeSpeed();
436  void setRealTimeSpeed();
438  void toggleRealTimeSpeed();
440  bool getRealTimeSpeed() const;
441 
443  void setTimeNow();
445  void setTodayTime(const QTime& target);
447  bool getIsTimeNow() const;
448 
450  QTime getInitTodayTime(void);
452  void setInitTodayTime(const QTime& time);
454  void setPresetSkyTime(QDateTime dateTime);
455 
457  void addHour();
459  void addDay();
461  void addWeek();
462 
465  void addSiderealDay();
469  void addSiderealYear();
473  void addSiderealYears(float n=100.f);
474 
476  void subtractHour();
478  void subtractDay();
480  void subtractWeek();
481 
484  void subtractSiderealDay();
488  void subtractSiderealYear();
492  void subtractSiderealYears(float n=100.f);
493 
495  void addSynodicMonth();
496 
498  void addDraconicYear();
500  void addDraconicMonth();
501 
503  void addAnomalisticMonth();
505  void addAnomalisticYear();
507  void addAnomalisticYears(float n=100.f);
508 
510  void addMeanTropicalMonth();
512  void addMeanTropicalYear();
514  void addMeanTropicalYears(float n=100.f);
516  void addTropicalYear();
517 
519  void addJulianYear();
521  void addJulianYears(float n=100.f);
522 
524  void addGaussianYear();
525 
527  void subtractSynodicMonth();
528 
530  void subtractDraconicYear();
532  void subtractDraconicMonth();
533 
539  void subtractAnomalisticYears(float n=100.f);
540 
546  void subtractMeanTropicalYears(float n=100.f);
548  void subtractTropicalYear();
549 
551  void subtractJulianYear();
553  void subtractJulianYears(float n=100.f);
554 
556  void subtractGaussianYear();
557 
560  void addSolarDays(double d);
564  void addSiderealDays(double d);
565 
568  void moveObserverToSelected();
569 
572  void setDeltaTCustomYear(float y) { deltaTCustomYear=y; }
575  void setDeltaTCustomNDot(float v) { deltaTCustomNDot=v; }
578  void setDeltaTCustomEquationCoefficients(Vec3f c) { deltaTCustomEquationCoeff=c; }
579 
581  float getDeltaTCustomYear() const { return deltaTCustomYear; }
583  float getDeltaTCustomNDot() const { return deltaTCustomNDot; }
585  Vec3f getDeltaTCustomEquationCoefficients() const { return deltaTCustomEquationCoeff; }
586 
589 
590  bool de430IsAvailable();
591  bool de431IsAvailable();
592  bool de430IsActive();
593  bool de431IsActive();
594  void setDe430Active(bool status);
595  void setDe431Active(bool status);
596 
597 signals:
601  void timeRateChanged(double rate);
602 
603 private:
604  StelToneReproducer* toneReproducer; // Tones conversion between stellarium world and display device
605  StelSkyDrawer* skyDrawer;
606  StelMovementMgr* movementMgr; // Manage vision movements
607 
608  // Manage geodesic grid
609  mutable StelGeodesicGrid* geodesicGrid;
610 
611  // The currently used projection type
612  ProjectionType currentProjectionType;
613 
614  // The currentrly used time correction (DeltaT)
615  DeltaTAlgorithm currentDeltaTAlgorithm;
616 
617  // Parameters to use when creating new instances of StelProjector
618  StelProjector::StelProjectorParams currentProjectorParams;
619 
620  void updateTransformMatrices();
621  void updateTime(double deltaTime);
622  void resetSync();
623 
624 
625 
626  // Matrices used for every coordinate transfo
627  Mat4d matHeliocentricEclipticJ2000ToAltAz; // Transform from heliocentric ecliptic Cartesian (VSOP87A) to topocentric (StelObserver) altazimuthal coordinate
628  Mat4d matAltAzToHeliocentricEclipticJ2000; // Transform from topocentric (StelObserver) altazimuthal coordinate to heliocentric ecliptic Cartesian (VSOP87A)
629  Mat4d matAltAzToEquinoxEqu; // Transform from topocentric altazimuthal coordinate to Earth Equatorial
630  Mat4d matEquinoxEquToAltAz; // Transform from Earth Equatorial to topocentric (StelObserver) altazimuthal coordinate
631  Mat4d matHeliocentricEclipticToEquinoxEqu; // Transform from heliocentric ecliptic Cartesian (VSOP87A) to earth equatorial coordinate
632  Mat4d matEquinoxEquToJ2000; // For Earth, this is almost the inverse precession matrix, =Rz(VSOPbias)Rx(eps0)Rz(-psiA)Rx(-omA)Rz(chiA)
633  Mat4d matJ2000ToEquinoxEqu; // precession matrix
634 
635  Mat4d matJ2000ToAltAz;
636 
637  Mat4d matAltAzModelView; // Modelview matrix for observer-centric altazimuthal drawing
638  Mat4d invertMatAltAzModelView; // Inverted modelview matrix for observer-centric altazimuthal drawing
639 
640  // Position variables
641  StelObserver* position;
642  // The ID of the default startup location
643  QString defaultLocationID;
644 
645  // flag to indicate we want to use nutation (the small-scale wobble of earth's axis)
646  bool flagUseNutation;
647  // flag to indicate that we show topocentrically corrected coordinates. (Switching to false for planetocentric coordinates is new for 0.14)
648  bool flagUseTopocentricCoordinates;
649 
650  // Time variables
651  double timeSpeed; // Positive : forward, Negative : Backward, 1 = 1sec/sec
652  //double JDay; // Current time in Julian day. IN V0.12 TO V0.14, this was JD in TT, and all places where UT was required had to subtract getDeltaT() explicitly.
653  QPair<double,double> JD; // From 0.14 on: JD.first=JD_UT, JD.second=DeltaT=TT-UT. To gain JD_TT, compute JDE=JD.first+JD.second or better just call getJDE()
654  // Use is best with calls getJD()/setJD() and getJDE()/setJDE() to explicitly state which flavour of JD you need.
655  double presetSkyTime;
656  QTime initTodayTime;
657  QString startupTimeMode;
658  double secondsOfLastJDUpdate; // Time in seconds when the time rate or time last changed
659  double jdOfLastJDUpdate; // JD when the time rate or time last changed
660 
661  // Variables for custom equation of Delta-T
662  Vec3f deltaTCustomEquationCoeff;
663  float deltaTCustomNDot;
664  float deltaTCustomYear;
665 
666  // Variables for DE430/431 ephem calculation
667  bool de430Available; // ephem file found
668  bool de431Available; // ephem file found
669  bool de430Active; // available and user-activated.
670  bool de431Active; // available and user-activated.
671 
672 };
673 
674 #endif // _STELCORE_HPP_
bool de430IsAvailable()
true if DE430 ephemeris file has been found
const StelGeodesicGrid * getGeodesicGrid(int maxLevel) const
Get an instance of StelGeodesicGrid which is garanteed to allow for at least maxLevel levels...
void subtractMeanTropicalYears(float n=100.f)
Subtract n mean tropical years to the simulation time.
Reingold & Dershowitz (2002, 2007) algorithm for DeltaT.
Definition: StelCore.hpp:126
void addAnomalisticYears(float n=100.f)
Add n anomalistic years to the simulation time.
void setTimeRate(double ts)
Set time speed in JDay/sec.
Store the informations for a location on a planet.
void setPresetSkyTime(double d)
Set the preset sky time from a JD.
Stephenson & Morrison (1995) algorithm for DeltaT.
Definition: StelCore.hpp:120
Never add refraction (i.e. geometric coordinates)
Definition: StelCore.hpp:97
StelProjector::ModelViewTranformP getAltAzModelViewTransform(RefractionMode refMode=RefractionAuto) const
Get the modelview matrix for observer-centric altazimuthal drawing.
Always add refraction (i.e. apparent coordinates)
Definition: StelCore.hpp:96
void subtractSiderealYear()
Subtract one sidereal year to the simulation time.
void setCurrentProjectionType(ProjectionType type)
Set the current ProjectionType to use.
void subtractTropicalYear()
Subtract one tropical year to the simulation time.
void timeRateChanged(double rate)
This signal is emitted when the time rate has changed.
void addWeek()
Add one [Earth, solar] week to the current simulation time.
DeltaTAlgorithm getCurrentDeltaTAlgorithm() const
Get the current algorithm for time correction (DeltaT)
Definition: StelCore.hpp:332
Provide a set of methods used to draw sky objects taking into account eyes adaptation, zoom level, instrument model and artificially set magnitude limits.
void addSiderealDay()
Add one sidereal day to the simulation time.
M. Khalid, Mariam Sultana and Faheem Zaidi polinomial approximation of time period 1620-2013 (2014) ...
Definition: StelCore.hpp:133
QStringList getAllProjectionTypeKeys() const
Get the list of all the available projections.
Banjevic (2006) algorithm for DeltaT.
Definition: StelCore.hpp:131
double getLocalSiderealTime() const
Get the sidereal time shifted by the observer longitude.
void returnToDefaultLocation()
Return to the default location.
StelProjectorMaskType
Define viewport mask types.
static const Mat4d matJ2000ToVsop87
Rotation matrix from equatorial J2000 to ecliptic (VSOP87A).
Definition: StelCore.hpp:247
bool de431IsActive()
true if DE431 ephemeris is in use
bool getFlipHorz(void) const
Get the state of the horizontal flip.
void subtractJulianYears(float n=100.f)
Subtract n Julian years to the simulation time.
StelProjector::ModelViewTranformP getGalacticModelViewTransform(RefractionMode refMode=RefractionAuto) const
Get the modelview matrix for observer-centric Galactic equatorial drawing.
Espenak & Meeus (2006) algorithm for DeltaT (Recommended, default)
Definition: StelCore.hpp:129
Vec3f getDeltaTCustomEquationCoefficients() const
Get coefficients for custom equation for calculation of Delta-T.
Definition: StelCore.hpp:585
void decreaseTimeSpeed()
Decrease the time speed.
Fisheye projection.
Definition: StelCore.hpp:83
bool getUseTopocentricCoordinates() const
Definition: StelCore.hpp:410
void subtractDraconicMonth()
Subtract one draconic month to the simulation time.
void update(double deltaTime)
Update all the objects with respect to the time.
void subtractDay()
Subtract one [Earth, solar] day to the current simulation time.
Cylinder projection.
Definition: StelCore.hpp:85
Vec3d getObserverHeliocentricEclipticPos() const
Return the observer heliocentric ecliptic position.
double getMJDay() const
Get the current date in Modified Julian Day (UT)
Astronomical Ephemeris (1960) algorithm for DeltaT.
Definition: StelCore.hpp:108
Equatorial reference frame at the J2000 equinox centered on the observer. This is also the ICRS refer...
Definition: StelCore.hpp:72
void subtractJulianYear()
Subtract one Julian year to the simulation time.
Morrison & Stephenson (2004, 2005) algorithm for DeltaT.
Definition: StelCore.hpp:127
A templatized 3d vector compatible with openGL.
Definition: VecMath.hpp:33
StelProjector::ModelViewTranformP getHeliocentricEclipticModelViewTransform(RefractionMode refMode=RefractionAuto) const
Get the modelview matrix for heliocentric ecliptic (Vsop87) drawing.
void lookAtJ2000(const Vec3d &pos, const Vec3d &up)
Set vision direction.
void subtractAnomalisticYear()
Subtract one anomalistic year to the simulation time.
Reijs (2006) algorithm for DeltaT.
Definition: StelCore.hpp:128
void setFlipVert(bool flip)
Set the vertical flip status.
StelProjector::ModelViewTranformP getObservercentricEclipticOfDateModelViewTransform(RefractionMode refMode=RefractionAuto) const
Get the modelview matrix for observer-centric ecliptic of Date drawing.
Stereograhic projection.
Definition: StelCore.hpp:82
A SphericalCap is defined by a direction and an aperture.
IAU (1952) algorithm for DeltaT (based on observations by Spencer Jones (1939))
Definition: StelCore.hpp:107
static const Mat4d matVsop87ToJ2000
Rotation matrix from ecliptic (VSOP87A) to equatorial J2000.
Definition: StelCore.hpp:249
QString getCurrentDeltaTAlgorithmDescription(void) const
Get description of the current algorithm for time correction.
void setDe430Active(bool status)
switch DE430 use to
Stephenson (1978) algorithm for DeltaT.
Definition: StelCore.hpp:111
void addDay()
Add one [Earth, solar] day to the current simulation time.
void subtractSiderealYears(float n=100.f)
Subtract n sidereal years to the simulation time.
void setCurrentDeltaTAlgorithmKey(QString type)
Set the current algorithm to use from its key.
bool getUseNutation() const
Definition: StelCore.hpp:405
void setCurrentDeltaTAlgorithm(DeltaTAlgorithm algorithm)
Set the current algorithm for time correction (DeltaT)
Definition: StelCore.hpp:330
void setRealTimeSpeed()
Set real time speed, i.e. 1 sec/sec.
double getLocalSiderealDayLength() const
Get the duration of a sidereal day for the current observer in day.
QString projectionNameI18nToTypeKey(const QString &nameI18n) const
Get the projection TypeKey from its translated name for the current locale.
Moving ecliptic reference frame centered on the Observer. GZ new for V0.14: Ecliptic of date...
Definition: StelCore.hpp:68
Main class for Stellarium core processing.
Definition: StelCore.hpp:48
double getJD() const
Get the current date in Julian Day (UT).
void addGaussianYear()
Add one Gaussian year to the simulation time.
QString getStartupTimeMode()
Return the startup mode, can be "actual" (i.e.
void addSynodicMonth()
Add one synodic month to the simulation time.
Reference frame is not set (FMajerech: Added to avoid condition on uninitialized value in StelSkyLaye...
Definition: StelCore.hpp:64
void setCurrentStelProjectorParams(const StelProjector::StelProjectorParams &newParams)
Set the set of parameters to use when creating a new StelProjector.
Chapront-Touzé & Chapront (1991) algorithm for DeltaT.
Definition: StelCore.hpp:119
Grid of triangles (zones) on the sphere with radius 1, generated by subdividing the icosahedron...
void addHour()
Add one [Earth, solar] hour to the current simulation time.
float getDeltaTCustomNDot() const
Get n-dot for custom equation for calculation of Delta-T.
Definition: StelCore.hpp:583
QString getCurrentDeltaTAlgorithmValidRangeDescription(const double JD, QString *marker) const
Get info about valid range for current algorithm for calculation of Delta-T.
Schmadel & Zech (1979) algorithm for DeltaT.
Definition: StelCore.hpp:112
DeltaTAlgorithm
Available DeltaT algorithms.
Definition: StelCore.hpp:102
StelSkyDrawer * getSkyDrawer()
Get the current StelSkyDrawer used in the core.
Stephenson (1997) algorithm for DeltaT.
Definition: StelCore.hpp:121
const StelLocation & getCurrentLocation() const
Get the informations on the current location.
Borkowski (1988) algorithm for DeltaT.
Definition: StelCore.hpp:117
void addJulianYears(float n=100.f)
Add n Julian years to the simulation time.
Montenbruck & Pfleger (2000) algorithm for DeltaT.
Definition: StelCore.hpp:125
bool de431IsAvailable()
true if DE431 ephemeris file has been found
void addTropicalYear()
Add one tropical year to the simulation time.
void addAnomalisticYear()
Add one anomalistic year to the simulation time.
bool de430IsActive()
true if DE430 ephemeris is in use
void subtractGaussianYear()
Subtract one Gaussian year to the simulation time.
void init()
Init and load all main core components.
Espenak (1987, 1989) algorithm for DeltaT.
Definition: StelCore.hpp:116
QSharedPointer< StelProjector > StelProjectorP
Shared pointer on a StelProjector instance (implement reference counting)
void setFlagGravityLabels(bool gravity)
Set the flag with decides whether to arrage labels so that they are aligned with the bottom of a 2d s...
Islam, Sadiq & Qureshi (2008 + revisited 2013) algorithm for DeltaT (6 polynomials) ...
Definition: StelCore.hpp:132
void subtractSynodicMonth()
Subtract one synodic month to the simulation time.
QString getCurrentDeltaTAlgorithmKey(void) const
Get the current algorithm used by the DeltaT.
double getDeltaT() const
Get current DeltaT.
Vec3d heliocentricEclipticToEquinoxEqu(const Vec3d &v) const
Transform from heliocentric coordinate to equatorial at current equinox (for the planet where the obs...
void setJDE(double newJDE)
Set the current date in Julian Day (TT).
Manages the head movements and zoom operations.
Converts tones in function of the eye adaptation to luminance.
void addMeanTropicalYears(float n=100.f)
Add n mean tropical years to the simulation time.
void addJulianYear()
Add one Julian year to the simulation time.
void getClippingPlanes(double *zn, double *zf) const
Get the near and far clipping planes.
FrameType
Supported reference frame types.
Definition: StelCore.hpp:62
void addSiderealYear()
Add one sidereal year to the simulation time.
Equatorial reference frame at the current equinox centered on the observer.
Definition: StelCore.hpp:69
double computeDeltaT(const double JD) const
Compute Delta-T estimation for a given date.
double getJDE() const
Get the current date in Julian Day (TT).
void decreaseTimeSpeedLess()
Decrease the time speed but not as much as with decreaseTimeSpeed()
float getDeltaTCustomYear() const
Get central year for custom equation for calculation of Delta-T.
Definition: StelCore.hpp:581
void setJD(double newJD)
Set the current date in Julian Day (UT)
Mercator projection.
Definition: StelCore.hpp:86
void addDraconicYear()
Add one draconic year to the simulation time.
void toggleRealTimeSpeed()
Set real time speed or pause simulation if we are already in realtime speed.
void addSiderealYears(float n=100.f)
Add n sidereal years to the simulation time.
StelProjector::StelProjectorParams getCurrentStelProjectorParams() const
Get the current set of parameters to use when creating a new StelProjector.
void addMeanTropicalYear()
Add one mean tropical year to the simulation time.
Hammer-Aitoff projection.
Definition: StelCore.hpp:84
void setDe431Active(bool status)
switch DE431 use to
void setTodayTime(const QTime &target)
Set the time to some value, leaving the day the same.
Should be renamed as PlanetBasedObserver and derive from a more generical StelObserver class...
bool getFlipVert(void) const
Get the state of the vertical flip.
ProjectionType
Available projection types.
Definition: StelCore.hpp:78
void returnToHome()
Return to the default location and set default landscape with atmosphere and fog effects.
void subtractWeek()
Subtract one [Earth, solar] week to the current simulation time.
void moveObserverToSelected()
Move the observer to the selected object.
const StelObserver * getCurrentObserver() const
Unfortunately we also need this.
double getPresetSkyTime() const
Return the preset sky time in JD.
StelProjector::ModelViewTranformP getJ2000ModelViewTransform(RefractionMode refMode=RefractionAuto) const
Get the modelview matrix for observer-centric J2000 equatorial drawing.
void setFlipHorz(bool flip)
Set the horizontal flip status.
Perspective projection.
Definition: StelCore.hpp:80
void setMaskType(StelProjector::StelProjectorMaskType m)
Set the mask type.
Morrison & Stephenson (1982) algorithm for DeltaT (used by RedShift)
Definition: StelCore.hpp:113
void addSiderealDays(double d)
Add a number of sidereal days to the current simulation time, based on the observer body's rotational...
void setZeroTimeSpeed()
Set time speed to 0, i.e. freeze the passage of simulation time.
double getLocalSiderealYearLength() const
Get the duration of a sidereal year for the current observer in days.
void setDefaultAngleForGravityText(float a)
Set the offset rotation angle in degree to apply to gravity text (only if gravityLabels is set to fal...
bool getIsTimeNow() const
Get whether the current stellarium time is the real world time.
Without correction, DeltaT is Zero. Like Stellarium versions before 0.12.
Definition: StelCore.hpp:104
static const Mat4d matJ2000ToGalactic
Rotation matrix from J2000 to Galactic reference frame, using FITS convention.
Definition: StelCore.hpp:251
Stephenson & Houlden (1986) algorithm for DeltaT.
Definition: StelCore.hpp:115
void setTimeNow()
Set stellarium time to current real world time.
void addAnomalisticMonth()
Add one anomalistic month to the simulation time.
Tuckerman (1962, 1964) & Goldstine (1973) algorithm for DeltaT.
Definition: StelCore.hpp:109
void subtractAnomalisticMonth()
Subtract one anomalistic month to the simulation time.
void setDeltaTCustomEquationCoefficients(Vec3f c)
Set coefficients for custom equation for calculation of Delta-T.
Definition: StelCore.hpp:578
void setInitTodayTime(const QTime &time)
set the initial "today time" from the config file
Muller & Stephenson (1975) algorithm for DeltaT.
Definition: StelCore.hpp:110
Fixed-ecliptic reference frame centered on the Observer. GZ: was ObservercentricEcliptic, but renamed because it is Ecliptic of J2000!
Definition: StelCore.hpp:67
void subtractMeanTropicalYear()
Subtract one mean tropical year to the simulation time.
QSharedPointer< ModelViewTranform > ModelViewTranformP
Shared pointer on a ModelViewTranform instance (implement reference counting)
QTime getInitTodayTime(void)
get the initial "today time" from the config file
QString getDefaultProjectionTypeKey(void) const
Get the default Mapping used by the Projection.
StelProjector::ModelViewTranformP getObservercentricEclipticJ2000ModelViewTransform(RefractionMode refMode=RefractionAuto) const
Get the modelview matrix for observer-centric ecliptic (Vsop87) drawing.
void addDraconicMonth()
Add one draconic month to the simulation time.
void subtractAnomalisticYears(float n=100.f)
Subtract n anomalistic years to the simulation time.
Vec3d heliocentricEclipticToAltAz(const Vec3d &v, RefractionMode refMode=RefractionAuto) const
Transform vector from heliocentric ecliptic coordinate to altazimuthal.
StelProjectorP getProjection(FrameType frameType, RefractionMode refractionMode=RefractionAuto) const
Get a new instance of projector using a modelview transformation corresponding to the given frame...
StelToneReproducer * getToneReproducer()
Get the current tone reproducer used in the core.
Galactic reference frame centered on observer.
Definition: StelCore.hpp:73
void subtractDraconicYear()
Subtract one draconic year to the simulation time.
void setDeltaTCustomYear(float y)
Set central year for custom equation for calculation of Delta-T.
Definition: StelCore.hpp:572
void initEphemeridesFunctions()
initialize ephemerides calculation functions
double getTimeRate() const
Get time speed in JDay/sec.
Automatically decide to add refraction if atmosphere is activated.
Definition: StelCore.hpp:95
void subtractMeanTropicalMonth()
Subtract one mean tropical month to the simulation time.
Meeus & Simons (2000) algorithm for DeltaT.
Definition: StelCore.hpp:124
QString projectionTypeKeyToNameI18n(const QString &key) const
Get the translated projection name from its TypeKey for the current locale.
void setClippingPlanes(double znear, double zfar)
Set the near and far clipping planes.
bool isBrightDaylight() const
Checks for altitude of the Sun - is it night or day?
Define the StelProjectorP type.
void setUseTopocentricCoordinates(bool use)
Set whether you want computation and simulation of nutation (a slight wobble of Earth's axis...
Definition: StelCore.hpp:412
Contains all the param needed to initialize a StelProjector.
Stephenson & Morrison (1984) algorithm for DeltaT.
Definition: StelCore.hpp:114
QString getCurrentProjectionTypeKey(void) const
Get the current Mapping used by the Projection.
Clemence (1948) algorithm for DeltaT.
Definition: StelCore.hpp:106
void addMeanTropicalMonth()
Add one mean tropical month to the simulation time.
Fixed-ecliptic reference frame centered on the Sun. GZ: This is J2000 ecliptical / almost VSOP87...
Definition: StelCore.hpp:66
Schoch (1931) algorithm for DeltaT.
Definition: StelCore.hpp:105
Altazimuthal reference frame centered on observer.
Definition: StelCore.hpp:65
void postDraw()
Update core state after drawing modules.
void increaseTimeSpeed()
Increase the time speed.
Sinusoidal projection.
Definition: StelCore.hpp:88
Schmadel & Zech (1988) algorithm for DeltaT.
Definition: StelCore.hpp:118
void preDraw()
Update core state before drawing modules.
JPL Horizons algorithm for DeltaT.
Definition: StelCore.hpp:123
void addSolarDays(double d)
Add a number of Earth Solar days to the current simulation time.
Espenak & Meeus (2006) algorithm for DeltaT (but without additional Lunar acceleration. FOR TESTING ONLY, NONPUBLIC)
Definition: StelCore.hpp:130
void setCurrentProjectionTypeKey(QString type)
Set the current ProjectionType to use from its key.
void setDefaultLocationID(const QString &id)
Set the location to use by default at startup.
void setMJDay(double MJD)
Set the current date in Modified Julian Day (UT).
Equal Area projection.
Definition: StelCore.hpp:81
void setDeltaTCustomNDot(float v)
Set n-dot for custom equation for calculation of Delta-T.
Definition: StelCore.hpp:575
void increaseTimeSpeedLess()
Increase the time speed, but not as much as with increaseTimeSpeed()
StelMovementMgr * getMovementMgr()
Get the instance of movement manager.
RefractionMode
Available refraction mode.
Definition: StelCore.hpp:93
static const Mat4d matGalacticToJ2000
Rotation matrix from J2000 to Galactic reference frame, using FITS convention.
Definition: StelCore.hpp:253
void subtractSiderealDay()
Subtract one sidereal day to the simulation time.
void moveObserverTo(const StelLocation &target, double duration=1., double durationIfPlanetChange=1.)
Smoothly move the observer to the given location.
void setUseNutation(bool useNutation)
Set whether you want computation and simulation of nutation (a slight wobble of Earth's axis...
Definition: StelCore.hpp:407
Orthographic projection.
Definition: StelCore.hpp:87
void locationChanged(StelLocation)
This signal is emitted when the observer location has changed.
void subtractHour()
Subtract one [Earth, solar] hour to the current simulation time.
void windowHasBeenResized(float x, float y, float width, float height)
Handle the resizing of the window.
Chapront, Chapront-Touze & Francou (1997) & Meeus (1998) algorithm for DeltaT.
Definition: StelCore.hpp:122
bool getRealTimeSpeed() const
Get whether it is real time speed, i.e. 1 sec/sec.
User defined coefficients for quadratic equation for DeltaT.
Definition: StelCore.hpp:134
StelProjectorP getProjection2d() const
Get a new instance of a simple 2d projection.
StelProjector::ModelViewTranformP getEquinoxEquModelViewTransform(RefractionMode refMode=RefractionAuto) const
Get the modelview matrix for observer-centric equatorial at equinox drawing.
QString getDefaultLocationID() const
Get the location used by default at startup.
double getCurrentEpoch() const
Get value of the current Julian epoch (i.e. current year with decimal fraction, e.g. 2012.34567)