Stellarium 0.90.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)
63  Q_PROPERTY(QString currentProjectionNameI18n READ getCurrentProjectionNameI18n NOTIFY currentProjectionNameI18nChanged STORED false)
64 
65 public:
66 
69  enum FrameType
70  {
77  FrameJ2000,
82  };
83 
87  {
98  };
99 
103  {
107  };
108 
112  {
116  IAU,
144  };
145 
146  StelCore();
147  virtual ~StelCore();
148 
150  void init();
151 
154  void update(double deltaTime);
155 
157  void windowHasBeenResized(float x, float y, float width, float height);
158 
160  void preDraw();
161 
163  void postDraw();
164 
168 
171  StelProjectorP getProjection(FrameType frameType, RefractionMode refractionMode=RefractionAuto) const;
172 
176 
180  const StelToneReproducer* getToneReproducer() const;
181 
185  const StelSkyDrawer* getSkyDrawer() const;
186 
188  const StelGeodesicGrid* getGeodesicGrid(int maxLevel) const;
189 
193  const StelMovementMgr* getMovementMgr() const;
194 
196  void setClippingPlanes(double znear, double zfar);
198  void getClippingPlanes(double* zn, double* zf) const;
199 
201  QString projectionTypeKeyToNameI18n(const QString& key) const;
202 
204  QString projectionNameI18nToTypeKey(const QString& nameI18n) const;
205 
210 
212  void lookAtJ2000(const Vec3d& pos, const Vec3d& up);
213 
214  Vec3d altAzToEquinoxEqu(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
215  Vec3d equinoxEquToAltAz(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
216  Vec3d altAzToJ2000(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
217  Vec3d j2000ToAltAz(const Vec3d& v, RefractionMode refMode=RefractionAuto) const;
218  void j2000ToAltAzInPlaceNoRefraction(Vec3f* v) const {v->transfo4d(matJ2000ToAltAz);}
219  Vec3d galacticToJ2000(const Vec3d& v) const;
220  Vec3d supergalacticToJ2000(const Vec3d& v) const;
221  Vec3d equinoxEquToJ2000(const Vec3d& v) const;
222  Vec3d j2000ToEquinoxEqu(const Vec3d& v) const;
223  Vec3d j2000ToGalactic(const Vec3d& v) const;
224  Vec3d j2000ToSupergalactic(const Vec3d& v) const;
225 
228 
231 // //! Transform vector from heliocentric coordinate to false equatorial : equatorial
232 // //! coordinate but centered on the observer position (useful for objects close to earth)
233 // //! Unused as of V0.13
234 // Vec3d heliocentricEclipticToEarthPosEquinoxEqu(const Vec3d& v) const;
235 
238 
241 
244 
247 
250 
253 
256 
259 
261  static const Mat4d matJ2000ToVsop87;
263  static const Mat4d matVsop87ToJ2000;
265  static const Mat4d matJ2000ToGalactic;
267  static const Mat4d matGalacticToJ2000;
272 
275 
277  const StelLocation& getCurrentLocation() const;
278 
279  float getUTCOffset(const double JD) const;
280 
281  QString getCurrentTimeZone() const;
282  void setCurrentTimeZone(const QString& tz);
283 
284  const QSharedPointer<class Planet> getCurrentPlanet() const;
285 
289  const StelObserver* getCurrentObserver() const;
290 
292  void setObserver(StelObserver* obs);
293 
294  SphericalCap getVisibleSkyArea() const;
295 
296  // Conversion in standard Julian time format
297  static const double JD_SECOND;
298  static const double JD_MINUTE;
299  static const double JD_HOUR;
300  static const double JD_DAY;
301  static const double ONE_OVER_JD_SECOND;
302  static const double TZ_ERA_BEGINNING;
303 
306  double getLocalSiderealTime() const;
307 
309  double getLocalSiderealDayLength() const;
310 
312  double getLocalSiderealYearLength() const;
313 
316  QString getStartupTimeMode();
317  void setStartupTimeMode(const QString& s);
318 
323  QString getCurrentDeltaTAlgorithmValidRangeDescription(const double JD, QString* marker) const;
324 
328  bool isBrightDaylight() const;
329 
331  double getCurrentEpoch() const;
332 
334  QString getDefaultProjectionTypeKey(void) const;
335 
336 public slots:
342  void moveObserverTo(const StelLocation& target, double duration=1., double durationIfPlanetChange=1.);
343 
346  ProjectionType getCurrentProjectionType() const;
347 
349  QString getCurrentProjectionTypeKey(void) const;
351  void setCurrentProjectionTypeKey(QString type);
352 
353  QString getCurrentProjectionNameI18n() const;
354 
356  QStringList getAllProjectionTypeKeys() const;
357 
359  void setCurrentDeltaTAlgorithm(DeltaTAlgorithm algorithm) { currentDeltaTAlgorithm=algorithm; }
361  DeltaTAlgorithm getCurrentDeltaTAlgorithm() const { return currentDeltaTAlgorithm; }
363  QString getCurrentDeltaTAlgorithmDescription(void) const;
365  QString getCurrentDeltaTAlgorithmKey(void) const;
367  void setCurrentDeltaTAlgorithmKey(QString type);
368 
371 
374  void setFlagGravityLabels(bool gravity);
376  void setDefaultAngleForGravityText(float a);
379  void setFlipHorz(bool flip);
382  void setFlipVert(bool flip);
385  bool getFlipHorz(void) const;
388  bool getFlipVert(void) const;
389 
390  //New for 0.15: Vertical offset should even be available for animation, so at last with property mechanism.
393  double getViewportHorizontalOffset(void);
397  void setViewportHorizontalOffset(double newOffsetPct);
400  double getViewportVerticalOffset(void);
405  void setViewportVerticalOffset(double newOffsetPct);
406  // Set both viewport offsets. Arguments will be clamped to be inside [-50...50]. I (GZ) hope this will avoid some of the shaking.
407  void setViewportOffset(double newHorizontalOffsetPct, double newVerticalOffsetPct);
408 
412  void setViewportStretch(float stretch);
413 
415  QString getDefaultLocationID() const;
417  void setDefaultLocationID(const QString& id);
421  void returnToHome();
422 
424  double getJDOfLastJDUpdate() const;
428  void setMilliSecondsOfLastJDUpdate(qint64 millis);
430  qint64 getMilliSecondsOfLastJDUpdate() const;
431 
433  void setJD(double newJD);
437  void setJDE(double newJDE);
439  double getJD() const;
443  double getJDE() const;
444 
449  double getSolutionEquationOfTime(const double JDE) const;
450 
451  bool getUseDST() const;
452  void setUseDST(const bool b);
453 
457  void setMJDay(double MJD);
459  double getMJDay() const;
460 
471  double computeDeltaT(const double JD) const;
473  double getDeltaT() const;
474 
476  bool getUseNutation() const {return flagUseNutation;}
478  void setUseNutation(bool use) { if (flagUseNutation != use) { flagUseNutation=use; emit flagUseNutationChanged(use); }}
479 
481  bool getUseTopocentricCoordinates() const {return flagUseTopocentricCoordinates;}
483  void setUseTopocentricCoordinates(bool use) { if (flagUseTopocentricCoordinates!= use) { flagUseTopocentricCoordinates=use; emit flagUseTopocentricCoordinatesChanged(use); }}
484 
486  double getPresetSkyTime() const;
488  void setPresetSkyTime(double d);
489 
491  void setTimeRate(double ts);
493  double getTimeRate() const;
494 
495  void revertTimeDirection(void);
496 
498  void increaseTimeSpeed();
500  void decreaseTimeSpeed();
502  void increaseTimeSpeedLess();
504  void decreaseTimeSpeedLess();
505 
507  void setZeroTimeSpeed();
509  void setRealTimeSpeed();
511  void toggleRealTimeSpeed();
513  bool getRealTimeSpeed() const;
514 
516  void setTimeNow();
518  void setTodayTime(const QTime& target);
520  bool getIsTimeNow() const;
521 
523  QTime getInitTodayTime(void);
525  void setInitTodayTime(const QTime& time);
527  void setPresetSkyTime(QDateTime dateTime);
528 
530  void addMinute();
532  void addHour();
534  void addDay();
536  void addWeek();
537 
540  void addSiderealDay();
544  void addSiderealYear();
548  void addSiderealYears(float n=100.f);
549 
551  void subtractMinute();
553  void subtractHour();
555  void subtractDay();
557  void subtractWeek();
558 
561  void subtractSiderealDay();
565  void subtractSiderealYear();
569  void subtractSiderealYears(float n=100.f);
570 
572  void addSynodicMonth();
573 
575  void addDraconicYear();
577  void addDraconicMonth();
578 
580  void addAnomalisticMonth();
582  void addAnomalisticYear();
584  void addAnomalisticYears(float n=100.f);
585 
587  void addMeanTropicalMonth();
589  void addMeanTropicalYear();
591  void addMeanTropicalYears(float n=100.f);
593  void addTropicalYear();
594 
596  void addJulianYear();
598  void addJulianYears(float n=100.f);
599 
602  void addGaussianYear();
603 
605  void subtractSynodicMonth();
606 
608  void subtractDraconicYear();
610  void subtractDraconicMonth();
611 
617  void subtractAnomalisticYears(float n=100.f);
618 
624  void subtractMeanTropicalYears(float n=100.f);
626  void subtractTropicalYear();
627 
629  void subtractJulianYear();
631  void subtractJulianYears(float n=100.f);
632 
634  void subtractGaussianYear();
635 
638  void addSolarDays(double d);
642  void addSiderealDays(double d);
643 
646  void moveObserverToSelected();
647 
650  void setDeltaTCustomYear(float y) { deltaTCustomYear=y; }
653  void setDeltaTCustomNDot(float v) { deltaTCustomNDot=v; }
656  void setDeltaTCustomEquationCoefficients(Vec3f c) { deltaTCustomEquationCoeff=c; }
657 
659  float getDeltaTCustomYear() const { return deltaTCustomYear; }
661  float getDeltaTCustomNDot() const { return deltaTCustomNDot; }
663  Vec3f getDeltaTCustomEquationCoefficients() const { return deltaTCustomEquationCoeff; }
664 
667 
668  bool de430IsAvailable();
669  bool de431IsAvailable();
670  bool de430IsActive();
671  bool de431IsActive();
672  void setDe430Active(bool status);
673  void setDe431Active(bool status);
674 
675 signals:
679  void timeRateChanged(double rate);
683  void timeSyncOccurred(double jDay);
685  void flipHorzChanged(bool b);
687  void flipVertChanged(bool b);
689  void flagUseNutationChanged(bool b);
695  void currentProjectionTypeKeyChanged(const QString& newValue);
697  void currentProjectionNameI18nChanged(const QString& newValue);
698 
699 private:
700  StelToneReproducer* toneReproducer; // Tones conversion between stellarium world and display device
701  StelSkyDrawer* skyDrawer;
702  StelMovementMgr* movementMgr; // Manage vision movements
703 
704  // Manage geodesic grid
705  mutable StelGeodesicGrid* geodesicGrid;
706 
707  // The currently used projection type
708  ProjectionType currentProjectionType;
709 
710  // The currentrly used time correction (DeltaT)
711  DeltaTAlgorithm currentDeltaTAlgorithm;
712 
713  // Parameters to use when creating new instances of StelProjector
714  StelProjector::StelProjectorParams currentProjectorParams;
715 
716  void updateTransformMatrices();
717  void updateTime(double deltaTime);
718  void updateMaximumFov();
719  void resetSync();
720 
721  void registerMathMetaTypes();
722 
723 
724  // Matrices used for every coordinate transfo
725  Mat4d matHeliocentricEclipticJ2000ToAltAz; // Transform from heliocentric ecliptic Cartesian (VSOP87A) to topocentric (StelObserver) altazimuthal coordinate
726  Mat4d matAltAzToHeliocentricEclipticJ2000; // Transform from topocentric (StelObserver) altazimuthal coordinate to heliocentric ecliptic Cartesian (VSOP87A)
727  Mat4d matAltAzToEquinoxEqu; // Transform from topocentric altazimuthal coordinate to Earth Equatorial
728  Mat4d matEquinoxEquToAltAz; // Transform from Earth Equatorial to topocentric (StelObserver) altazimuthal coordinate
729  Mat4d matHeliocentricEclipticToEquinoxEqu; // Transform from heliocentric ecliptic Cartesian (VSOP87A) to earth equatorial coordinate
730  Mat4d matEquinoxEquToJ2000; // For Earth, this is almost the inverse precession matrix, =Rz(VSOPbias)Rx(eps0)Rz(-psiA)Rx(-omA)Rz(chiA)
731  Mat4d matJ2000ToEquinoxEqu; // precession matrix
732 
733  Mat4d matJ2000ToAltAz;
734 
735  Mat4d matAltAzModelView; // Modelview matrix for observer-centric altazimuthal drawing
736  Mat4d invertMatAltAzModelView; // Inverted modelview matrix for observer-centric altazimuthal drawing
737 
738  // Position variables
739  StelObserver* position;
740  // The ID of the default startup location
741  QString defaultLocationID;
742 
743  // flag to indicate we want to use nutation (the small-scale wobble of earth's axis)
744  bool flagUseNutation;
745  // flag to indicate that we show topocentrically corrected coordinates. (Switching to false for planetocentric coordinates is new for 0.14)
746  bool flagUseTopocentricCoordinates;
747 
748  // Time variables
749  double timeSpeed; // Positive : forward, Negative : Backward, 1 = 1sec/sec
750  //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.
751  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()
752  // Use is best with calls getJD()/setJD() and getJDE()/setJDE() to explicitly state which flavour of JD you need.
753  double presetSkyTime;
754  QTime initTodayTime;
755  QString startupTimeMode;
756  double milliSecondsOfLastJDUpdate; // Time in seconds when the time rate or time last changed
757  double jdOfLastJDUpdate; // JD when the time rate or time last changed
758 
759  QString currentTimeZone;
760  bool flagUseDST;
761 
762  // Variables for custom equation of Delta-T
763  Vec3f deltaTCustomEquationCoeff;
764  float deltaTCustomNDot;
765  float deltaTCustomYear;
766 
767  // Variables for DE430/431 ephem calculation
768  bool de430Available; // ephem file found
769  bool de431Available; // ephem file found
770  bool de430Active; // available and user-activated.
771  bool de431Active; // available and user-activated.
772 };
773 
774 #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:135
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:129
Never add refraction (i.e. geometric coordinates)
Definition: StelCore.hpp:106
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:105
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:361
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:142
QStringList getAllProjectionTypeKeys() const
Get the list of all the available projections.
Banjevic (2006) algorithm for DeltaT.
Definition: StelCore.hpp:140
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:261
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:138
Vec3f getDeltaTCustomEquationCoefficients() const
Get coefficients for custom equation for calculation of Delta-T.
Definition: StelCore.hpp:663
void decreaseTimeSpeed()
Decrease the time speed.
Fisheye projection.
Definition: StelCore.hpp:90
Miller cylindrical projection.
Definition: StelCore.hpp:96
bool getUseTopocentricCoordinates() const
Definition: StelCore.hpp:481
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:97
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:117
Equatorial reference frame at the J2000 equinox centered on the observer. This is also the ICRS refer...
Definition: StelCore.hpp:79
void subtractJulianYear()
Subtract one Julian year to the simulation time.
Morrison & Stephenson (2004, 2005) algorithm for DeltaT.
Definition: StelCore.hpp:136
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:137
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:89
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:116
static const Mat4d matVsop87ToJ2000
Rotation matrix from ecliptic (VSOP87A) to equatorial J2000.
Definition: StelCore.hpp:263
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:120
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:476
void setCurrentDeltaTAlgorithm(DeltaTAlgorithm algorithm)
Set the current algorithm for time correction (DeltaT)
Definition: StelCore.hpp:359
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:75
Main class for Stellarium core processing.
Definition: StelCore.hpp:48
static const Mat4d matSupergalacticToJ2000
Rotation matrix from Supergalactic to J2000 reference frame.
Definition: StelCore.hpp:271
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:71
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:128
static const Mat4d matJ2000ToSupergalactic
Rotation matrix from J2000 to Supergalactic reference frame.
Definition: StelCore.hpp:269
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:661
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:121
DeltaTAlgorithm
Available DeltaT algorithms.
Definition: StelCore.hpp:111
StelSkyDrawer * getSkyDrawer()
Get the current StelSkyDrawer used in the core.
Stephenson (1997) algorithm for DeltaT.
Definition: StelCore.hpp:130
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:126
void addJulianYears(float n=100.f)
Add n Julian years to the simulation time.
Montenbruck & Pfleger (2000) algorithm for DeltaT.
Definition: StelCore.hpp:134
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:125
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:141
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.
QString currentProjectionNameI18n
Read-only property returning the localized projection name.
Definition: StelCore.hpp:63
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:69
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.
void subtractMinute()
Subtract one [Earth, solar] minute to the current simulation time.
void currentProjectionNameI18nChanged(const QString &newValue)
Emitted whenever the projection type changes.
Equatorial reference frame at the current equinox centered on the observer.
Definition: StelCore.hpp:76
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:659
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.
void addMinute()
Add one [Earth, solar] minute to the current simulation time.
Mercator projection.
Definition: StelCore.hpp:95
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:93
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:86
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.
double getSolutionEquationOfTime(const double JDE) const
Get solution of equation of time Source: J.
Perspective projection.
Definition: StelCore.hpp:88
void setMaskType(StelProjector::StelProjectorMaskType m)
Set the mask type.
Morrison & Stephenson (1982) algorithm for DeltaT (used by RedShift)
Definition: StelCore.hpp:122
void addSiderealDays(double d)
Add a number of sidereal days to the current simulation time, based on the observer body&#39;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:113
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:265
Stephenson & Houlden (1986) algorithm for DeltaT.
Definition: StelCore.hpp:124
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:118
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:656
void setInitTodayTime(const QTime &time)
set the initial "today time" from the config file
Muller & Stephenson (1975) algorithm for DeltaT.
Definition: StelCore.hpp:119
Fixed-ecliptic reference frame centered on the Observer. GZ: was ObservercentricEcliptic, but renamed because it is Ecliptic of J2000!
Definition: StelCore.hpp:74
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.
Supergalactic reference frame centered on observer.
Definition: StelCore.hpp:81
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:80
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:650
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:104
void subtractMeanTropicalMonth()
Subtract one mean tropical month to the simulation time.
Meeus & Simons (2000) algorithm for DeltaT.
Definition: StelCore.hpp:133
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&#39;s axis...
Definition: StelCore.hpp:483
Contains all the param needed to initialize a StelProjector.
Stephenson & Morrison (1984) algorithm for DeltaT.
Definition: StelCore.hpp:123
QString getCurrentProjectionTypeKey(void) const
Get the current Mapping used by the Projection.
Clemence (1948) algorithm for DeltaT.
Definition: StelCore.hpp:115
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:73
Schoch (1931) algorithm for DeltaT.
Definition: StelCore.hpp:114
Altazimuthal reference frame centered on observer.
Definition: StelCore.hpp:72
void postDraw()
Update core state after drawing modules.
void increaseTimeSpeed()
Increase the time speed.
Sinusoidal projection.
Definition: StelCore.hpp:94
Schmadel & Zech (1988) algorithm for DeltaT.
Definition: StelCore.hpp:127
void preDraw()
Update core state before drawing modules.
StelProjector::ModelViewTranformP getSupergalacticModelViewTransform(RefractionMode refMode=RefractionAuto) const
Get the modelview matrix for observer-centric Supergalactic equatorial drawing.
JPL Horizons algorithm for DeltaT.
Definition: StelCore.hpp:132
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:139
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:92
void setDeltaTCustomNDot(float v)
Set n-dot for custom equation for calculation of Delta-T.
Definition: StelCore.hpp:653
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:102
static const Mat4d matGalacticToJ2000
Rotation matrix from Galactic to J2000 reference frame, using FITS convention.
Definition: StelCore.hpp:267
void setUseNutation(bool use)
Set whether you want computation and simulation of nutation (a slight wobble of Earth&#39;s axis...
Definition: StelCore.hpp:478
void subtractSiderealDay()
Subtract one sidereal day to the simulation time.
QString currentProjectionTypeKey
This is just another way to access the projection type, by string instead of enum.
Definition: StelCore.hpp:61
void moveObserverTo(const StelLocation &target, double duration=1., double durationIfPlanetChange=1.)
Smoothly move the observer to the given location.
Orthographic projection.
Definition: StelCore.hpp:91
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:131
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:143
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)