Stellarium  HEAD
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Static Protected Member Functions | Friends
NomenclatureItem Class Reference

Class which contains data about one Nomenclature entry from the IAU database at https://planetarynames.wr.usgs.gov/ There is a confusing variety of planetographic vs. More...

#include <NomenclatureItem.hpp>

Public Types

enum  NomenclatureItemType {
  niUNDEFINED = 0 , niAlbedoFeature = 1 , niArcus = 2 , niAstrum = 3 ,
  niCatena = 4 , niCavus = 5 , niChaos = 6 , niChasma = 7 ,
  niCollis = 8 , niCorona = 9 , niCrater = 10 , niDorsum = 11 ,
  niEruptiveCenter = 12 , niFacula = 13 , niFarrum = 14 , niFlexus = 15 ,
  niFluctus = 16 , niFlumen = 17 , niFretum = 18 , niFossa = 19 ,
  niInsula = 20 , niLabes = 21 , niLabyrinthus = 22 , niLacuna = 23 ,
  niLacus = 24 , niLargeRingedFeature = 25 , niLinea = 26 , niLingula = 27 ,
  niMacula = 28 , niMare = 29 , niMensa = 30 , niMons = 31 ,
  niOceanus = 32 , niPalus = 33 , niPatera = 34 , niPlanitia = 35 ,
  niPlanum = 36 , niPlume = 37 , niPromontorium = 38 , niRegio = 39 ,
  niRima = 40 , niRupes = 41 , niScopulus = 42 , niSerpens = 43 ,
  niSulcus = 44 , niSinus = 45 , niTerra = 46 , niTholus = 47 ,
  niUnda = 48 , niVallis = 49 , niVastitas = 50 , niVirga = 51 ,
  niLandingSite = 52 , niLenticula = 53 , niReticulum = 54 , niSatelliteFeature = 55 ,
  niTessera = 56 , niSaxum = 57 , niSpecialPointPole = 100 , niSpecialPointEast = 101 ,
  niSpecialPointWest = 102 , niSpecialPointCenter = 103 , niSpecialPointSubSolar = 104
}
 
enum  PlanetCoordinateOrientation {
  pcoPlanetographicWest360 = 0x000 , pcoPlanetographicWest180 = 0x001 , pcoPlanetographicEast360 = 0x010 , pcoPlanetographicEast180 = 0x011 ,
  pcoPlanetocentricWest360 = 0x100 , pcoPlanetocentricWest180 = 0x101 , pcoPlanetocentricEast360 = 0x110 , pcoPlanetocentricEast180 = 0x111
}
 
- Public Types inherited from StelObject
enum  InfoStringGroupFlags {
  None = 0x00000000 , Name = 0x00000001 , CatalogNumber = 0x00000002 , Magnitude = 0x00000004 ,
  RaDecJ2000 = 0x00000008 , RaDecOfDate = 0x00000010 , AltAzi = 0x00000020 , Distance = 0x00000040 ,
  Elongation = 0x00000080 , Size = 0x00000100 , Velocity = 0x00000200 , ProperMotion = 0x00000400 ,
  Extra = 0x00000800 , HourAngle = 0x00001000 , AbsoluteMagnitude = 0x00002000 , GalacticCoord = 0x00004000 ,
  SupergalacticCoord = 0x00008000 , OtherCoord = 0x00010000 , ObjectType = 0x00020000 , EclipticCoordJ2000 = 0x00040000 ,
  EclipticCoordOfDate = 0x00080000 , IAUConstellation = 0x00100000 , SiderealTime = 0x00200000 , RTSTime = 0x00400000 ,
  SolarLunarPosition = 0x00800000 , Script = 0x01000000 , DebugAid = 0x02000000 , NoFont = 0x04000000 ,
  PlainText = 0x08000000
}
 Used as named bitfield flags as specifiers to filter results of getInfoString. More...
 

Public Member Functions

 NomenclatureItem (PlanetP nPlanet, int nId, const QString &nName, const QString &nContext, const QString &nOrigin, NomenclatureItemType nItemType, double nLatitude, double nLongitude, double nSize)
 
QString getType (void) const override
 Get the type of object.
 
QString getObjectType (void) const override
 Return object's type. More...
 
QString getObjectTypeI18n (void) const override
 Return object's type. It should be translated lowercase name of the type of the object.
 
QString getID (void) const override
 Returns a unique identifier for this object. More...
 
float getSelectPriority (const StelCore *core) const override
 Return a priority value which is used to discriminate objects by priority As for magnitudes, the lower is the higher priority.
 
QString getInfoString (const StelCore *core, const InfoStringGroup &flags) const override
 Get an HTML string to describe the object. More...
 
Vec3f getInfoColor (void) const override
 Get a color used to display info about the object.
 
Vec3d getJ2000EquatorialPos (const StelCore *) const override
 Get observer-centered equatorial coordinates at equinox J2000, including aberration.
 
