Stellarium  0.17.0
Public Member Functions
LandscapeSpherical Class Reference

This uses a single panorama image in spherical (equirectangular) projection. More...

#include <Landscape.hpp>

Public Member Functions

 LandscapeSpherical (float radius=1.f)
virtual void load (const QSettings &landscapeIni, const QString &landscapeId)
 Load landscape. More...
virtual unsigned int getMemorySize () const
 Return approximate memory footprint in bytes (required for cache cost estimate in LandscapeMgr) The returned value is only approximate, content of QStrings and other small containers like the horizon polygon are not put in in detail. More...
virtual void draw (StelCore *core)
virtual float getOpacity (Vec3d azalt) const
 Sample landscape texture for transparency/opacity. More...
void create (const QString name, const QString &maptex, const QString &_maptexFog="", const QString &_maptexIllum="", const float _angleRotateZ=0.0f, const float _mapTexTop=90.0f, const float _mapTexBottom=-90.0f, const float _fogTexTop=90.0f, const float _fogTexBottom=-90.0f, const float _illumTexTop=90.0f, const float _illumTexBottom=-90.0f)
 create a spherical landscape from basic parameters (no ini file needed). More...
- Public Member Functions inherited from Landscape
 Landscape (float _radius=2.f)
void update (double deltaTime)
void setBrightness (const float b, const float pollutionBrightness=0.0f)
 Set the brightness of the landscape plus brightness of optional add-on night lightscape. More...
float getBrightness () const
 Returns the current brightness level.
float getLightscapeBrightness () const
 Returns the lightscape brightness.
float getTargetLightscapeBrightness () const
 Returns the lightscape brighness modulated with the fader's target state (i.e. binary on/off)
float getEffectiveLightscapeBrightness () const
 Gets the currently effective lightscape brightness (modulated by the fader)
void setFlagShow (const bool b)
 Set whether landscape is displayed (does not concern fog)
bool getFlagShow () const
 Get whether landscape is displayed (does not concern fog)
float getEffectiveLandFadeValue ()
 Returns the currently effective land fade value.
void setFlagShowFog (const bool b)
 Set whether fog is displayed.
bool getFlagShowFog () const
 Get whether fog is displayed.
void setFlagShowIllumination (const bool b)
 Set whether illumination is displayed.
bool getFlagShowIllumination () const
 Get whether illumination is displayed.
void setFlagShowLabels (const bool b)
 Set whether labels are displayed.
bool getFlagShowLabels () const
 Get whether labels are displayed.
void setLabelFontSize (const int size)
 change font and fontsize for landscape labels
QString getName () const
 Get landscape name.
QString getAuthorName () const
 Get landscape author name.
QString getDescription () const
 Get landscape description.
QString getId () const
 Get landscape id. This is the landscape directory name, used for cache handling.
const StelLocationgetLocation () const
 Return the associated location (may be empty!)
bool hasLocation () const
 Return if the location is valid (a valid location has a valid planetName!)
int getDefaultBortleIndex () const
 Return default Bortle index (light pollution value) or -1 (unknown/no change)
int getDefaultFogSetting () const
 Return default fog setting (0/1) or -1 (no change)
float getDefaultAtmosphericExtinction () const
 Return default atmosperic extinction [mag/airmass], or -1 (no change)
float getDefaultAtmosphericTemperature () const
 Return configured atmospheric temperature [degrees Celsius], for refraction computation, or -1000 for "unknown/no change".
float getDefaultAtmosphericPressure () const
 Return configured atmospheric pressure [mbar], for refraction computation. More...
float getLandscapeMinimalBrightness () const
 Return minimal brightness for landscape returns -1 to signal "standard conditions" (use default value from config.ini)
void setZRotation (float d)
 Set an additional z-axis (azimuth) rotation after landscape has been loaded. More...
bool getIsFullyVisible () const
 Get whether the landscape is currently fully visible (i.e. opaque).
float getSinMinAltitudeLimit () const
 Get the sine of the limiting altitude (can be used to short-cut drawing below horizon, like star fields). There is no set here, value is only from landscape.ini.
void loadLabels (const QString &landscapeId)
 Load descriptive labels from optional file gazetteer.LANG.utf8.

Additional Inherited Members

