StelCore.hpp   StelCore.hpp 
skipping to change at line 24 skipping to change at line 24
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, U SA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, U SA.
*/ */
#ifndef _STELCORE_HPP_ #ifndef _STELCORE_HPP_
#define _STELCORE_HPP_ #define _STELCORE_HPP_
#include "StelProjector.hpp" #include "StelProjector.hpp"
#include "StelProjectorType.hpp" #include "StelProjectorType.hpp"
#include "StelLocation.hpp"
#include "StelSkyDrawer.hpp"
#include <QString> #include <QString>
#include <QStringList> #include <QStringList>
#include <QTime>
class StelNavigator;
class StelToneReproducer; class StelToneReproducer;
class StelSkyDrawer; class StelSkyDrawer;
class StelGeodesicGrid; class StelGeodesicGrid;
class StelMovementMgr; class StelMovementMgr;
class StelObserver;
//! @class StelCore //! @class StelCore
//! Main class for Stellarium core processing. //! Main class for Stellarium core processing.
//! This class provides services like management of sky projections, //! This class provides services like management of sky projections,
//! tone conversion, or reference frame conversion. It is used by the //! tone conversion, or reference frame conversion. It is used by the
//! various StelModules to update and display themself. //! various StelModules to update and display themself.
//! There is currently only one StelCore instance in Stellarium, but //! There is currently only one StelCore instance in Stellarium, but
//! in the future they may be more, allowing for example to display //! in the future they may be more, allowing for example to display
//! several independent views of the sky at the same time. //! several independent views of the sky at the same time.
//! @author Fabien Chereau //! @author Fabien Chereau
class StelCore : public QObject class StelCore : public QObject
{ {
Q_OBJECT Q_OBJECT
Q_ENUMS(ProjectionType); Q_ENUMS(ProjectionType)
public: public:
//! @enum FrameType //! @enum FrameType
//! Supported reference frame types //! Supported reference frame types
enum FrameType enum FrameType
{ {
FrameAltAz, //!< Altazimuthal reference fr ame centered on observer. FrameAltAz, //!< Altazimuthal reference fr ame centered on observer.
FrameHeliocentricEcliptic, //!< Ecliptic reference frame centered on the Sun FrameHeliocentricEcliptic, //!< Ecliptic reference frame centered on the Sun
FrameObservercentricEcliptic, //!< Ecliptic reference frame centered on the Observer FrameObservercentricEcliptic, //!< Ecliptic reference frame centered on the Observer
FrameEquinoxEqu, //!< Equatorial reference fram e at the current equinox centered on the observer. FrameEquinoxEqu, //!< Equatorial reference fram e at the current equinox centered on the observer.
skipping to change at line 75 skipping to change at line 78
ProjectionPerspective, //!< Perspective projection ProjectionPerspective, //!< Perspective projection
ProjectionEqualArea, //!< Equal Area projection ProjectionEqualArea, //!< Equal Area projection
ProjectionStereographic, //!< Stereograhic projection ProjectionStereographic, //!< Stereograhic projection
ProjectionFisheye, //!< Fisheye projection ProjectionFisheye, //!< Fisheye projection
ProjectionHammer, //!< Hammer-Aitoff projection ProjectionHammer, //!< Hammer-Aitoff projection
ProjectionCylinder, //!< Cylinder projection ProjectionCylinder, //!< Cylinder projection
ProjectionMercator, //!< Mercator projection ProjectionMercator, //!< Mercator projection
ProjectionOrthographic //!< Orthographic projection ProjectionOrthographic //!< Orthographic projection
}; };
//! Available refraction mode.
enum RefractionMode
{
RefractionAuto, //!< Automatically decide to
add refraction if atmosphere is activated
RefractionOn, //!< Always add refraction (
i.e. apparent coordinates)
RefractionOff //!< Never add refraction (i
.e. geometric coordinates)
};
StelCore(); StelCore();
virtual ~StelCore(); virtual ~StelCore();
//! Init and load all main core components. //! Init and load all main core components.
void init(); void init();
//! Update all the objects with respect to the time. //! Update all the objects with respect to the time.
//! @param deltaTime the time increment in sec. //! @param deltaTime the time increment in sec.
void update(double deltaTime); void update(double deltaTime);
skipping to change at line 98 skipping to change at line 109
//! Update core state before drawing modules. //! Update core state before drawing modules.
void preDraw(); void preDraw();
//! Update core state after drawing modules. //! Update core state after drawing modules.
void postDraw(); void postDraw();
//! Get a new instance of a simple 2d projection. This projection ca nnot be used to project or unproject but //! Get a new instance of a simple 2d projection. This projection ca nnot be used to project or unproject but
//! only for 2d painting //! only for 2d painting
StelProjectorP getProjection2d() const; StelProjectorP getProjection2d() const;
//! Get a new instance of projector using the current display parame //! Get a new instance of projector using a modelview transformation
ters from Navigation, StelMovementMgr, etc... corresponding to the the given frame.
//! If not specified the projection type is the default one set in t //! If not specified the refraction effect is included if atmosphere
he core. is on.
//! This is a smart pointer, you don't need to delete it. StelProjectorP getProjection(FrameType frameType, RefractionMode ref
StelProjectorP getProjection(FrameType frameType, ProjectionType pro ractionMode=RefractionAuto) const;
jType=(ProjectionType)1000) const;
//! Get a new instance of projector using the given modelview transf
//! Get an instance of projector using the current display parameter ormatione.
s from Navigation, StelMovementMgr //! If not specified the projection used is the one currently used a
//! and using the given modelview matrix. s default.
//! If not specified default the projection type is the default one StelProjectorP getProjection(StelProjector::ModelViewTranformP model
set in the core. ViewTransform, ProjectionType projType=(ProjectionType)1000) const;
StelProjectorP getProjection(const Mat4d& modelViewMat, ProjectionTy
pe projType=(ProjectionType)1000) const;
//! Get the current navigation (manages frame transformation) used i
n the core.
StelNavigator* getNavigator() {return navigation;}
//! Get the current navigation (manages frame transformation) used i
n the core.
const StelNavigator* getNavigator() const {return navigation;}
//! Get the current tone reproducer used in the core. //! Get the current tone reproducer used in the core.
StelToneReproducer* getToneReproducer() {return toneConverter;} StelToneReproducer* getToneReproducer() {return toneConverter;}
//! Get the current tone reproducer used in the core. //! Get the current tone reproducer used in the core.
const StelToneReproducer* getToneReproducer() const {return toneConv erter;} const StelToneReproducer* getToneReproducer() const {return toneConv erter;}
//! Get the current StelSkyDrawer used in the core. //! Get the current StelSkyDrawer used in the core.
StelSkyDrawer* getSkyDrawer() {return skyDrawer;} StelSkyDrawer* getSkyDrawer() {return skyDrawer;}
//! Get the current StelSkyDrawer used in the core. //! Get the current StelSkyDrawer used in the core.
const StelSkyDrawer* getSkyDrawer() const {return skyDrawer;} const StelSkyDrawer* getSkyDrawer() const {return skyDrawer;}
skipping to change at line 147 skipping to change at line 151
QString projectionTypeKeyToNameI18n(const QString& key) const; QString projectionTypeKeyToNameI18n(const QString& key) const;
//! Get the projection TypeKey from its translated name for the curr ent locale. //! Get the projection TypeKey from its translated name for the curr ent locale.
QString projectionNameI18nToTypeKey(const QString& nameI18n) const; QString projectionNameI18nToTypeKey(const QString& nameI18n) const;
//! Get the current set of parameters to use when creating a new Ste lProjector. //! Get the current set of parameters to use when creating a new Ste lProjector.
StelProjector::StelProjectorParams getCurrentStelProjectorParams() c onst {return currentProjectorParams;} StelProjector::StelProjectorParams getCurrentStelProjectorParams() c onst {return currentProjectorParams;}
//! Set the set of parameters to use when creating a new StelProject or. //! Set the set of parameters to use when creating a new StelProject or.
void setCurrentStelProjectorParams(const StelProjector::StelProjecto rParams& newParams) {currentProjectorParams=newParams;} void setCurrentStelProjectorParams(const StelProjector::StelProjecto rParams& newParams) {currentProjectorParams=newParams;}
//! Get vision direction
void lookAtJ2000(const Vec3d& pos, const Vec3d& up);
Vec3d altAzToEquinoxEqu(const Vec3d& v, RefractionMode refMode=Refra
ctionAuto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return matAltAzToEquinoxEqu*v;
Vec3d r(v);
skyDrawer->getRefraction().backward(r);
r.transfo4d(matAltAzToEquinoxEqu);
return r;
}
Vec3d equinoxEquToAltAz(const Vec3d& v, RefractionMode refMode=Refra
ctionAuto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return matEquinoxEquToAltAz*v;
Vec3d r(v);
r.transfo4d(matEquinoxEquToAltAz);
skyDrawer->getRefraction().forward(r);
return r;
}
Vec3d altAzToJ2000(const Vec3d& v, RefractionMode refMode=Refraction
Auto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return matEquinoxEquToJ2000*matAltAzToEquinoxEqu*v;
Vec3d r(v);
skyDrawer->getRefraction().backward(r);
r.transfo4d(matEquinoxEquToJ2000*matAltAzToEquinoxEqu);
return r;
}
Vec3d j2000ToAltAz(const Vec3d& v, RefractionMode refMode=Refraction
Auto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return matJ2000ToAltAz*v;
Vec3d r(v);
r.transfo4d(matJ2000ToAltAz);
skyDrawer->getRefraction().forward(r);
return r;
}
Vec3d galacticToJ2000(const Vec3d& v) const {return matGalacticToJ20
00*v;}
Vec3d equinoxEquToJ2000(const Vec3d& v) const {return matEquinoxEquT
oJ2000*v;}
Vec3d j2000ToEquinoxEqu(const Vec3d& v) const {return matJ2000ToEqui
noxEqu*v;}
Vec3d j2000ToGalactic(const Vec3d& v) const {return matJ2000ToGalact
ic*v;}
//! Transform vector from heliocentric ecliptic coordinate to altazi
muthal
Vec3d heliocentricEclipticToAltAz(const Vec3d& v, RefractionMode ref
Mode=RefractionAuto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return matHeliocentricEclipticToAltAz*v;
Vec3d r(v);
r.transfo4d(matHeliocentricEclipticToAltAz);
skyDrawer->getRefraction().forward(r);
return r;
}
//! Transform from heliocentric coordinate to equatorial at current
equinox (for the planet where the observer stands)
Vec3d heliocentricEclipticToEquinoxEqu(const Vec3d& v) const {return
matHeliocentricEclipticToEquinoxEqu*v;}
//! Transform vector from heliocentric coordinate to false equatoria
l : equatorial
//! coordinate but centered on the observer position (usefull for ob
jects close to earth)
Vec3d heliocentricEclipticToEarthPosEquinoxEqu(const Vec3d& v) const
{return matAltAzToEquinoxEqu*matHeliocentricEclipticToAltAz*v;}
//! Get the modelview matrix for heliocentric ecliptic (Vsop87) draw
ing
StelProjector::ModelViewTranformP getHeliocentricEclipticModelViewTr
ansform(RefractionMode refMode=RefractionAuto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return StelProjector::ModelViewTranformP(new StelPro
jector::Mat4dTransform(matAltAzModelView*matHeliocentricEclipticToAltAz));
Refraction* refr = new Refraction(skyDrawer->getRefraction()
);
// The pretransform matrix will convert from input coordinat
es to AltAz needed by the refraction function.
refr->setPreTransfoMat(matHeliocentricEclipticToAltAz);
refr->setPostTransfoMat(matAltAzModelView);
return StelProjector::ModelViewTranformP(refr);
}
//! Get the modelview matrix for observer-centric ecliptic (Vsop87)
drawing
StelProjector::ModelViewTranformP getObservercentricEclipticModelVie
wTransform(RefractionMode refMode=RefractionAuto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return StelProjector::ModelViewTranformP(new StelPro
jector::Mat4dTransform(matAltAzModelView*matJ2000ToAltAz*matVsop87ToJ2000))
;
Refraction* refr = new Refraction(skyDrawer->getRefraction()
);
// The pretransform matrix will convert from input coordinat
es to AltAz needed by the refraction function.
refr->setPreTransfoMat(matJ2000ToAltAz*matVsop87ToJ2000);
refr->setPostTransfoMat(matAltAzModelView);
return StelProjector::ModelViewTranformP(refr);
}
//! Get the modelview matrix for observer-centric equatorial at equi
nox drawing
StelProjector::ModelViewTranformP getEquinoxEquModelViewTransform(Re
fractionMode refMode=RefractionAuto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return StelProjector::ModelViewTranformP(new StelPro
jector::Mat4dTransform(matAltAzModelView*matEquinoxEquToAltAz));
Refraction* refr = new Refraction(skyDrawer->getRefraction()
);
// The pretransform matrix will convert from input coordinat
es to AltAz needed by the refraction function.
refr->setPreTransfoMat(matEquinoxEquToAltAz);
refr->setPostTransfoMat(matAltAzModelView);
return StelProjector::ModelViewTranformP(refr);
}
//! Get the modelview matrix for observer-centric altazimuthal drawi
ng
StelProjector::ModelViewTranformP getAltAzModelViewTransform(Refract
ionMode refMode=RefractionAuto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return StelProjector::ModelViewTranformP(new StelPro
jector::Mat4dTransform(matAltAzModelView));
Refraction* refr = new Refraction(skyDrawer->getRefraction()
);
// The pretransform matrix will convert from input coordinat
es to AltAz needed by the refraction function.
refr->setPostTransfoMat(matAltAzModelView);
return StelProjector::ModelViewTranformP(refr);
}
//! Get the modelview matrix for observer-centric J2000 equatorial d
rawing
StelProjector::ModelViewTranformP getJ2000ModelViewTransform(Refract
ionMode refMode=RefractionAuto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return StelProjector::ModelViewTranformP(new StelPro
jector::Mat4dTransform(matAltAzModelView*matEquinoxEquToAltAz*matJ2000ToEqu
inoxEqu));
Refraction* refr = new Refraction(skyDrawer->getRefraction()
);
// The pretransform matrix will convert from input coordinat
es to AltAz needed by the refraction function.
refr->setPreTransfoMat(matEquinoxEquToAltAz*matJ2000ToEquino
xEqu);
refr->setPostTransfoMat(matAltAzModelView);
return StelProjector::ModelViewTranformP(refr);
}
//! Get the modelview matrix for observer-centric Galactic equatoria
l drawing
StelProjector::ModelViewTranformP getGalacticModelViewTransform(Refr
actionMode refMode=RefractionAuto) const
{
if (refMode==RefractionOff || skyDrawer==false || (refMode==
RefractionAuto && skyDrawer->getFlagHasAtmosphere()==false))
return StelProjector::ModelViewTranformP(new StelPro
jector::Mat4dTransform(matAltAzModelView*matEquinoxEquToAltAz*matJ2000ToEqu
inoxEqu*matGalacticToJ2000));
Refraction* refr = new Refraction(skyDrawer->getRefraction()
);
// The pretransform matrix will convert from input coordinat
es to AltAz needed by the refraction function.
refr->setPreTransfoMat(matEquinoxEquToAltAz*matJ2000ToEquino
xEqu*matGalacticToJ2000);
refr->setPostTransfoMat(matAltAzModelView);
return StelProjector::ModelViewTranformP(refr);
}
//! Rotation matrix from equatorial J2000 to ecliptic (Vsop87)
static const Mat4d matJ2000ToVsop87;
//! Rotation matrix from ecliptic (Vsop87) to equatorial J2000
static const Mat4d matVsop87ToJ2000;
//! Rotation matrix from J2000 to Galactic reference frame, using FI
TS convention.
static const Mat4d matJ2000ToGalactic;
//! Rotation matrix from J2000 to Galactic reference frame, using FI
TS convention.
static const Mat4d matGalacticToJ2000;
//! Return the observer heliocentric ecliptic position
Vec3d getObserverHeliocentricEclipticPos() const;
//! Get the informations on the current location
const StelLocation& getCurrentLocation() const;
//! Smoothly move the observer to the given location
//! @param target the target location
//! @param duration direction of view move duration in s
//! @param durationIfPlanetChange direction of view + planet travel
move duration in s.
//! This is used only if the destination planet is different from th
e starting one.
void moveObserverTo(const StelLocation& target, double duration=1.,
double durationIfPlanetChange=1.);
// Conversion in standar Julian time format
static const double JD_SECOND;
static const double JD_MINUTE;
static const double JD_HOUR;
static const double JD_DAY;
//! Get the sideral time shifted by the observer longitude
//! @return the locale sideral time in radian
double getLocalSideralTime() const;
//! Get the duration of a sideral day for the current observer in da
y.
double getLocalSideralDayLength() const;
//! Return the startup mode, can be preset|Preset or anything else
QString getStartupTimeMode() {return startupTimeMode;}
void setStartupTimeMode(const QString& s);
public slots: public slots:
//! Set the current ProjectionType to use //! Set the current ProjectionType to use
void setCurrentProjectionType(ProjectionType type); void setCurrentProjectionType(ProjectionType type);
ProjectionType getCurrentProjectionType() const {return currentProje ctionType;} ProjectionType getCurrentProjectionType() const {return currentProje ctionType;}
//! Get the current Mapping used by the Projection //! Get the current Mapping used by the Projection
QString getCurrentProjectionTypeKey(void) const; QString getCurrentProjectionTypeKey(void) const;
//! Set the current ProjectionType to use from its key //! Set the current ProjectionType to use from its key
void setCurrentProjectionTypeKey(QString type); void setCurrentProjectionTypeKey(QString type);
skipping to change at line 181 skipping to change at line 356
//! Set the vertical flip status. //! Set the vertical flip status.
//! @param flip The new value (true = flipped, false = unflipped). //! @param flip The new value (true = flipped, false = unflipped).
void setFlipVert(bool flip) {currentProjectorParams.flipVert = flip; } void setFlipVert(bool flip) {currentProjectorParams.flipVert = flip; }
//! Get the state of the horizontal flip. //! Get the state of the horizontal flip.
//! @return True if flipped horizontally, else false. //! @return True if flipped horizontally, else false.
bool getFlipHorz(void) const {return currentProjectorParams.flipHorz ;} bool getFlipHorz(void) const {return currentProjectorParams.flipHorz ;}
//! Get the state of the vertical flip. //! Get the state of the vertical flip.
//! @return True if flipped vertically, else false. //! @return True if flipped vertically, else false.
bool getFlipVert(void) const {return currentProjectorParams.flipVert ;} bool getFlipVert(void) const {return currentProjectorParams.flipVert ;}
//! Get the location used by default at startup
QString getDefaultLocationID() const {return defaultLocationID;}
//! Set the location to use by default at startup
void setDefaultLocationID(const QString& id);
//! Set the current date in Julian Day
void setJDay(double JD) {JDay=JD;}
//! Get the current date in Julian Day
double getJDay() const {return JDay;}
//! Return the preset sky time in JD
double getPresetSkyTime() const {return presetSkyTime;}
//! Set the preset sky time from a JD
void setPresetSkyTime(double d) {presetSkyTime=d;}
//! Set time speed in JDay/sec
void setTimeRate(double ts) {timeSpeed=ts; emit timeRateChanged(time
Speed);}
//! Get time speed in JDay/sec
double getTimeRate() const {return timeSpeed;}
//! Increase the time speed
void increaseTimeSpeed();
//! Decrease the time speed
void decreaseTimeSpeed();
//! Increase the time speed, but not as much as with increaseTimeSpe
ed()
void increaseTimeSpeedLess();
//! Decrease the time speed but not as much as with decreaseTimeSpee
d()
void decreaseTimeSpeedLess();
//! Set time speed to 0, i.e. freeze the passage of simulation time
void setZeroTimeSpeed() {setTimeRate(0);}
//! Set real time speed, i.e. 1 sec/sec
void setRealTimeSpeed() {setTimeRate(JD_SECOND);}
//! Set real time speed or pause simulation if we are already in rea
ltime speed.
void toggleRealTimeSpeed() {(!getRealTimeSpeed()) ? setRealTimeSpeed
() : setZeroTimeSpeed();}
//! Get whether it is real time speed, i.e. 1 sec/sec
bool getRealTimeSpeed() const {return (fabs(timeSpeed-JD_SECOND)<0.0
000001);}
//! Set stellarium time to current real world time
void setTimeNow();
//! Set the time to some value, leaving the day the same.
void setTodayTime(const QTime& target);
//! Get whether the current stellarium time is the real world time
bool getIsTimeNow() const;
//! get the initial "today time" from the config file
QTime getInitTodayTime(void) {return initTodayTime;}
//! set the initial "today time" from the config file
void setInitTodayTime(const QTime& t) {initTodayTime=t;}
//! Set the preset sky time from a QDateTime
void setPresetSkyTime(QDateTime dt);
//! Add one [Earth, solar] hour to the current simulation time.
void addHour() {addSolarDays(0.04166666666666666667);}
//! Add one [Earth, solar] day to the current simulation time.
void addDay() {addSolarDays(1.0);}
//! Add one [Earth, solar] week to the current simulation time.
void addWeek() {addSolarDays(7.0);}
//! Add one sidereal day to the simulation time. The length of time
depends
//! on the current planetary body on which the observer is located.
void addSiderealDay() {addSiderealDays(1.0);}
//! Add one sidereal week to the simulation time. The length of time
depends
//! on the current planetary body on which the observer is located.
void addSiderealWeek() {addSiderealDays(7.0);}
//! Subtract one [Earth, solar] hour to the current simulation time.
void subtractHour() {addSolarDays(-0.04166666666666666667);}
//! Subtract one [Earth, solar] day to the current simulation time.
void subtractDay() {addSolarDays(-1.0);}
//! Subtract one [Earth, solar] week to the current simulation time.
void subtractWeek() {addSolarDays(-7.0);}
//! Subtract one sidereal week to the simulation time. The length of
time depends
//! on the current planetary body on which the observer is located.
void subtractSiderealDay() {addSiderealDays(-1.0);}
//! Subtract one sidereal week to the simulation time. The length of
time depends
//! on the current planetary body on which the observer is located.
void subtractSiderealWeek() {addSiderealDays(-7.0);}
//! Add a number of Earth Solar days to the current simulation time
//! @param d the decimal number of days to add (use negative values
to subtract)
void addSolarDays(double d);
//! Add a number of sidereal days to the current simulation time,
//! based on the observer body's rotational period.
//! @param d the decimal number of sidereal days to add (use negativ
e values to subtract)
void addSiderealDays(double d);
//! Move the observer to the selected object. This will only do some
thing if
//! the selected object is of the correct type - i.e. a planet.
void moveObserverToSelected();
signals:
//! This signal is emitted when the observer location has changed.
void locationChanged(StelLocation);
//! This signal is emitted when the time rate has changed
void timeRateChanged(double rate);
private: private:
StelNavigator* navigation; // Manage all naviga tion parameters, coordinate transformations etc..
StelToneReproducer* toneConverter; // Tones conversion between stellarium world and display device StelToneReproducer* toneConverter; // Tones conversion between stellarium world and display device
StelSkyDrawer* skyDrawer; StelSkyDrawer* skyDrawer;
StelMovementMgr* movementMgr; // Manage vision movements StelMovementMgr* movementMgr; // Manage vision movements
// Manage geodesic grid // Manage geodesic grid
mutable StelGeodesicGrid* geodesicGrid; mutable StelGeodesicGrid* geodesicGrid;
// The currently used projection type // The currently used projection type
ProjectionType currentProjectionType; ProjectionType currentProjectionType;
// Parameters to use when creating new instances of StelProjector // Parameters to use when creating new instances of StelProjector
StelProjector::StelProjectorParams currentProjectorParams; StelProjector::StelProjectorParams currentProjectorParams;
void updateTransformMatrices();
void updateTime(double deltaTime);
// Matrices used for every coordinate transfo
Mat4d matHeliocentricEclipticToAltAz; // Transform from heliocentr
ic ecliptic (Vsop87) to observer-centric altazimuthal coordinate
Mat4d matAltAzToHeliocentricEcliptic; // Transform from observer-c
entric altazimuthal coordinate to heliocentric ecliptic (Vsop87)
Mat4d matAltAzToEquinoxEqu; // Transform
from observer-centric altazimuthal coordinate to Earth Equatorial
Mat4d matEquinoxEquToAltAz; // Transform
from observer-centric altazimuthal coordinate to Earth Equatorial
Mat4d matHeliocentricEclipticToEquinoxEqu;// Transform from heliocen
tric ecliptic (Vsop87) to earth equatorial coordinate
Mat4d matEquinoxEquToJ2000;
Mat4d matJ2000ToEquinoxEqu;
Mat4d matJ2000ToAltAz;
Mat4d matAltAzModelView; // Modelview
matrix for observer-centric altazimuthal drawing
Mat4d invertMatAltAzModelView; // Inverted modelvie
w matrix for observer-centric altazimuthal drawing
// Position variables
StelObserver* position;
// The ID of the default startup location
QString defaultLocationID;
// Time variables
double timeSpeed; // Positive : forward, Negat
ive : Backward, 1 = 1sec/sec
double JDay; // Curent time in Julian day
double presetSkyTime;
QTime initTodayTime;
QString startupTimeMode;
}; };
#endif // _STELCORE_HPP_ #endif // _STELCORE_HPP_
 End of changes. 11 change blocks. 
25 lines changed or deleted 414 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/