double getAngularRadius (const StelCore *core) const override
 Return the angular radius of a circle containing the feature as seen from the observer with the circle center assumed to be at getJ2000EquatorialPos(). More...
 
QString getNameI18n (void) const override
 Get the localized name of nomenclature item.
 
QString getEnglishName (void) const override
 Get the english name of nomenclature item.
 
virtual void translateName (const StelTranslator &trans)
 Translate feature name using the passed translator.
 
Vec4d getRTSTime (const StelCore *core, const double altitude=0.) const override
 Compute times of nearest rise, transit and set of the item's current Planet. More...
 
void draw (StelCore *core, StelPainter *painter, const float fov) const
 
NomenclatureItemType getNomenclatureType () const
 
void setFlagHideLocalNomenclature (bool b)
 
bool getFlagHideLocalNomenclature () const
 
void setFlagShowSpecialNomenclatureOnly (bool b)
 
bool getFlagShowSpecialNomenclatureOnly () const
 
PlanetP getPlanet (void) const
 
float getLatitude (void) const
 get latitude [degrees]
 
float getLongitude (void) const
 get longitude [degrees]
 
double getSolarAltitude (const StelCore *core) const
 return solar altitude in degrees (Meeus, Astr.Alg.1998 53.3)
 
- Public Member Functions inherited from StelObject
SphericalRegionP getRegion () const override
 Default implementation of the getRegion method. More...
 
Vec3d getPointInRegion () const override
 Default implementation of the getPointInRegion method. More...
 
virtual QVariantMap getInfoMap (const StelCore *core) const
 Return a key/value map with data about an object's position, magnitude and so on. More...
 
Vec3d getEquinoxEquatorialPos (const StelCore *core) const
 Get observer-centered equatorial coordinate at the current equinox The frame has its Z axis at the planet's current rotation axis At time 2000-01-01 this frame is almost the same as J2000, but ONLY if the observer is on earth.
 
Vec3d getEquinoxEquatorialPosApparent (const StelCore *core) const
 Like getEquinoxEquatorialPos(core), but always adds refraction correction to the position.
 
Vec3d getEquinoxEquatorialPosAuto (const StelCore *core) const
 Like getEquinoxEquatorialPos(core), but adds refraction correction to the position if atmosphere is active.
 
Vec3d getGalacticPos (const StelCore *core) const
 Get observer-centered galactic coordinates.
 
Vec3d getSupergalacticPos (const StelCore *core) const
 Get observer-centered supergalactic coordinates.
 
Vec3d getSiderealPosGeometric (const StelCore *core) const
 Get observer-centered hour angle + declination (at current equinox) It is the geometric position, i.e. More...
 
Vec3d getSiderealPosApparent (const StelCore *core) const
 Get observer-centered hour angle + declination (at current equinox) It is the apparent position, i.e. More...
 
Vec3d getAltAzPosGeometric (const StelCore *core) const
 Get observer-centered alt/az position It is the geometric position, i.e. More...
 
Vec3d getAltAzPosApparent (const StelCore *core) const
 Get observer-centered alt/az position It is the apparent position, i.e. More...
 
Vec3d getAltAzPosAuto (const StelCore *core) const
 Get observer-centered alt/az position It is the automatic position, i.e. More...
 
float getParallacticAngle (const StelCore *core) const
 Get parallactic angle, which is the deviation between zenith angle and north angle. [radians].
 
bool isAboveHorizon (const StelCore *core) const
 Checking position an object above mathematical horizon for current location. More...
 
bool isAboveRealHorizon (const StelCore *core) const
 Checking position an object above real horizon for current location. More...
 
virtual float getVMagnitude (const StelCore *core) const
 Return object's apparent V magnitude as seen from observer, without including extinction.
 
float getVMagnitudeWithExtinction (const StelCore *core, const float knownVMag=-1000.f) const
 Return object's apparent V magnitude as seen from observer including extinction. More...
 
virtual double getCloseViewFov (const StelCore *) const
 Return the best FOV in degree to use for a close view of the object.
 
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 satellites)
 
virtual double getParentSatellitesFov (const StelCore *) const
 
virtual float getAirmass (const StelCore *core) const
 Return airmass value for the object (for atmosphere-dependent calculations) More...
 

Static Public Member Functions

static void setFlagLabels (bool b)
 
static bool getFlagLabels (void)
 

Static Public Attributes

static const QString NOMENCLATURE_TYPE
 
- Static Public Attributes inherited from StelObject
static constexpr InfoStringGroup AllInfo
 A pre-defined "all available" set of specifiers for the getInfoString flags argument to getInfoString. More...
 
static constexpr InfoStringGroup DefaultInfo
 A pre-defined "default" set of specifiers for the getInfoString flags argument to getInfoString It appears useful to propose this set as post-install settings and let users configure more on demand. More...
 
