Stellarium  26.3
Data Structures
Object Visibility Plug-in

Data Structures

class  ObjectVisibilityDialog
 Main window of the Object Visibility plug-in. More...
 
class  ObjectVisibilityMapWidget
 A MapWidget subclass that: More...
 
class  ObjectVisibility
 Main class for the Object Visibility plug-in. More...
 

Detailed Description

A plugin to visualise where on Earth a given star (or DSO) can be seen, based on the simple geometric criteria described in the Astro-Geo-GIS article "The 49 brightest stars in the night sky – when and where can we see them?".

Given a star with declination $\delta$ at the current epoch (precession + proper motion taken into account):

The plugin does not handle planets, the Sun, the Moon, asteroids, comets or artificial satellites: their motion across the sky is too fast for a single static snapshot to be useful.

The Twilight limits tab is Earth-only. It draws the equator, tropics, polar circles, and solstice latitudes where the Sun's lowest or highest altitude is -6°, -12°, or -18°. These latitudes are computed from Earth's obliquity of date, so they remain valid for historical and future epochs supported by Stellarium.


Data Structure Documentation

◆ ObjectVisibilityDialog

class ObjectVisibilityDialog

Main window of the Object Visibility plug-in.

Public Slots

void retranslate () override
 
void setVisible (bool visible) override
 
- Public Slots inherited from StelDialog
virtual void styleChanged (const QString &style)
 Apply application style change.
 
virtual void retranslate ()=0
 Retranslate the content of the dialog. More...
 
virtual void setVisible (bool)
 On the first call with "true" populates the window contents.
 
virtual void close ()
 Closes the window (the window widget is not deleted, just not visible).
 
void handleMovedTo (QPoint newPos)
 Adds dialog location to config.ini; should be connected in createDialogContent()
 
virtual void handleDialogSizeChanged (QSizeF size)
 Stores dialog sizes into config.ini; should be connected from the proxy. More...
 

Protected Member Functions

void createDialogContent () override
 Initialize the dialog widgets and connect the signals/slots.
 

Additional Inherited Members

- Signals inherited from StelDialog
void visibleChanged (bool)
 
- Public Member Functions inherited from StelDialog
 StelDialog (const QString &dialogName=QString("Default"), QObject *parent=nullptr)
 
bool visible () const
 Returns true if the dialog contents have been constructed and are currently shown.
 
QString getDialogName () const
 
- Protected Slots inherited from StelDialog
bool askConfirmation (const QString &message=q_("Are you sure? This will delete your customized data."))
 
void messageBox (const QString &title, const QString &message)
 
void enableKineticScrolling (bool b)
 enable kinetic scrolling. This should be connected to StelApp's StelGui signal flagUseKineticScrollingChanged.
 
void handleFontChanged ()
 connect from StelApp to handle font and font size changes.
 
void handleColorSchemeChanged ()
 connect from StelApp to handle CSS style changes
 
virtual void updateNightModeProperty (bool n)
 
- Static Protected Member Functions inherited from StelDialog
static void connectCheckBox (QAbstractButton *checkBox, const QString &actionName)
 Helper function to connect a checkbox to the StelAction with the specified name.
 
static void connectCheckBox (QAbstractButton *checkBox, StelAction *action)
 Helper function to connect a checkbox to the given StelAction.
 
static void connectIntProperty (QLineEdit *lineEdit, const QString &propName)
 Helper function to connect a QLineEdit to an integer StelProperty. More...
 
static void connectIntProperty (QSpinBox *spinBox, const QString &propName)
 Helper function to connect a QSpinBox to an integer StelProperty. More...
 
static void connectIntProperty (QComboBox *comboBox, const QString &propName)
 Helper function to connect a QComboBox to an integer StelProperty. More...
 
static void connectIntProperty (QSlider *slider, const QString &propName, int minValue, int maxValue)
 Helper function to connect a QSlider to an double or float StelProperty. More...
 
static void connectDoubleProperty (QDoubleSpinBox *spinBox, const QString &propName)
 Helper function to connect a QDoubleSpinBox to an double or float StelProperty. More...
 
static void connectDoubleProperty (AngleSpinBox *spinBox, const QString &propName)
 Helper function to connect an AngleSpinBox to a double or float StelProperty representing decimal degrees. More...
 
static void connectDoubleProperty (QSlider *slider, const QString &propName, double minValue, double maxValue)
 Helper function to connect a QSlider to an double or float StelProperty. More...
 