- Public Types inherited from Landscape
enum  horizonListMode {
  azDeg_altDeg = 0, azDeg_zdDeg = 1, azRad_altRad = 2, azRad_zdRad = 3,
  azGrad_altGrad = 4, azGrad_zdGrad = 5
 The list of azimuths (counted from True North towards East) and altitudes can come in various formats. We read the first two elements, which can be of formats: More...
- Protected Member Functions inherited from Landscape
void loadCommon (const QSettings &landscapeIni, const QString &landscapeId)
 Load attributes common to all landscapes. More...
void drawLabels (StelCore *core, StelPainter *painter)
 Draw optional labels on the landscape.
void createPolygonalHorizon (const QString &lineFileName, const float polyAngleRotateZ=0.0f, const QString &listMode="azDeg_altDeg", const bool polygonInverted=false)
 Create a StelSphericalPolygon that describes a measured horizon line. More...
const QString getTexturePath (const QString &basename, const QString &landscapeId) const
 search for a texture in landscape directory, else global textures directory More...
- Protected Attributes inherited from Landscape
float radius
QString name
QString author
 Read from landscape.ini:[landscape]name.
QString description
 Read from landscape.ini:[landscape]author.
QString id
 Read from landscape.ini:[landscape]description.
float minBrightness
 Set during load. Required for consistent caching.
float landscapeBrightness
 Read from landscape.ini:[landscape]minimal_brightness. Allows minimum visibility that cannot be underpowered.
float lightScapeBrightness
 brightness [0..1] to draw the landscape. Computed by the LandscapeMgr.
bool validLandscape
 can be used to draw nightscape texture (e.g. city light pollution), if available. Computed by the LandscapeMgr.
LinearFader landFader
 was a landscape loaded properly?
LinearFader fogFader
 Used to slowly fade in/out landscape painting.
LinearFader illumFader
 Used to slowly fade in/out fog painting.
LinearFader labelFader
 Used to slowly fade in/out illumination painting.
int rows
 Used to slowly fade in/out landscape feature labels.
int cols
 horizontal rows. May be given in landscape.ini:[landscape]tesselate_rows. More indicates higher accuracy, but is slower.
float angleRotateZ
 vertical columns. May be given in landscape.ini:[landscape]tesselate_cols. More indicates higher accuracy, but is slower.
float angleRotateZOffset
 [radians] if pano does not have its left border in the east, rotate in azimuth. Configured in landscape.ini[landscape]angle_rotatez (or decor_angle_rotatez for old_style landscapes)
float sinMinAltitudeLimit
 [radians] This is a rotation changeable at runtime via setZRotation (called by LandscapeMgr::setZRotation). More...
StelLocation location
 Minimal altitude of landscape cover. Can be used to construct bounding caps, so that e.g. no stars are drawn below this altitude. Default -0.035, i.e. sin(-2 degrees).
int defaultBortleIndex
 OPTIONAL. If present, can be used to set location.
int defaultFogSetting
 May be given in landscape.ini:[location]light_pollution. Default: -1 (no change).
float defaultExtinctionCoefficient
 May be given in landscape.ini:[location]display_fog: -1(no change), 0(off), 1(on). Default: -1.
float defaultTemperature
 May be given in landscape.ini:[location]atmospheric_extinction_coefficient. Default -1 (no change).
float defaultPressure
 [Celsius] May be given in landscape.ini:[location]atmospheric_temperature. default: -1000.0 (no change)
SphericalRegionP horizonPolygon
 [mbar] May be given in landscape.ini:[location]atmospheric_pressure. Default -1.0 (compute from [location]/altitude), use -2 to indicate "no change".
Vec3f horizonPolygonLineColor
 Optional element describing the horizon line. More...
QList< LandscapeLabellandscapeLabels
 for all horizon types, the horizonPolygon line, if specified, will be drawn in this color More...
int fontSize
Vec3f labelColor
 Used for landscape labels (optionally indicating landscape features)

Detailed Description

A complete image is rectangular with the horizon forming a horizontal line centered vertically, and vertical altitude angles linearly mapped in image height. Since 0.13 and Qt5, large images of 8192x4096 pixels are available, but they still may not work on every hardware. If

angleRotateZ==0,theleft/right image border is due east. It is possible to remove empty top or bottom parts of the textures (main texture: only top part should meaningfully be cut away!) The textures should still be power-of-two, so maybe 8192x1024 for the fog, or 8192x2048 for the light pollution. (It's OK to stretch the textures. They just have to fit, geometrically!) TODO: Allow a horizontal split for 2 or even 4 parts, i.e. super-large, super-accurate panos.

Member Function Documentation

void LandscapeSpherical::create ( const QString  name,
const QString &  maptex,
const QString &  _maptexFog = "",
const QString &  _maptexIllum = "",
const float  _angleRotateZ = 0.0f,
const float  _mapTexTop = 90.0f,
const float  _mapTexBottom = -90.0f,
const float  _fogTexTop = 90.0f,
const float  _fogTexBottom = -90.0f,
const float  _illumTexTop = 90.0f,
const float  _illumTexBottom = -90.0f 
nameLandscape name
maptexthe equirectangular texture
maptexIllumthe equirectangular texture that is overlaid in the night (streetlights, skyglow, ...)
angleRotateZazimuth rotation angle, degrees [0]
_mapTexTopaltitude angle of top edge of texture, degrees [90]
_mapTexBottomaltitude angle of bottom edge of texture, degrees [-90]
_fogTexTopaltitude angle of top edge of fog texture, degrees [90]
_fogTexBottomaltitude angle of bottom edge of fog texture, degrees [-90]
_illumTexTopaltitude angle of top edge of light pollution texture, degrees [90]
_illumTexBottomaltitude angle of bottom edge of light pollution texture, degrees [-90]
virtual unsigned int LandscapeSpherical::getMemorySize ( ) const

However, texture image sizes must be computed in subclasses. The value returned is a sum of RAM and texture memory requirements.

Reimplemented from Landscape.

virtual float LandscapeSpherical::getOpacity ( Vec3d  azalt) const

May be used for visibility, sunrise etc.

azaltnormalized direction in alt-az frame
Return values
alpha(0=fully transparent, 1=fully opaque. Trees, leaves, glass etc may have intermediate values.)

Reimplemented from Landscape.

virtual void LandscapeSpherical::load ( const QSettings &  landscapeIni,
const QString &  landscapeId 
landscapeIniA reference to an existing QSettings object which describes the landscape
landscapeIdThe name of the directory for the landscape files (e.g. "ocean")

Implements Landscape.