static constexpr InfoStringGroup ShortInfo = static_cast<InfoStringGroup>(Name|CatalogNumber|Magnitude|RaDecJ2000)
 A pre-defined "shortest useful" set of specifiers for the getInfoString flags argument to getInfoString.
 

Static Protected Member Functions

static NomenclatureItemType getNomenclatureItemType (const QString &abbrev)
 returns a type enum for a given 2-letter code
 
static void createNameLists ()
 Should be triggered once at start and then whenever program language setting changes.
 

Friends

class NomenclatureMgr
 

Additional Inherited Members

- Public Slots inherited from StelObject
virtual void setExtraInfoString (const InfoStringGroup &flags, const QString &str)
 Allow additions to the Info String. More...
 
virtual void addToExtraInfoString (const StelObject::InfoStringGroup &flags, const QString &str)
 Add str to the extra string. More...
 
QStringList getExtraInfoStrings (const InfoStringGroup &flags) const
 Retrieve an (unsorted) QStringList of all extra info strings that match flags. More...
 
void removeExtraInfoStrings (const InfoStringGroup &flags)
 Remove the extraInfoStrings with the given flags. More...
 
- Protected Member Functions inherited from StelObject
QString getCommonInfoString (const StelCore *core, const InfoStringGroup &flags) const
 Format the positional info string containing J2000/of date/altaz/hour angle positions and constellation, sidereal time, etc. More...
 
virtual QString getMagnitudeInfoString (const StelCore *core, const InfoStringGroup &flags, const int decimals=1) const
 Format the magnitude info string for the object. More...
 
QString getSolarLunarInfoString (const StelCore *core, const InfoStringGroup &flags) const
 Add a section to the InfoString with just horizontal data for the Sun and Moon, when observed from Earth. More...
 
void postProcessInfoString (QString &str, const InfoStringGroup &flags) const
 Apply post processing on the info string. More...
 

Detailed Description

Class which contains data about one Nomenclature entry from the IAU database at https://planetarynames.wr.usgs.gov/ There is a confusing variety of planetographic vs.

planetocentric coordinate systems, counting longitudes in eastern or western direction, or counting from 0...360 degrees or from -180...+180 degrees. The actual data were taken from https://planetarynames.wr.usgs.gov/GIS_Downloads and include eastward-positive planetocentric coordinates, i.a. all bodies are treated as spheres. However, according to https://planetarynames.wr.usgs.gov/TargetCoordinates on some objects at least the longitudes should be counted west-positive, a convention which we should follow closely. Note that for Mars the traditional west-positive counting has recently been inverted, and longitudes are now counted east-positive like on earth.

Member Function Documentation

◆ getAngularRadius()

double NomenclatureItem::getAngularRadius ( const StelCore core) const
overridevirtual

Return the angular radius of a circle containing the feature as seen from the observer with the circle center assumed to be at getJ2000EquatorialPos().

Returns
radius in degree. This value is half of the apparent angular size of the object, and is independent of the current FOV.

Reimplemented from StelObject.

◆ getID()

QString NomenclatureItem::getID ( void  ) const
inlineoverridevirtual

Returns a unique identifier for this object.

The ID should be unique for all objects of the same type, but may freely conflict with IDs of other types, so getType() must also be tested.

With this it should be possible to at least identify the same object in a different instance of Stellarium running the same version, but it would even be better if the ID provides some degree of forward-compatibility. For some object types (e.g. planets) this may simply return getEnglishName(), but better candidates may be official designations or at least (stable) internal IDs.

An object may have multiple IDs (different catalog numbers, etc). StelObjectMgr::searchByID() should search through all ID variants, but this method only returns one of them.

Implements StelObject.

◆ getInfoString()

QString NomenclatureItem::getInfoString ( const StelCore core,
const InfoStringGroup &  flags 
) const
overridevirtual

Get an HTML string to describe the object.

Parameters
coreA pointer to the core @flags a set of flags with information types to include.

Implements StelObject.

◆ getObjectType()

QString NomenclatureItem::getObjectType ( void  ) const
inlineoverridevirtual

Return object's type.

It should be English lowercase name of the astronomical type of the object. The purpose of this string is a distinction or further refinement over object class name retrieved with getType(): Planet objects can be planets, moons, or even the Sun. The Sun should however return "star". Nebula objects should return their actual type like "open cluster", "galaxy", "nebula", ...

Implements StelObject.

◆ getRTSTime()

Vec4d NomenclatureItem::getRTSTime ( const StelCore core,
const double  altitude = 0. 
) const
overridevirtual

Compute times of nearest rise, transit and set of the item's current Planet.

Parameters
corethe currently active StelCore object
altitude(optional; default=0) altitude of the object, degrees.
Returns
Vec4d - time of rise, transit and set closest to current time; JD.
Note
The fourth element flags particular conditions:
  • +100. for circumpolar objects. Rise and set give lower culmination times.
  • -100. for objects never rising. Rise and set give transit times.
  • -1000. is used as "invalid" value. The result should then not be used.

Reimplemented from StelObject.