Stellarium 0.14.3
StelObject.hpp
1 /*
2  * Stellarium
3  * Copyright (C) 2002 Fabien Chereau
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA.
18  */
19 
20 #ifndef _STELOBJECT_HPP_
21 #define _STELOBJECT_HPP_
22 
23 #include "VecMath.hpp"
24 #include "StelObjectType.hpp"
25 #include "StelRegionObject.hpp"
26 
27 #include <QFlags>
28 #include <QString>
29 
30 class StelCore;
31 
37 {
38 public:
45  {
46  Name = 0x00000001,
47  CatalogNumber = 0x00000002,
48  Magnitude = 0x00000004,
49  RaDecJ2000 = 0x00000008,
50  RaDecOfDate = 0x00000010,
51  AltAzi = 0x00000020,
52  Distance = 0x00000040,
53  Size = 0x00000080,
54  Extra = 0x00000100,
55  HourAngle = 0x00000200,
56  AbsoluteMagnitude = 0x00000400,
57  GalacticCoord = 0x00000800,
58  ObjectType = 0x00001000,
59  EclipticCoord = 0x00002000,
60  EclipticCoordXYZ = 0x00004000,
61  PlainText = 0x00010000,
62 // TODO GZ
63 // RaDecJ2000Planetocentric = 0x00020000, //!< The planetocentric equatorial position (J2000 ref) [Mostly to compare with almanacs]
64 // RaDecOfDatePlanetocentric = 0x00040000 //!< The planetocentric equatorial position (of date)
65 // // and split Ecliptical into
66 // EclipticCoordJ2000 = 0x00002000, //!< The ecliptic position w.r.t. ecliptic of eq.J2000.0
67 // EclipticCoordOfDate = 0x00002000, //!< The ecliptic position w.r.t. ecliptic of eq. of date
68 
69 
70  };
71  typedef QFlags<InfoStringGroupFlags> InfoStringGroup;
72  Q_FLAGS(InfoStringGroup)
73 
74 
79 
80  virtual ~StelObject() {}
81 
85 
88  virtual Vec3d getPointInRegion() const {return getJ2000EquatorialPos(NULL);}
89 
96  virtual QString getInfoString(const StelCore *core, const InfoStringGroup& flags=StelObject::AllInfo) const = 0;
97 
99  virtual QString getType() const = 0;
100 
102  virtual QString getEnglishName() const = 0;
103 
105  virtual QString getNameI18n() const = 0;
106 
108  virtual Vec3d getJ2000EquatorialPos(const StelCore* core) const = 0;
109 
113  Vec3d getEquinoxEquatorialPos(const StelCore* core) const;
114 
116  Vec3d getGalacticPos(const StelCore* core) const;
117 
121  Vec3d getSiderealPosGeometric(const StelCore* core) const;
122 
126  Vec3d getSiderealPosApparent(const StelCore* core) const;
127 
131  Vec3d getAltAzPosGeometric(const StelCore* core) const;
132 
136  Vec3d getAltAzPosApparent(const StelCore* core) const;
137 
141  Vec3d getAltAzPosAuto(const StelCore* core) const;
142 
144  virtual float getVMagnitude(const StelCore* core) const;
145 
148  float getVMagnitudeWithExtinction(const StelCore* core) const;
149 
152  virtual float getSelectPriority(const StelCore*) const;
153 
155  virtual Vec3f getInfoColor() const {return Vec3f(1,1,1);}
156 
158  virtual double getCloseViewFov(const StelCore*) const {return 10.;}
159 
161  virtual double getSatellitesFov(const StelCore*) const {return -1.;}
162  virtual double getParentSatellitesFov(const StelCore*) const {return -1.;}
163 
167  virtual double getAngularSize(const StelCore* core) const = 0;
168 
169 protected:
170 
172  QString getPositionInfoString(const StelCore *core, const InfoStringGroup& flags) const;
173 
175  void postProcessInfoString(QString& str, const InfoStringGroup& flags) const;
176 };
177 
178 Q_DECLARE_OPERATORS_FOR_FLAGS(StelObject::InfoStringGroup)
179 
180 #endif // _STELOBJECT_HPP_
Q_FLAGS(InfoStringGroup) static const InfoStringGroupFlags AllInfo
A pre-defined set of specifiers for the getInfoString flags argument to getInfoString.
Vec3d getAltAzPosAuto(const StelCore *core) const
Get observer-centered alt/az position It is the automatic position, i.e.
The type of the object (star, planet, etc.)
Definition: StelObject.hpp:58
virtual double getAngularSize(const StelCore *core) const =0
Return the angular radius of a circle containing the object as seen from the observer with the circle...
virtual QString getInfoString(const StelCore *core, const InfoStringGroup &flags=StelObject::AllInfo) const =0
Write I18n information about the object in QString.
Magnitude related data.
Definition: StelObject.hpp:48
virtual QString getType() const =0
Return object's type. It should be the name of the class.
QString getPositionInfoString(const StelCore *core, const InfoStringGroup &flags) const
Format the positional info string contain J2000/of date/altaz/hour angle positions for the object...
Vec3d getAltAzPosGeometric(const StelCore *core) const
Get observer-centered alt/az position It is the geometric position, i.e.
The base abstract class for sky objects used in Stellarium like Stars, Planets, Constellations etc...
Definition: StelObject.hpp:36
The galactic position.
Definition: StelObject.hpp:57
A shared pointer on a SphericalRegion.
virtual float getSelectPriority(const StelCore *) const
Return a priority value which is used to discriminate objects by priority As for magnitudes, the lower is the higher priority.
The position (Altitude/Azimuth)
Definition: StelObject.hpp:51
virtual double getCloseViewFov(const StelCore *) const
Return the best FOV in degree to use for a close view of the object.
Definition: StelObject.hpp:158
The ecliptic position, XYZ of VSOP87A (used mainly for debugging, not public)
Definition: StelObject.hpp:60
Main class for Stellarium core processing.
Definition: StelCore.hpp:48
The hour angle + DE (of date)
Definition: StelObject.hpp:55
The ecliptic position.
Definition: StelObject.hpp:59
virtual Vec3d getJ2000EquatorialPos(const StelCore *core) const =0
Get observer-centered equatorial coordinates at equinox J2000.
Info about an object's distance.
Definition: StelObject.hpp:52
Special SphericalRegion for a point on the sphere.
Vec3d getEquinoxEquatorialPos(const StelCore *core) const
Get observer-centered equatorial coordinate at the current equinox The frame has it's Z axis at the p...
Strip HTML tags from output.
Definition: StelObject.hpp:61
virtual Vec3f getInfoColor() const
Get a color used to display info about the object.
Definition: StelObject.hpp:155
virtual QString getEnglishName() const =0
Return object's name in english.
void postProcessInfoString(QString &str, const InfoStringGroup &flags) const
Apply post processing on the info string.
The equatorial position (J2000 ref)
Definition: StelObject.hpp:49
Define the StelObjectP type.
virtual SphericalRegionP getRegion() const
Default implementation of the getRegion method.
Definition: StelObject.hpp:84
The equatorial position (of date)
Definition: StelObject.hpp:50
An object's name.
Definition: StelObject.hpp:46
Catalog numbers.
Definition: StelObject.hpp:47
virtual float getVMagnitude(const StelCore *core) const
Return object's apparent V magnitude as seen from observer, without including extinction.
virtual Vec3d getPointInRegion() const
Default implementation of the getPointInRegion method.
Definition: StelObject.hpp:88
virtual QString getNameI18n() const =0
Return translated object's name.
Vec3d getSiderealPosApparent(const StelCore *core) const
Get observer-centered hour angle + declination (at current equinox) It is the apparent position...
The absolute magnitude.
Definition: StelObject.hpp:56
Simple abstract class defining basic methods implemented by all objects that need to be stored in a S...
Vec3d getAltAzPosApparent(const StelCore *core) const
Get observer-centered alt/az position It is the apparent position, i.e.
float getVMagnitudeWithExtinction(const StelCore *core) const
Return object's apparent V magnitude as seen from observer including extinction.
static const InfoStringGroupFlags ShortInfo
A pre-defined set of specifiers for the getInfoString flags argument to getInfoString.
Definition: StelObject.hpp:78
Info about an object's size.
Definition: StelObject.hpp:53
Vec3d getSiderealPosGeometric(const StelCore *core) const
Get observer-centered hour angle + declination (at current equinox) It is the geometric position...
Derived class-specific extra fields.
Definition: StelObject.hpp:54
Vec3d getGalacticPos(const StelCore *core) const
Get observer-centered galactic coordinates.
virtual double getSatellitesFov(const StelCore *) const
Return the best FOV in degree to use for a global view of the object satellite system (if there are s...
Definition: StelObject.hpp:161