static void connectStringProperty (QComboBox *comboBox, const QString &propName)
 Helper function to connect a QComboBox to a QString StelProperty. More...
 
static void connectStringProperty (QLineEdit *lineEdit, const QString &propName)
 Helper function to connect a QLineEdit to a QString StelProperty. More...
 
static void connectBoolProperty (QAbstractButton *checkBox, const QString &propName)
 Helper function to connect a checkbox to a bool StelProperty. More...
 
static void connectBoolProperty (QGroupBox *checkBox, const QString &propName)
 Helper function to connect a groupbox to a bool StelProperty. More...
 
- Protected Attributes inherited from StelDialog
QWidget * dialog
 The main dialog.
 
class CustomProxy * proxy
 
QString dialogName
 The name should be set in derived classes' constructors and can be used to store and retrieve the panel locations.
 
QList< QWidget * > kineticScrollingList
 A list of widgets where kinetic scrolling can be activated or deactivated The list must be filled once, in the constructor or init() of fillDialog() etc. More...
 
- Properties inherited from StelDialog
bool visible
 

◆ ObjectVisibilityMapWidget

class ObjectVisibilityMapWidget

A MapWidget subclass that:

  1. Optionally gates emission of positionChanged() through a "click to set location" mode. Outside of that mode, the user can pan and zoom freely without ever moving the observer.
  2. Overlays "visibility lines" on top of the map, computed from the declination of a star/DSO.
  3. Optionally overlays Earth-only twilight/solstice latitude limits, computed from Earth's obliquity of date.

All five line types are simply parallels of geographic latitude:

  • limit-of-visibility: phi = dec +/- 90
  • good-visibility: phi = dec +/- (90 - h_good)
  • passes zenith: phi = dec
  • circumpolar (N): phi = 90 - dec
  • circumpolar (S): phi = -90 - dec

A latitude that falls outside [-90, +90] is simply not drawn.

Public Types

enum  OverlayMode { VisibilityOverlay , TwilightLimitsOverlay , LiveTwilightMapOverlay }
 

Signals

void locationPicked (double longitude, double latitude, const QColor &color)
 Forwarded to the dialog when the user clicked on the map and we were in click-to-set mode. More...
 
- Signals inherited from MapWidget
void positionChanged (double longitude, double latitude, const QColor &color)
 Signal emitted when we click on the map. It also delivers the color value at the clicked point.
 
void mapViewChanged (double centerLongitude, double centerLatitude, double zoom)
 

Public Member Functions

 ObjectVisibilityMapWidget (QWidget *parent=nullptr)
 
void setOverlayMode (OverlayMode mode)
 
OverlayMode overlayMode () const
 
void setPlaceLabels (const QVector< PlaceLabel > &labels)
 
void setPlaceLabelsVisible (bool visible)
 
void setPlaceLabelMinimumPopulation (int population)
 
void setPlaceLabelsNearLinesOnly (bool nearLinesOnly)
 
void setClickSetsLocationMode (bool on)
 Enable/disable "click on map to set observer location" mode. More...
 
bool clickSetsLocationMode () const
 
void setDeclination (double declinationDeg)
 Set the declination (degrees, current epoch) of the object to be plotted. More...
 
void setGoodVisibilityAltitude (int degrees)
 Configure the "good visibility" altitude limit (degrees). More...
 
void clearVisibility ()
 Hide all visibility lines (e.g. when no object is selected).
 
void setTwilightObliquity (double obliquityDeg)
 Set Earth obliquity of date (degrees) and draw the twilight solstice limits. More...
 
void setTwilightLimits (double obliquityDeg, double sunDeclinationDeg, bool computeDaily)
 Set Earth obliquity and optional current solar declination for twilight limits. More...
 
void clearTwilightLimits ()
 Hide all twilight/solstice limit lines.
 
void setTwilightMapData (double sunLongitudeDeg, double sunLatitudeDeg, double moonLongitudeDeg, double moonLatitudeDeg)
 Set the current subsolar and sublunar points on Earth. More...
 
void setTwilightMapFullTwilight (bool enabled)
 Enable full Earth twilight zones. More...
 
void clearTwilightMap ()
 Hide all live twilight map shading and symbols.
 
- Public Member Functions inherited from MapWidget
 MapWidget (QWidget *parent=nullptr)
 
void setMarkerPos (double longitude, double latitude)
 Set the current marker position. More...
 
