• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

kstars

  • sources
  • kde-4.12
  • kdeedu
  • kstars
  • kstars
  • skyobjects
ksplanetbase.h
Go to the documentation of this file.
1 
2 /***************************************************************************
3  ksplanetbase.h - K Desktop Planetarium
4  -------------------
5  begin : Sun Jan 29 2002
6  copyright : (C) 2002 by Mark Hollomon
7  email : mhh@mindspring.com
8  ***************************************************************************/
9 
10 /***************************************************************************
11  * *
12  * This program is free software; you can redistribute it and/or modify *
13  * it under the terms of the GNU General Public License as published by *
14  * the Free Software Foundation; either version 2 of the License, or *
15  * (at your option) any later version. *
16  * *
17  ***************************************************************************/
18 
19 #ifndef KSPLANETBASE_H_
20 #define KSPLANETBASE_H_
21 
22 
23 #include <QList>
24 #include <QImage>
25 #include <QColor>
26 
27 #include <kdebug.h>
28 
29 #include "trailobject.h"
30 
31 class KSNumbers;
32 class KSPopupMenu;
33 
40 class EclipticPosition {
41 public:
42  dms longitude;
43  dms latitude;
44  double radius;
45 
47  explicit EclipticPosition(dms plong = dms(), dms plat = dms(), double prad = 0.0) :
48  longitude(plong), latitude(plat), radius(prad)
49  {}
50 };
51 
63 class KSPlanetBase : public TrailObject {
64 public:
73  explicit KSPlanetBase( const QString &s = i18n("unnamed"),
74  const QString &image_file=QString(),
75  const QColor &c=Qt::white, double pSize=0 );
76 
78  virtual ~KSPlanetBase() {}
79 
80  void init(const QString &s, const QString &image_file, const QColor &c, double pSize );
81 
82  enum Planets { MERCURY=0, VENUS=1, MARS=2, JUPITER=3, SATURN=4, URANUS=5, NEPTUNE=6, PLUTO=7, SUN=8, MOON=9, UNKNOWN_PLANET };
83 
84  static KSPlanetBase* createPlanet( int n );
85 
86  static QVector<QColor> planetColor;
87 
88  virtual bool loadData() = 0;
89 
91  const dms& ecLong() const { return ep.longitude; }
92 
94  const dms& ecLat() const { return ep.latitude; }
95 
99  void setEcLong( dms elong ) { ep.longitude = elong; }
100 
104  void setEcLat( dms elat ) { ep.latitude = elat; }
105 
107  const dms& helEcLong() const { return helEcPos.longitude; }
108 
110  const dms& helEcLat() const { return helEcPos.latitude; }
111 
115  void EclipticToEquatorial( const dms *Obliquity );
116 
120  void EquatorialToEcliptic( const dms *Obliquity );
121 
123  const QImage& image() { return m_image; }
124 
126  double rsun() const { return ep.radius; }
127 
131  void setRsun( double r ) { ep.radius = r; }
132 
134  double rearth() const { return Rearth; }
135 
139  void setRearth( double r ) { Rearth = r; }
140 
144  void setRearth( const KSPlanetBase *Earth );
145 
152  virtual void updateCoords( KSNumbers *num, bool includePlanets=true, const dms *lat=0, const dms *LST=0, bool forceRecompute = false );
153 
160  void findPosition( const KSNumbers *num, const dms *lat=0, const dms *LST=0, const KSPlanetBase *Earth = 0 );
161 
163  virtual double pa() const { return PositionAngle; }
164 
168  void setPA( double p ) { PositionAngle = p; }
169 
171  double angSize() const { return AngularSize; }
172 
176  void setAngularSize( double size ) { AngularSize = size; }
177 
179  double physicalSize() const { return PhysicalSize; }
180 
184  void setPhysicalSize( double size ) { PhysicalSize = size; }
185 
187  inline dms phase() { return dms( Phase ); }
188 
190  QColor& color() { return m_Color; }
191 
193  void setColor( const QColor &c ) { m_Color = c; }
194 
196  bool isMajorPlanet() const;
197 
199  virtual double labelOffset() const;
200 
201 protected:
203  static const UID UID_SOL_BIGOBJ;
205  static const UID UID_SOL_ASTEROID;
207  static const UID UID_SOL_COMET;
208 
210  inline UID solarsysUID(UID type) const { return (SkyObject::UID_SOLARSYS << 60) | (type << 56); }
211 
220  virtual bool findGeocentricPosition( const KSNumbers *num, const KSPlanetBase *Earth=NULL ) = 0;
221 
227  virtual void findMagnitude(const KSNumbers *num) = 0;
228 
232  void findPA( const KSNumbers *num );
233 
235  virtual void findPhase();
236 
237  // Geocentric ecliptic position, but distance to the Sun
238  EclipticPosition ep;
239 
240  // Heliocentric ecliptic position referred to the equinox of the epoch
241  // as obtained from VSOP.
242  EclipticPosition helEcPos;
243  double Rearth;
244  double Phase;
245  QImage m_image;
246 
247 private:
257  void localizeCoords( const KSNumbers *num, const dms *lat, const dms *LST );
258 
259  double PositionAngle, AngularSize, PhysicalSize;
260  QColor m_Color;
261 };
262 
263 #endif
KSPlanetBase::setRearth
void setRearth(double r)
Set the distance from Earth, in AU.
Definition: ksplanetbase.h:139
KSPlanetBase::findPhase
virtual void findPhase()
Determine the phase of the planet.
Definition: ksplanetbase.cpp:277
KSPlanetBase::findPosition
void findPosition(const KSNumbers *num, const dms *lat=0, const dms *LST=0, const KSPlanetBase *Earth=0)
Find position, including correction for Figure-of-the-Earth.
Definition: ksplanetbase.cpp:122
KSPlanetBase::NEPTUNE
Definition: ksplanetbase.h:82
KSPopupMenu
The KStars Popup Menu.
Definition: kspopupmenu.h:43
KSPlanetBase::JUPITER
Definition: ksplanetbase.h:82
KSPlanetBase::MOON
Definition: ksplanetbase.h:82
KSPlanetBase::helEcLat
const dms & helEcLat() const
Definition: ksplanetbase.h:110
KSPlanetBase::findGeocentricPosition
virtual bool findGeocentricPosition(const KSNumbers *num, const KSPlanetBase *Earth=NULL)=0
find the object's current geocentric equatorial coordinates (RA and Dec) This function is pure virtua...
KSPlanetBase::setRsun
void setRsun(double r)
Set the solar distance in AU.
Definition: ksplanetbase.h:131
KSPlanetBase::m_image
QImage m_image
Definition: ksplanetbase.h:245
KSPlanetBase::UNKNOWN_PLANET
Definition: ksplanetbase.h:82
KSPlanetBase::EquatorialToEcliptic
void EquatorialToEcliptic(const dms *Obliquity)
Convert Right Ascension/Declination to Ecliptic logitude/latitude.
Definition: ksplanetbase.cpp:97
EclipticPosition::latitude
dms latitude
Definition: ksplanetbase.h:43
KSPlanetBase::MERCURY
Definition: ksplanetbase.h:82
KSPlanetBase::UID_SOL_BIGOBJ
static const UID UID_SOL_BIGOBJ
Big object.
Definition: ksplanetbase.h:203
KSPlanetBase::physicalSize
double physicalSize() const
Definition: ksplanetbase.h:179
KSPlanetBase::createPlanet
static KSPlanetBase * createPlanet(int n)
Definition: ksplanetbase.cpp:73
KSPlanetBase::Phase
double Phase
Definition: ksplanetbase.h:244
KSPlanetBase::init
void init(const QString &s, const QString &image_file, const QColor &c, double pSize)
Definition: ksplanetbase.cpp:64
KSPlanetBase::ep
EclipticPosition ep
Definition: ksplanetbase.h:238
KSPlanetBase::findPA
void findPA(const KSNumbers *num)
Determine the position angle of the planet for a given date (used internally by findPosition() ) ...
Definition: ksplanetbase.cpp:240
KSPlanetBase::setPA
void setPA(double p)
Set the Planet's position angle.
Definition: ksplanetbase.h:168
KSPlanetBase::solarsysUID
UID solarsysUID(UID type) const
Compute high 32-bits of UID.
Definition: ksplanetbase.h:210
KSPlanetBase::UID_SOL_COMET
static const UID UID_SOL_COMET
Comets.
Definition: ksplanetbase.h:207
KSPlanetBase::helEcPos
EclipticPosition helEcPos
Definition: ksplanetbase.h:242
KSPlanetBase::angSize
double angSize() const
Definition: ksplanetbase.h:171
KSPlanetBase::MARS
Definition: ksplanetbase.h:82
KSPlanetBase::~KSPlanetBase
virtual ~KSPlanetBase()
Destructor (empty)
Definition: ksplanetbase.h:78
KSPlanetBase::rsun
double rsun() const
Definition: ksplanetbase.h:126
KSPlanetBase::KSPlanetBase
KSPlanetBase(const QString &s=i18n("unnamed"), const QString &image_file=QString(), const QColor &c=Qt::white, double pSize=0)
Constructor.
Definition: ksplanetbase.cpp:57
EclipticPosition
The ecliptic position of a planet (Longitude, Latitude, and distance from Sun).
Definition: ksplanetbase.h:40
SkyObject::UID
qint64 UID
Type for Unique object IDenticator.
Definition: skyobject.h:53
KSPlanetBase::color
QColor & color()
Definition: ksplanetbase.h:190
KSPlanetBase::isMajorPlanet
bool isMajorPlanet() const
Definition: ksplanetbase.cpp:151
trailobject.h
KSPlanetBase::EclipticToEquatorial
void EclipticToEquatorial(const dms *Obliquity)
Convert Ecliptic logitude/latitude to Right Ascension/Declination.
Definition: ksplanetbase.cpp:101
dms
An angle, stored as degrees, but expressible in many ways.
Definition: dms.h:42
KSPlanetBase::updateCoords
virtual void updateCoords(KSNumbers *num, bool includePlanets=true, const dms *lat=0, const dms *LST=0, bool forceRecompute=false)
Update position of the planet (reimplemented from SkyPoint)
Definition: ksplanetbase.cpp:105
KSPlanetBase::setColor
void setColor(const QColor &c)
Set the color for the planet symbol.
Definition: ksplanetbase.h:193
EclipticPosition::longitude
dms longitude
Definition: ksplanetbase.h:42
KSPlanetBase::SATURN
Definition: ksplanetbase.h:82
KSPlanetBase::labelOffset
virtual double labelOffset() const
Definition: ksplanetbase.cpp:258
KSPlanetBase::ecLat
const dms & ecLat() const
Definition: ksplanetbase.h:94
KSPlanetBase::helEcLong
const dms & helEcLong() const
Definition: ksplanetbase.h:107
KSPlanetBase::PLUTO
Definition: ksplanetbase.h:82
KSNumbers
There are several time-dependent values used in position calculations, that are not specific to an ob...
Definition: ksnumbers.h:43
KSPlanetBase::ecLong
const dms & ecLong() const
Definition: ksplanetbase.h:91
KSPlanetBase::Planets
Planets
Definition: ksplanetbase.h:82
KSPlanetBase::setEcLat
void setEcLat(dms elat)
Set Ecliptic Geocentric Latitude according to argument.
Definition: ksplanetbase.h:104
SkyObject::type
int type(void) const
Definition: skyobject.h:164
EclipticPosition::EclipticPosition
EclipticPosition(dms plong=dms(), dms plat=dms(), double prad=0.0)
Constructor.
Definition: ksplanetbase.h:47
KSPlanetBase::rearth
double rearth() const
Definition: ksplanetbase.h:134
TrailObject
provides a SkyObject with an attachable Trail
Definition: trailobject.h:33
KSPlanetBase::setPhysicalSize
void setPhysicalSize(double size)
set the planet's physical size, in km.
Definition: ksplanetbase.h:184
EclipticPosition::radius
double radius
Definition: ksplanetbase.h:44
KSPlanetBase::pa
virtual double pa() const
Definition: ksplanetbase.h:163
KSPlanetBase
A subclass of TrailObject that provides additional information needed for most solar system objects...
Definition: ksplanetbase.h:63
KSPlanetBase::Rearth
double Rearth
Definition: ksplanetbase.h:243
KSPlanetBase::SUN
Definition: ksplanetbase.h:82
KSPlanetBase::loadData
virtual bool loadData()=0
KSPlanetBase::setEcLong
void setEcLong(dms elong)
Set Ecliptic Geocentric Longitude according to argument.
Definition: ksplanetbase.h:99
KSPlanetBase::image
const QImage & image()
Definition: ksplanetbase.h:123
KSPlanetBase::setAngularSize
void setAngularSize(double size)
set the planet's angular size, in km.
Definition: ksplanetbase.h:176
KSPlanetBase::UID_SOL_ASTEROID
static const UID UID_SOL_ASTEROID
Asteroids.
Definition: ksplanetbase.h:205
KSPlanetBase::VENUS
Definition: ksplanetbase.h:82
KSPlanetBase::planetColor
static QVector< QColor > planetColor
Definition: ksplanetbase.h:86
KSPlanetBase::URANUS
Definition: ksplanetbase.h:82
SkyObject::UID_SOLARSYS
static const UID UID_SOLARSYS
Definition: skyobject.h:59
KSPlanetBase::findMagnitude
virtual void findMagnitude(const KSNumbers *num)=0
Computes the visual magnitude for the major planets.
KSPlanetBase::phase
dms phase()
Definition: ksplanetbase.h:187
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:36:20 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kstars

Skip menu "kstars"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal