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(FrameType)
52  Q_ENUMS(ProjectionType)
53  Q_ENUMS(RefractionMode)
54  Q_ENUMS(DeltaTAlgorithm)
55  Q_PROPERTY(bool flipHorz READ getFlipHorz WRITE setFlipHorz NOTIFY flipHorzChanged)
56  Q_PROPERTY(bool flipVert READ getFlipVert WRITE setFlipVert NOTIFY flipVertChanged)
57  Q_PROPERTY(bool flagUseNutation READ getUseNutation WRITE setUseNutation NOTIFY flagUseNutationChanged)
58  Q_PROPERTY(bool flagUseTopocentricCoordinates READ getUseTopocentricCoordinates WRITE setUseTopocentricCoordinates NOTIFY flagUseTopocentricCoordinatesChanged)
59  Q_PROPERTY(ProjectionType currentProjectionType READ getCurrentProjectionType WRITE setCurrentProjectionType NOTIFY currentProjectionTypeChanged)
61  Q_PROPERTY(QString currentProjectionTypeKey READ getCurrentProjectionTypeKey WRITE setCurrentProjectionTypeKey NOTIFY currentProjectionTypeKeyChanged STORED false)
62 
63 public:
64 
67  enum FrameType
68  {
75  FrameJ2000,
79  };
80 
84  {
95  };
96 
100  {
104  };
105 
109  {
113  IAU,
141  };
142 
143  StelCore();
144  virtual ~StelCore();
145 
147  void init();
148 
151  void update(double deltaTime);
152 
154  void windowHasBeenResized(float x, float y, float width, float height);
155 
157  void preDraw();
158 
160  void postDraw();
161 
165 
168  StelProjectorP getProjection(FrameType frameType, RefractionMode refractionMode=RefractionAuto) const;
169 
173 
177  const StelToneReproducer* getToneReproducer() const;
178 
182  const StelSkyDrawer* getSkyDrawer() const;
183 
185  const StelGeodesicGrid* getGeodesicGrid(int maxLevel) const;
186 
190  const StelMovementMgr* getMovementMgr() const;
191 
193  void setClippingPlanes(double znear, double zfar);
195  void getClippingPlanes(double* zn, double* zf) const;
196 
198  QString projectionTypeKeyToNameI18n(const QString& key) const;
199 
201  QString projectionNameI18nToTypeKey(const QString& nameI18n) const;
202 
207 
209  void lookAtJ2000(const Vec3d& pos, const Vec3d& up);
210 
211  Vec3d altAzToEquinoxEqu(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
212  Vec3d equinoxEquToAltAz(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
213  Vec3d altAzToJ2000(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
214  Vec3d j2000ToAltAz(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
215  void j2000ToAltAzInPlaceNoRefraction(Vec3f* v) const {v->transfo4d(matJ2000ToAltAz);}
216  Vec3d galacticToJ2000(const Vec3d& v) const;
217  Vec3d equinoxEquToJ2000(const Vec3d& v) const;
218  Vec3d j2000ToEquinoxEqu(const Vec3d& v) const;
219  Vec3d j2000ToGalactic(const Vec3d& v) const;
220 
223 
226 // //! Transform vector from heliocentric coordinate to false equatorial : equatorial
227 // //! coordinate but centered on the observer position (useful for objects close to earth)
228 // //! Unused as of V0.13
229 // Vec3d heliocentricEclipticToEarthPosEquinoxEqu(const Vec3d& v) const;
230 
233 
236 
239 
242 
245 
248 
251 
253  static const Mat4d matJ2000ToVsop87;
255  static const Mat4d matVsop87ToJ2000;
257  static const Mat4d matJ2000ToGalactic;
259  static const Mat4d matGalacticToJ2000;
260 
263 
265  const StelLocation& getCurrentLocation() const;
266 
267  const QSharedPointer<class Planet> getCurrentPlanet() const;
268 
272  const StelObserver* getCurrentObserver() const;
273 
275  void setObserver(StelObserver* obs);
276 
277  SphericalCap getVisibleSkyArea() const;
278 
279  // Conversion in standard Julian time format
280  static const double JD_SECOND;
281  static const double JD_MINUTE;
282  static const double JD_HOUR;
283  static const double JD_DAY;
284  static const double ONE_OVER_JD_SECOND;
285 
288  double getLocalSiderealTime() const;
289 
291  double getLocalSiderealDayLength() const;
292 
294  double getLocalSiderealYearLength() const;
295 
298  QString getStartupTimeMode();
299  void setStartupTimeMode(const QString& s);
300 
305  QString getCurrentDeltaTAlgorithmValidRangeDescription(const double JD, QString* marker) const;
306 
310  bool isBrightDaylight() const;
311 
313  double getCurrentEpoch() const;
314 
316  QString getDefaultProjectionTypeKey(void) const;
317 
318 public slots:
324  void moveObserverTo(const StelLocation& target, double duration=1., double durationIfPlanetChange=1.);
325 
328  ProjectionType getCurrentProjectionType() const;
329 
331  QString getCurrentProjectionTypeKey(void) const;
333  void setCurrentProjectionTypeKey(QString type);
334 
336  QStringList getAllProjectionTypeKeys() const;
337 
339  void setCurrentDeltaTAlgorithm(DeltaTAlgorithm algorithm) { currentDeltaTAlgorithm=algorithm; }
341  DeltaTAlgorithm getCurrentDeltaTAlgorithm() const { return currentDeltaTAlgorithm; }
343  QString getCurrentDeltaTAlgorithmDescription(void) const;
345  QString getCurrentDeltaTAlgorithmKey(void) const;
347  void setCurrentDeltaTAlgorithmKey(QString type);
348 
351 
354  void setFlagGravityLabels(bool gravity);
356  void setDefaultAngleForGravityText(float a);
359  void setFlipHorz(bool flip);
362  void setFlipVert(bool flip);
365  bool getFlipHorz(void) const;
368  bool getFlipVert(void) const;
369 
370  //New for 0.15: Vertical offset should even be available for animation, so at last with property mechanism.
373  double getViewportHorizontalOffset(void);
377  void setViewportHorizontalOffset(double newOffsetPct);
380  double getViewportVerticalOffset(void);
385  void setViewportVerticalOffset(double newOffsetPct);
386 
390  void setViewportStretch(float stretch);
391 
393  QString getDefaultLocationID() const;
395  void setDefaultLocationID(const QString& id);
399  void returnToHome();
400 
402  double getJDOfLastJDUpdate() const;
406  void setMilliSecondsOfLastJDUpdate(qint64 millis);
408  qint64 getMilliSecondsOfLastJDUpdate() const;
409 
411  void setJD(double newJD);
415  void setJDE(double newJDE);
417  double getJD() const;
421  double getJDE() const;
422 
423 
427  void setMJDay(double MJD);
429  double getMJDay() const;
430 
441  double computeDeltaT(const double JD) const;
443  double getDeltaT() const;
444 
446  bool getUseNutation() const {return flagUseNutation;}
448  void setUseNutation(bool use) { if (flagUseNutation != use) { flagUseNutation=use; emit flagUseNutationChanged(use); }}
449 
451  bool getUseTopocentricCoordinates() const {return flagUseTopocentricCoordinates;}
453  void setUseTopocentricCoordinates(bool use) { if (flagUseTopocentricCoordinates!= use) { flagUseTopocentricCoordinates=use; emit flagUseTopocentricCoordinatesChanged(use); }}
454 
456  double getPresetSkyTime() const;
458  void setPresetSkyTime(double d);
459 
461  void setTimeRate(double ts);
463  double getTimeRate() const;
464 
466  void increaseTimeSpeed();
468  void decreaseTimeSpeed();
470  void increaseTimeSpeedLess();
472  void decreaseTimeSpeedLess();
473 
475  void setZeroTimeSpeed();
477  void setRealTimeSpeed();
479  void toggleRealTimeSpeed();
481  bool getRealTimeSpeed() const;
482 
484  void setTimeNow();
486  void setTodayTime(const QTime& target);
488  bool getIsTimeNow() const;
489 
491  QTime getInitTodayTime(void);
493  void setInitTodayTime(const QTime& time);
495  void setPresetSkyTime(QDateTime dateTime);
496 
498  void addHour();
500  void addDay();
502  void addWeek();
503 
506  void addSiderealDay();
510  void addSiderealYear();
514  void addSiderealYears(float n=100.f);
515 
517  void subtractHour();
519  void subtractDay();
521  void subtractWeek();
522 
525  void subtractSiderealDay();
529  void subtractSiderealYear();
533  void subtractSiderealYears(float n=100.f);
534 
536  void addSynodicMonth();
537 
539  void addDraconicYear();
541  void addDraconicMonth();
542 
544  void addAnomalisticMonth();
546  void addAnomalisticYear();
548  void addAnomalisticYears(float n=100.f);
549 
551  void addMeanTropicalMonth();
553  void addMeanTropicalYear();
555  void addMeanTropicalYears(float n=100.f);
557  void addTropicalYear();
558 
560  void addJulianYear();
562  void addJulianYears(float n=100.f);
563 
566  void addGaussianYear();
567 
569  void subtractSynodicMonth();
570 
572  void subtractDraconicYear();
574  void subtractDraconicMonth();
575 
581  void subtractAnomalisticYears(float n=100.f);
582 
588  void subtractMeanTropicalYears(float n=100.f);
590  void subtractTropicalYear();
591 
593  void subtractJulianYear();
595  void subtractJulianYears(float n=100.f);
596 
598  void subtractGaussianYear();
599 
602  void addSolarDays(double d);
606  void addSiderealDays(double d);
607 
610  void moveObserverToSelected();
611 
614  void setDeltaTCustomYear(float y) { deltaTCustomYear=y; }
617  void setDeltaTCustomNDot(float v) { deltaTCustomNDot=v; }
620  void setDeltaTCustomEquationCoefficients(Vec3f c) { deltaTCustomEquationCoeff=c; }
621 
623  float getDeltaTCustomYear() const { return deltaTCustomYear; }
625  float getDeltaTCustomNDot() const { return deltaTCustomNDot; }
627  Vec3f getDeltaTCustomEquationCoefficients() const { return deltaTCustomEquationCoeff; }
628 
631 
632  bool de430IsAvailable();
633  bool de431IsAvailable();
634  bool de430IsActive();
635  bool de431IsActive();
636  void setDe430Active(bool status);
637  void setDe431Active(bool status);
638 
639 signals:
643  void timeRateChanged(double rate);
647  void timeSyncOccurred(double jDay);
649  void flipHorzChanged(bool b);
651  void flipVertChanged(bool b);
653  void flagUseNutationChanged(bool b);
659  void currentProjectionTypeKeyChanged(const QString& newValue);
660 
661 private:
662  StelToneReproducer* toneReproducer; // Tones conversion between stellarium world and display device
663  StelSkyDrawer* skyDrawer;
664  StelMovementMgr* movementMgr; // Manage vision movements
665 
666  // Manage geodesic grid
667  mutable StelGeodesicGrid* geodesicGrid;
668 
669  // The currently used projection type
670  ProjectionType currentProjectionType;
671 
672  // The currentrly used time correction (DeltaT)
673  DeltaTAlgorithm currentDeltaTAlgorithm;
674 
675  // Parameters to use when creating new instances of StelProjector
676  StelProjector::StelProjectorParams currentProjectorParams;
677 
678  void updateTransformMatrices();
679  void updateTime(double deltaTime);
680  void updateMaximumFov();
681  void resetSync();
682 
683  void registerMathMetaTypes();
684 
685 
686  // Matrices used for every coordinate transfo
687  Mat4d matHeliocentricEclipticJ2000ToAltAz; // Transform from heliocentric ecliptic Cartesian (VSOP87A) to topocentric (StelObserver) altazimuthal coordinate
688  Mat4d matAltAzToHeliocentricEclipticJ2000; // Transform from topocentric (StelObserver) altazimuthal coordinate to heliocentric ecliptic Cartesian (VSOP87A)
689  Mat4d matAltAzToEquinoxEqu; // Transform from topocentric altazimuthal coordinate to Earth Equatorial
690  Mat4d matEquinoxEquToAltAz; // Transform from Earth Equatorial to topocentric (StelObserver) altazimuthal coordinate
691  Mat4d matHeliocentricEclipticToEquinoxEqu; // Transform from heliocentric ecliptic Cartesian (VSOP87A) to earth equatorial coordinate
692  Mat4d matEquinoxEquToJ2000; // For Earth, this is almost the inverse precession matrix, =Rz(VSOPbias)Rx(eps0)Rz(-psiA)Rx(-omA)Rz(chiA)
693  Mat4d matJ2000ToEquinoxEqu; // precession matrix
694 
695  Mat4d matJ2000ToAltAz;
696 
697  Mat4d matAltAzModelView; // Modelview matrix for observer-centric altazimuthal drawing
698  Mat4d invertMatAltAzModelView; // Inverted modelview matrix for observer-centric altazimuthal drawing
699 
700  // Position variables
701  StelObserver* position;
702  // The ID of the default startup location
703  QString defaultLocationID;
704 
705  // flag to indicate we want to use nutation (the small-scale wobble of earth's axis)
706  bool flagUseNutation;
707  // flag to indicate that we show topocentrically corrected coordinates. (Switching to false for planetocentric coordinates is new for 0.14)
708  bool flagUseTopocentricCoordinates;
709 
710  // Time variables
711  double timeSpeed; // Positive : forward, Negative : Backward, 1 = 1sec/sec
712  //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.
713  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()
714  // Use is best with calls getJD()/setJD() and getJDE()/setJDE() to explicitly state which flavour of JD you need.
715  double presetSkyTime;
716  QTime initTodayTime;
717  QString startupTimeMode;
718  double milliSecondsOfLastJDUpdate; // Time in seconds when the time rate or time last changed
719  double jdOfLastJDUpdate; // JD when the time rate or time last changed
720 
721  // Variables for custom equation of Delta-T
722  Vec3f deltaTCustomEquationCoeff;
723  float deltaTCustomNDot;
724  float deltaTCustomYear;
725 
726  // Variables for DE430/431 ephem calculation
727  bool de430Available; // ephem file found
728  bool de431Available; // ephem file found
729  bool de430Active; // available and user-activated.
730  bool de431Active; // available and user-activated.
731 };
732 
733 #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:132
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:126
Never add refraction (i.e. geometric coordinates)
Definition: StelCore.hpp:103
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:102
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:341
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:139
QStringList getAllProjectionTypeKeys() const
Get the list of all the available projections.
Banjevic (2006) algorithm for DeltaT.
Definition: StelCore.hpp:137
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:253
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:135
Vec3f getDeltaTCustomEquationCoefficients() const
Get coefficients for custom equation for calculation of Delta-T.
Definition: StelCore.hpp:627
void decreaseTimeSpeed()
Decrease the time speed.
Fisheye projection.
Definition: StelCore.hpp:87
Miller cylindrical projection.
Definition: StelCore.hpp:93
bool getUseTopocentricCoordinates() const
Definition: StelCore.hpp:451
void setObserver(StelObserver *obs)
Replaces the current observer. StelCore assumes ownership of the observer.
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:94
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:114
Equatorial reference frame at the J2000 equinox centered on the observer. This is also the ICRS refer...
Definition: StelCore.hpp:77
void subtractJulianYear()
Subtract one Julian year to the simulation time.
Morrison & Stephenson (2004, 2005) algorithm for DeltaT.
Definition: StelCore.hpp:133
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:134
void currentProjectionTypeChanged(StelCore::ProjectionType newType)
Emitted whenever the projection type changes.
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.
Stereographic projection.
Definition: StelCore.hpp:86
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:113
static const Mat4d matVsop87ToJ2000
Rotation matrix from ecliptic (VSOP87A) to equatorial J2000.
Definition: StelCore.hpp:255
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:117
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 currentProjectionTypeKeyChanged(const QString &newValue)
Emitted whenever the projection type changes.
void setCurrentDeltaTAlgorithmKey(QString type)
Set the current algorithm to use from its key.
bool getUseNutation() const
Definition: StelCore.hpp:446
void setCurrentDeltaTAlgorithm(DeltaTAlgorithm algorithm)
Set the current algorithm for time correction (DeltaT)
Definition: StelCore.hpp:339
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:73
Main class for Stellarium core processing.
Definition: StelCore.hpp:48
double getJD() const
Get the current date in Julian Day (UT).
void flagUseNutationChanged(bool b)
This signal indicates a switch in use of nutation.
void addGaussianYear()
Add one Gaussian year to the simulation time.
void setViewportStretch(float stretch)
Can be used in specialized setups, intended e.g.
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:69
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:125
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:625
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:118
DeltaTAlgorithm
Available DeltaT algorithms.
Definition: StelCore.hpp:108
StelSkyDrawer * getSkyDrawer()
Get the current StelSkyDrawer used in the core.
Stephenson (1997) algorithm for DeltaT.
Definition: StelCore.hpp:127
const StelLocation & getCurrentLocation() const
Get the informations on the current location.
qint64 getMilliSecondsOfLastJDUpdate() const
Returns the system date of the last time resetSync() was called.
Borkowski (1988) algorithm for DeltaT.
Definition: StelCore.hpp:123
void addJulianYears(float n=100.f)
Add n Julian years to the simulation time.
Montenbruck & Pfleger (2000) algorithm for DeltaT.
Definition: StelCore.hpp:131
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 setMilliSecondsOfLastJDUpdate(qint64 millis)
Sets the system date which corresponds to the jdOfLastJDUpdate.
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:122
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:138
void subtractSynodicMonth()
Subtract one synodic month to the simulation time.
QString getCurrentDeltaTAlgorithmKey(void) const
Get the current algorithm used by the DeltaT.
void setViewportVerticalOffset(double newOffsetPct)
Set vertical viewport offset.
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 setViewportHorizontalOffset(double newOffsetPct)
Set horizontal viewport offset.
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:67
void flagUseTopocentricCoordinatesChanged(bool b)
This signal indicates a switch in use of topocentric coordinates.
void flipVertChanged(bool b)
This signal indicates a vertical display flip.
void addSiderealYear()
Add one sidereal year to the simulation time.
Equatorial reference frame at the current equinox centered on the observer.
Definition: StelCore.hpp:74
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:623
void setJD(double newJD)
Set the current date in Julian Day (UT)
double getJDOfLastJDUpdate() const
Returns the JD of the last time resetSync() was called.
Mercator projection.
Definition: StelCore.hpp:92
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:90
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:83
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:85
void setMaskType(StelProjector::StelProjectorMaskType m)
Set the mask type.
Morrison & Stephenson (1982) algorithm for DeltaT (used by RedShift)
Definition: StelCore.hpp:119
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:110
double getViewportVerticalOffset(void)
Get current value for vertical viewport offset [-50...50] An offset of 50 percent means projective im...
static const Mat4d matJ2000ToGalactic
Rotation matrix from J2000 to Galactic reference frame, using FITS convention.
Definition: StelCore.hpp:257
Stephenson & Houlden (1986) algorithm for DeltaT.
Definition: StelCore.hpp:121
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:115
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:620
void setInitTodayTime(const QTime &time)
set the initial "today time" from the config file
Muller & Stephenson (1975) algorithm for DeltaT.
Definition: StelCore.hpp:116
Fixed-ecliptic reference frame centered on the Observer. GZ: was ObservercentricEcliptic, but renamed because it is Ecliptic of J2000!
Definition: StelCore.hpp:72
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:78
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:614
void flipHorzChanged(bool b)
This signal indicates a horizontal display flip.
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:101
void subtractMeanTropicalMonth()
Subtract one mean tropical month to the simulation time.
Meeus & Simons (2000) algorithm for DeltaT.
Definition: StelCore.hpp:130
QString projectionTypeKeyToNameI18n(const QString &key) const
Get the translated projection name from its TypeKey for the current locale.
void timeSyncOccurred(double jDay)
This signal is emitted whenever the time is re-synced.
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:453
Contains all the param needed to initialize a StelProjector.
Stephenson & Morrison (1984) algorithm for DeltaT.
Definition: StelCore.hpp:120
QString getCurrentProjectionTypeKey(void) const
Get the current Mapping used by the Projection.
Clemence (1948) algorithm for DeltaT.
Definition: StelCore.hpp:112
void addMeanTropicalMonth()
Add one mean tropical month to the simulation time.
double getViewportHorizontalOffset(void)
Get current value for horizontal viewport offset [-50...50] An offset of 50 percent means projective ...
Fixed-ecliptic reference frame centered on the Sun. GZ: This is J2000 ecliptical / almost VSOP87...
Definition: StelCore.hpp:71
Schoch (1931) algorithm for DeltaT.
Definition: StelCore.hpp:111
Altazimuthal reference frame centered on observer.
Definition: StelCore.hpp:70
void postDraw()
Update core state after drawing modules.
void increaseTimeSpeed()
Increase the time speed.
Sinusoidal projection.
Definition: StelCore.hpp:91
Schmadel & Zech (1988) algorithm for DeltaT.
Definition: StelCore.hpp:124
void preDraw()
Update core state before drawing modules.
JPL Horizons algorithm for DeltaT.
Definition: StelCore.hpp:129
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:136
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:89
void setDeltaTCustomNDot(float v)
Set n-dot for custom equation for calculation of Delta-T.
Definition: StelCore.hpp:617
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:99
static const Mat4d matGalacticToJ2000
Rotation matrix from J2000 to Galactic reference frame, using FITS convention.
Definition: StelCore.hpp:259
void setUseNutation(bool use)
Set whether you want computation and simulation of nutation (a slight wobble of Earth's axis...
Definition: StelCore.hpp:448
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.
Orthographic projection.
Definition: StelCore.hpp:88
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:128
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:140
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)