void setMarkerVisible (bool visible)
 allow hiding the location arrow (if sitting on an observer)
 
void setLocationFilter (double longitude, double latitude, double searchRadius)
 Set the search circle to mark the locations available. More...
 
void setMap (const QPixmap &map)
 
void getMapView (double &centerLongitude, double &centerLatitude, double &zoom) const
 
void setMapView (double centerLongitude, double centerLatitude, double zoom)
 

Protected Member Functions

void paintEvent (QPaintEvent *event) override
 
- Protected Member Functions inherited from MapWidget
void mousePressEvent (QMouseEvent *event) override
 
void mouseMoveEvent (QMouseEvent *event) override
 
void mouseReleaseEvent (QMouseEvent *event) override
 
void wheelEvent (QWheelEvent *event) override
 
void paintEvent (QPaintEvent *event) override
 
void resizeEvent (QResizeEvent *event) override
 
int canvasWidth () const
 
int canvasHeight () const
 
LonLat mapPointToLonLat (const QPointF &mapPoint) const
 
MapPoint lonLatToMapPoint (double lon, double lat) const
 

Member Function Documentation

◆ locationPicked

void ObjectVisibilityMapWidget::locationPicked ( double  longitude,
double  latitude,
const QColor &  color 
)
signal

Forwarded to the dialog when the user clicked on the map and we were in click-to-set mode.

Mirrors MapWidget::positionChanged.

◆ setClickSetsLocationMode()

void ObjectVisibilityMapWidget::setClickSetsLocationMode ( bool  on)

Enable/disable "click on map to set observer location" mode.

In normal mode, clicks on the map do nothing (panning/zooming still work).

◆ setDeclination()

void ObjectVisibilityMapWidget::setDeclination ( double  declinationDeg)

Set the declination (degrees, current epoch) of the object to be plotted.

Pass any value outside [-90, 90] to clear and stop drawing visibility lines.

◆ setGoodVisibilityAltitude()

void ObjectVisibilityMapWidget::setGoodVisibilityAltitude ( int  degrees)

Configure the "good visibility" altitude limit (degrees).

1..89. Default is 5.

◆ setTwilightLimits()

void ObjectVisibilityMapWidget::setTwilightLimits ( double  obliquityDeg,
double  sunDeclinationDeg,
bool  computeDaily 
)

Set Earth obliquity and optional current solar declination for twilight limits.

When computeDaily is true, twilight altitude lines use sunDeclinationDeg instead of the solstice extrema.

◆ setTwilightMapData()

void ObjectVisibilityMapWidget::setTwilightMapData ( double  sunLongitudeDeg,
double  sunLatitudeDeg,
double  moonLongitudeDeg,
double  moonLatitudeDeg 
)

Set the current subsolar and sublunar points on Earth.

Longitudes and latitudes are in geographic degrees.

◆ setTwilightMapFullTwilight()

void ObjectVisibilityMapWidget::setTwilightMapFullTwilight ( bool  enabled)

Enable full Earth twilight zones.

Disable this for atmosphere-free terminator-only maps on other bodies.

◆ setTwilightObliquity()

void ObjectVisibilityMapWidget::setTwilightObliquity ( double  obliquityDeg)

Set Earth obliquity of date (degrees) and draw the twilight solstice limits.

Pass a value outside (0, 90) to clear.

◆ ObjectVisibility

class ObjectVisibility

Main class for the Object Visibility plug-in.

Public Slots

void setGoodVisibilityLimit (int degrees)
 
void setPlaceLabelsVisible (bool visible)
 
void setPlaceLabelsMinimumPopulation (int population)
 
void setPlaceLabelsNearLinesOnly (bool nearLinesOnly)
 
void setVisibilityAutoCompute (bool enabled)
 
void setSyncMaps (bool enabled)
 

Signals

void goodVisibilityLimitChanged (int degrees)
 

Public Member Functions

void init () override
 Initialize itself. More...
 
void update (double deltaTime) override
 Update the module with respect to the time. More...
 
void draw (class StelCore *core) override
 Execute all the drawing functions for this module. More...
 
double getCallOrder (StelModuleActionName actionName) const override
 Return the value defining the order of call for the given action For example if stars.callOrder[ActionDraw] == 10 and constellation.callOrder[ActionDraw] == 11, the stars module will be drawn before the constellations. More...
 
bool configureGui (bool show=true) override
 Detect or show the configuration GUI elements for the module. More...
 
