21 #ifndef _STELCORE_HPP_
22 #define _STELCORE_HPP_
24 #include "StelProjector.hpp"
26 #include "StelLocation.hpp"
27 #include "StelSkyDrawer.hpp"
29 #include <QStringList>
51 Q_ENUMS(ProjectionType)
52 Q_ENUMS(DeltaTAlgorithm)
65 FrameHeliocentricEclipticJ2000,
66 FrameObservercentricEclipticJ2000,
67 FrameObservercentricEclipticOfDate,
80 ProjectionPerspective,
82 ProjectionStereographic,
87 ProjectionOrthographic,
108 AstronomicalEphemeris,
113 MorrisonStephenson1982,
114 StephensonMorrison1984,
120 StephensonMorrison1995,
127 MorrisonStephenson2004,
130 EspenakMeeusZeroMoonAccel,
145 void update(
double deltaTime);
148 void windowHasBeenResized(
float x,
float y,
float width,
float height);
162 StelProjectorP getProjection(FrameType frameType, RefractionMode refractionMode=RefractionAuto)
const;
187 void setClippingPlanes(
double znear,
double zfar);
189 void getClippingPlanes(
double* zn,
double* zf)
const;
192 QString projectionTypeKeyToNameI18n(
const QString& key)
const;
195 QString projectionNameI18nToTypeKey(
const QString& nameI18n)
const;
203 void lookAtJ2000(
const Vec3d& pos,
const Vec3d& up);
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);}
211 Vec3d equinoxEquToJ2000(
const Vec3d& v)
const;
212 Vec3d j2000ToEquinoxEqu(
const Vec3d& v)
const;
216 Vec3d heliocentricEclipticToAltAz(
const Vec3d& v, RefractionMode refMode=RefractionAuto)
const;
219 Vec3d heliocentricEclipticToEquinoxEqu(
const Vec3d& v)
const;
247 static const Mat4d matJ2000ToVsop87;
249 static const Mat4d matVsop87ToJ2000;
251 static const Mat4d matJ2000ToGalactic;
253 static const Mat4d matGalacticToJ2000;
256 Vec3d getObserverHeliocentricEclipticPos()
const;
261 const QSharedPointer<class Planet> getCurrentPlanet()
const;
274 void moveObserverTo(
const StelLocation& target,
double duration=1.,
double durationIfPlanetChange=1.);
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;
285 double getLocalSiderealTime()
const;
288 double getLocalSiderealDayLength()
const;
291 double getLocalSiderealYearLength()
const;
295 QString getStartupTimeMode();
296 void setStartupTimeMode(
const QString& s);
302 QString getCurrentDeltaTAlgorithmValidRangeDescription(
const double JD, QString* marker)
const;
307 bool isBrightDaylight()
const;
310 double getCurrentEpoch()
const;
313 QString getDefaultProjectionTypeKey(
void)
const;
318 ProjectionType getCurrentProjectionType()
const;
370 void setJD(
double newJD);
374 void setJDE(
double newJDE);
376 double getJD()
const;
602 ProjectionType currentProjectionType;
605 DeltaTAlgorithm currentDeltaTAlgorithm;
610 void updateTransformMatrices();
611 void updateTime(
double deltaTime);
617 Mat4d matHeliocentricEclipticJ2000ToAltAz;
618 Mat4d matAltAzToHeliocentricEclipticJ2000;
619 Mat4d matAltAzToEquinoxEqu;
620 Mat4d matEquinoxEquToAltAz;
621 Mat4d matHeliocentricEclipticToEquinoxEqu;
622 Mat4d matEquinoxEquToJ2000;
623 Mat4d matJ2000ToEquinoxEqu;
625 Mat4d matJ2000ToAltAz;
627 Mat4d matAltAzModelView;
628 Mat4d invertMatAltAzModelView;
633 QString defaultLocationID;
636 bool flagUseNutation;
638 bool flagUseTopocentricCoordinates;
643 QPair<double,double> JD;
645 double presetSkyTime;
647 QString startupTimeMode;
648 double secondsOfLastJDUpdate;
649 double jdOfLastJDUpdate;
652 Vec3f deltaTCustomEquationCoeff;
653 float deltaTCustomNDot;
654 float deltaTCustomYear;
658 #endif // _STELCORE_HPP_
void subtractMeanTropicalYears(float n=100.f)
Subtract n mean tropical years to the simulation time.
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.
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)
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.
QStringList getAllProjectionTypeKeys() const
Get the list of all the available projections.
void returnToDefaultLocation()
Return to the default location.
StelProjectorMaskType
Define viewport mask types.
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.
Vec3f getDeltaTCustomEquationCoefficients() const
Get coefficients for custom equation for calculation of Delta-T.
void decreaseTimeSpeed()
Decrease the time speed.
bool getUseTopocentricCoordinates() const
void subtractDraconicMonth()
Subtract one draconic month to the simulation time.
void subtractDay()
Subtract one [Earth, solar] day to the current simulation time.
double getMJDay() const
Get the current date in Modified Julian Day (UT)
void subtractJulianYear()
Subtract one Julian year to the simulation time.
void subtractAnomalisticYear()
Subtract one anomalistic year to the simulation time.
void setFlipVert(bool flip)
Set the vertical flip status.
A SphericalCap is defined by a direction and an aperture.
QString getCurrentDeltaTAlgorithmDescription(void) const
Get description of the current algorithm for time correction.
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
void setCurrentDeltaTAlgorithm(DeltaTAlgorithm algorithm)
Set the current algorithm for time correction (DeltaT)
void setRealTimeSpeed()
Set real time speed, i.e. 1 sec/sec.
Main class for Stellarium core processing.
double getJD() const
Get the current date in Julian Day (UT).
void addGaussianYear()
Add one Gaussian year to the simulation time.
void addSynodicMonth()
Add one synodic month to the simulation time.
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.
void addJulianYears(float n=100.f)
Add n Julian years to the simulation time.
void addTropicalYear()
Add one tropical year to the simulation time.
void addAnomalisticYear()
Add one anomalistic year to the simulation time.
void subtractGaussianYear()
Subtract one Gaussian year to the simulation time.
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...
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.
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 addSiderealYear()
Add one sidereal year to the simulation time.
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.
void setJD(double newJD)
Set the current date in Julian Day (UT)
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.
void addMeanTropicalYear()
Add one mean tropical year to the simulation time.
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.
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.
double getPresetSkyTime() const
Return the preset sky time in JD.
void setFlipHorz(bool flip)
Set the horizontal flip status.
void setMaskType(StelProjector::StelProjectorMaskType m)
Set the mask type.
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.
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.
void setTimeNow()
Set stellarium time to current real world time.
void addAnomalisticMonth()
Add one anomalistic month to the simulation time.
void subtractAnomalisticMonth()
Subtract one anomalistic month to the simulation time.
void setDeltaTCustomEquationCoefficients(Vec3f c)
Set coefficients for custom equation for calculation of Delta-T.
void setInitTodayTime(const QTime &time)
set the initial "today time" from the config file
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
void addDraconicMonth()
Add one draconic month to the simulation time.
void subtractAnomalisticYears(float n=100.f)
Subtract n anomalistic years to the simulation time.
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.
double getTimeRate() const
Get time speed in JDay/sec.
void subtractMeanTropicalMonth()
Subtract one mean tropical month to the simulation time.
Define the StelProjectorP type.
void setUseTopocentricCoordinates(bool use)
Set whether you want computation and simulation of nutation (a slight wobble of Earth's axis...
Contains all the param needed to initialize a StelProjector.
QString getCurrentProjectionTypeKey(void) const
Get the current Mapping used by the Projection.
void addMeanTropicalMonth()
Add one mean tropical month to the simulation time.
void increaseTimeSpeed()
Increase the time speed.
void addSolarDays(double d)
Add a number of Earth Solar days to the current simulation time.
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).
void setDeltaTCustomNDot(float v)
Set n-dot for custom equation for calculation of Delta-T.
void increaseTimeSpeedLess()
Increase the time speed, but not as much as with increaseTimeSpeed()
void subtractSiderealDay()
Subtract one sidereal day to the simulation time.
void setUseNutation(bool useNutation)
Set whether you want computation and simulation of nutation (a slight wobble of Earth's axis...
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.
bool getRealTimeSpeed() const
Get whether it is real time speed, i.e. 1 sec/sec.
QString getDefaultLocationID() const
Get the location used by default at startup.