void restoreDefaultSettings ()
 Restore default settings to config.ini and reload them.
 
void loadSettings ()
 Load settings from config.ini ("ObjectVisibility/..." section).
 
int getGoodVisibilityLimit () const
 
bool getPlaceLabelsVisible () const
 
int getPlaceLabelsMinimumPopulation () const
 
bool getPlaceLabelsNearLinesOnly () const
 
bool getVisibilityAutoCompute () const
 
bool getSyncMaps () const
 
- Public Member Functions inherited from StelModule
 StelModule ()
 Constructor. Every derived class MUST call setObjectName(className) in its constructor.
 
virtual void deinit ()
 Called before the module will be deleted, and before the OpenGL context is suppressed. More...
 
virtual QSettings * getSettings ()
 Return module-specific settings. More...
 
virtual QString getModuleVersion () const
 Get the version of the module, default is stellarium main version.
 
virtual QString getAuthorName () const
 Get the name of the module author.
 
virtual QString getAuthorEmail () const
 Get the email address of the module author.
 
virtual void handleMouseClicks (class QMouseEvent *)
 Handle mouse clicks. More...
 
virtual void handleMouseWheel (class QWheelEvent *)
 Handle mouse wheel. More...
 
virtual bool handleMouseMoves (int x, int y, Qt::MouseButtons b)
 Handle mouse moves. More...
 
virtual void handleKeys (class QKeyEvent *e)
 Handle key events. More...
 
virtual bool handlePinch (qreal scale, bool started)
 Handle pinch gesture events. More...
 

Properties

int goodVisibilityLimit
 degrees, range [1, 89]
 

Additional Inherited Members

- Public Types inherited from StelModule
enum  StelModuleSelectAction { AddToSelection , ReplaceSelection , RemoveFromSelection }
 Enum used when selecting objects to define whether to add to, replace, or remove from the existing selection list. More...
 
enum  StelModuleActionName {
  ActionDraw , ActionUpdate , ActionHandleMouseClicks , ActionHandleMouseMoves ,
  ActionHandleKeys
}
 Define the possible action for which an order is defined. More...
 
- Protected Member Functions inherited from StelModule
class StelAction * addAction (const QString &id, const QString &groupId, const QString &text, QObject *target, const char *slot, const QString &shortcut="", const QString &altShortcut="")
 convenience methods to add an action (call to slot) to the StelActionMgr object. More...
 
class StelAction * addAction (const QString &id, const QString &groupId, const QString &text, const char *slot, const QString &shortcut="", const QString &altShortcut="")
 convenience methods to add an action (call to own slot) to the StelActionMgr object. More...
 
StelAction * addAction (const QString &id, const QString &groupId, const QString &text, QObject *contextObject, std::function< void()> lambda, const QString &shortcut="", const QString &altShortcut="")
 convenience methods to add an action (call to Lambda functor) to the StelActionMgr object. More...
 

Member Function Documentation

◆ configureGui()

bool ObjectVisibility::configureGui ( bool  show = true)
overridevirtual

Detect or show the configuration GUI elements for the module.

This is to be used with plugins to display a configuration dialog from the plugin list window.

Parameters
showif true, make the configuration GUI visible. If false, hide the config GUI if there is one.
Returns
true if the module has a configuration GUI, else false.

Reimplemented from StelModule.

◆ draw()

void ObjectVisibility::draw ( class StelCore *  core)
inlineoverridevirtual

Execute all the drawing functions for this module.

Parameters
corethe core to use for the drawing

Reimplemented from StelModule.

◆ getCallOrder()

double ObjectVisibility::getCallOrder ( StelModuleActionName  actionName) const
overridevirtual

Return the value defining the order of call for the given action For example if stars.callOrder[ActionDraw] == 10 and constellation.callOrder[ActionDraw] == 11, the stars module will be drawn before the constellations.

Parameters
actionNamethe name of the action for which we want the call order
Returns
the value defining the order. The closer to 0 the earlier the module's action will be called

Reimplemented from StelModule.

◆ init()

void ObjectVisibility::init ( )
overridevirtual

Initialize itself.

If the initialization takes significant time, the progress should be displayed on the loading bar.

Implements StelModule.

◆ update()

void ObjectVisibility::update ( double  deltaTime)
inlineoverridevirtual

Update the module with respect to the time.

Parameters
deltaTimethe time increment in second since last call.

Reimplemented from StelModule.