Stellarium
24.3
|
contains general purpose utility functions. More...
Data Structures | |
struct | binary_function |
Functions | |
QString | getApplicationName () |
Return the full name of stellarium, i.e. "Stellarium 23.1". | |
QString | getApplicationVersion () |
Return the version of stellarium, i.e. "23.1.0". | |
QString | getApplicationPublicVersion () |
Return the public version of stellarium, i.e. "23.1". | |
QString | getApplicationSeries () |
Return the series of stellarium, i.e. "23.0". | |
QString | getOperatingSystemInfo () |
Return the name and the version of operating system, i.e. "macOS 12.5". | |
QString | getUserAgentString () |
Return the user agent name, i.e. "Stellarium/0.15.0 (Linux)". | |
const QString | getEndLineChar () |
double | hmsToHours (const unsigned int h, const unsigned int m, const double s) |
Convert hours, minutes, seconds to decimal hours. | |
double | hmsToRad (const unsigned int h, const unsigned int m, const double s) |
Convert an angle in hms format to radian. More... | |
double | dmsToRad (const int d, const unsigned int m, const double s) |
Convert an angle in +-dms format to radian. More... | |
void | radToHms (double rad, unsigned int &h, unsigned int &m, double &s) |
Convert an angle in radian to hms format. More... | |
void | radToDms (double rad, bool &sign, unsigned int &d, unsigned int &m, double &s) |
Convert an angle in radian to +-dms format. More... | |
void | radToDecDeg (double rad, bool &sign, double °) |
Convert an angle in radian to decimal degree. More... | |
QString | radToDecDegStr (const double angle, const int precision=4, const bool useD=false, const bool positive=false) |
Convert an angle in radian to a decimal degree string. More... | |
QString | radToHmsStrAdapt (const double angle) |
Convert an angle in radian to a hms formatted string. More... | |
QString | radToHmsStr (const double angle, const bool decimal=false) |
Convert an angle in radian to a hms formatted string. More... | |
QString | radToDmsStrAdapt (const double angle, const bool useD=false) |
Convert an angle in radian to a dms formatted string. More... | |
QString | radToDmsStr (const double angle, const bool decimal=false, const bool useD=false) |
Convert an angle in radian to a dms formatted string. More... | |
QString | radToDmsPStr (const double angle, const int precision=0, const bool useD=false) |
Convert an angle in radian to a dms formatted string. More... | |
void | decDegToDms (double angle, bool &sign, unsigned int &d, unsigned int &m, double &s) |
Convert an angle in decimal degree to +-dms format. More... | |
QString | decDegToDmsStr (const double angle) |
Convert an angle in decimal degrees to a dms formatted string. More... | |
QString | decDegToLatitudeStr (const double latitude, bool dms=true) |
Convert latitude in decimal degrees to a dms formatted string or use decimal values. More... | |
QString | decDegToLongitudeStr (const double longitude, bool eastPositive=true, bool semiSphere=true, bool dms=true) |
Convert longitude in decimal degrees to a dms formatted string. More... | |
double | dmsStrToRad (const QString &s) |
Convert a dms formatted string to an angle in radian. More... | |
void | spheToRect (const double lng, const double lat, Vec3d &v) |
Convert from spherical coordinates to Rectangular direction. More... | |
void | spheToRect (const float lng, const float lat, Vec3f &v) |
Convert from spherical coordinates to Rectangular direction. More... | |
void | spheToRect (const double lng, const double lat, Vec3f &v) |
Convert from spherical coordinates to Rectangular direction. More... | |
void | spheToRect (const float lng, const float lat, Vec3d &v) |
Convert from spherical coordinates to Rectangular direction. More... | |
void | rectToSphe (double *lng, double *lat, const Vec3d &v) |
Convert from Rectangular direction to spherical coordinate components. More... | |
void | rectToSphe (float *lng, float *lat, const Vec3d &v) |
Convert from Rectangular direction to spherical coordinate components. More... | |
void | rectToSphe (float *lng, float *lat, const Vec3f &v) |
Convert from Rectangular direction to spherical coordinate components. More... | |
void | rectToSphe (double *lng, double *lat, const Vec3f &v) |
Convert from Rectangular direction to spherical coordinate components. More... | |
void | spheToRect (const double lng, const double lat, const double r, Vec3d &v) |
Convert from spherical coordinates (including distance) to Rectangular direction. More... | |
void | rectToSphe (double *lng, double *lat, double *r, const Vec3d &v) |
Convert from Rectangular direction to spherical coordinate components (including distance). More... | |
void | equToEcl (const double raRad, const double decRad, const double eclRad, double *lambdaRad, double *betaRad) |
Coordinate Transformation from equatorial to ecliptical. | |
void | eclToEqu (const double lambdaRad, const double betaRad, const double eclRad, double *raRad, double *decRad) |
Coordinate Transformation from ecliptical to equatorial. | |
double | getDecAngle (const QString &str) |
Convert a string longitude, latitude, RA or declination angle to radians. More... | |
bool | isPowerOfTwo (const int value) |
Check if a number is a power of 2. | |
int | getBiggerPowerOfTwo (int value) |
Return the smallest power of two greater than or equal to the given value. | |
int | getSmallerPowerOfTwo (const int value) |
Return the largest power of two smaller than or equal to the given value. | |
double | asinh (const double z) |
Return the inverse sinus hyperbolic of z. | |
int | imod (const int a, const int b) |
Integer modulo where the result is always nonnegative. [0..b-1]. | |
int | amod (const int a, const int b) |
Integer modulo where the result is always positive. [1..b]. | |
int | amod (const int x, const int a, const int b) |
Integer interval modulo. [a..b) | |
double | fmodpos (const double a, const double b) |
Double modulo where the result is always nonnegative. [0..(b. | |
float | fmodpos (const float a, const float b) |
Float modulo where the result is always nonnegative. [0..(b. | |
int | intFloorDiv (int num, int den) |
Floor integer division provides truncating to the next lower integer, also for negative numerators. More... | |
int | intFloorDivLL (qint64 num, qint64 den) |
version of intFloorDiv() for large integers. | |
void | getDateFromJulianDay (const double julianDay, int *year, int *month, int *day) |
Extract from julianDay a year, month, day for the Julian Date julianDay represents. More... | |
void | getTimeFromJulianDay (const double julianDay, int *hour, int *minute, int *second, int *millis=Q_NULLPTR, bool *wrapDay=Q_NULLPTR) |
Extract from julianDay an hour, minute, second. More... | |
void | getDateTimeFromJulianDay (const double julianDay, int *year, int *month, int *day, int *hour, int *minute, int *second, int *millis=Q_NULLPTR) |
Extract from julianDay a year, month, day, hour, minute, second and (optional) millisecond for the Julian Day julianDay represents. More... | |
double | getHoursFromJulianDay (const double julianDay) |
Make hours (decimal format) from julianDay. | |
bool | getDateTimeFromISO8601String (const QString &iso8601Date, int *y, int *m, int *d, int *h, int *min, float *s) |
Parse an ISO8601 date string. More... | |
QString | julianDayToISO8601String (const double jd, bool addMS=false) |
Format the given Julian Day in (UTC) ISO8601 date string. More... | |
double | getJulianDayFromISO8601String (const QString &iso8601Date, bool *ok) |
Return the Julian Date matching the ISO8601 date string. More... | |
QString | localeDateString (const int year, const int month, const int day, const int dayOfWeek, const QString &fmt) |
Format the date and day-of-week per the format in fmt (see QDateTime::toString()). More... | |
QString | localeDateString (const int year, const int month, const int day, const int dayOfWeek) |
Format the date and day-of-week per the system locale's QLocale::ShortFormat. More... | |
int | getDayOfWeek (int year, int month, int day) |
Return a day number of week for date. More... | |
int | getDayOfWeek (double JD) |
QString | localeDiscoveryDateString (const QString &discovery) |
Format the discovery date. More... | |
double | getJDFromSystem () |
Get the current Julian Date from system time. More... | |
double | getJDFromBesselianEpoch (const double epoch) |
Get the Julian Day Number (JD) from Besselian epoch. More... | |
double | qTimeToJDFraction (const QTime &time) |
Convert a time of day to the fraction of a Julian Day. More... | |
QTime | jdFractionToQTime (const double jd) |
Convert a fraction of a Julian Day to a QTime. | |
double | qDateTimeToJd (const QDateTime &dateTime) |
Convert a QT QDateTime class to julian day. More... | |
QDateTime | jdToQDateTime (const double &jd, const Qt::TimeSpec timeSpec) |
Convert a Julian Day number to a QDateTime. More... | |
bool | getJDFromDate (double *newjd, const int y, const int m, const int d, const int h, const int min, const float s) |
Compute Julian day number from calendar date. More... | |
int | numberOfDaysInMonthInYear (const int month, const int year) |
bool | isLeapYear (const int year) |
int | dayInYear (const int year, const int month, const int day) |
Find day number for date in year. More... | |
Vec3i | dateFromDayYear (const int day, const int year) |
Find date from day number within year and the year. More... | |
double | yearFraction (const int year, const int month, const double day) |
Return a fractional year like YYYY.ddddd. For negative years, the year number is decreased. E.g. -500.5 occurs in -501. | |
bool | changeDateTimeForRollover (int oy, int om, int od, int oh, int omin, int os, int *ry, int *rm, int *rd, int *rh, int *rmin, int *rs) |
void | debugQVariantMap (const QVariant &m, const QString &indent="", const QString &key="") |
Output a QVariantMap to qDebug(). Formats like a tree where there are nested objects. | |
float | fastAcos (const float x) |
Compute acos(x) The taylor serie is not accurate around x=1 and x=-1. | |
float | fastExp (const float x) |
Compute exp(x) for small exponents x. | |
QString | hoursToHmsStr (const double hours, const bool lowprecision=false) |
Convert decimal hours to hours, minutes, seconds. | |
QString | hoursToHmsStr (const float hours, const bool lowprecision=false) |
QString | getHoursMinutesFromJulianDay (const double julianDay) |
Convert JD to hours and minutes. | |
double | hmsStrToHours (const QString &s) |
Convert a hms formatted string to decimal hours. | |
QString | daysFloatToDHMS (float days) |
Convert days (float) to a time string. | |
QString | wrapText (const QString &s, const int limit=52) |
The method to splitting the text by substrings by some limit of string length. | |
double | getDeltaTwithoutCorrection (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByEspenakMeeus (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByEspenakMeeusModified (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTBySchoch (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByClemence (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByIAU (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByAstronomicalEphemeris (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByTuckermanGoldstine (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByMullerStephenson (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByStephenson1978 (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByStephenson1997 (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTBySchmadelZech1979 (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByMorrisonStephenson1982 (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByStephensonMorrison1984 (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByStephensonMorrison1995 (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByStephensonHoulden (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByEspenak (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByBorkowski (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTBySchmadelZech1988 (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByChaprontTouze (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByJPLHorizons (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByMorrisonStephenson2004 (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByReijs (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByChaprontMeeus (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByMeeusSimons (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByMontenbruckPfleger (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByReingoldDershowitz (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByBanjevic (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByIslamSadiqQureshi (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByKhalidSultanaZaidi (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getDeltaTByStephensonMorrisonHohenkerk2016 (const double jDay) |
Get Delta-T estimation for a given date. More... | |
double | getMoonSecularAcceleration (const double jDay, const double ndot, const bool useDE4xx) |
Get Secular Acceleration estimation for a given year. More... | |
double | getDeltaTStandardError (const double jDay) |
Get the standard error (sigma) for the value of DeltaT. More... | |
double | getMoonFluctuation (const double jDay) |
Get value of the Moon fluctuation Source: The Rotation of the Earth, and the Secular Accelerations of the Sun, Moon and Planets Spencer Jones, H. More... | |
template<typename T > | |
int | sign (T val) |
Sign function from http://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum-sgn-in-c-c. | |
float * | ComputeCosSinTheta (const unsigned int slices) |
Compute cosines and sines around a circle which is split in "slices" parts. More... | |
float * | ComputeCosSinRho (const unsigned int segments) |
Compute cosines and sines around a half-circle which is split in "segments" parts. More... | |
float * | ComputeCosSinRhoZone (const float dRho, const unsigned int segments, const float minAngle) |
Compute cosines and sines around part of a circle (from top to bottom) which is split in "segments" parts. More... | |
int | getFixedFromGregorian (const int year, const int month, const int day) |
Calculate fixed days (R.D.) from Gregorian date (proleptic Gregorian calendar) More... | |
int | compareVersions (const QString v1, const QString v2) |
Comparison two string versions and return a result in range -1,0,1. More... | |
QByteArray | uncompress (const QByteArray &data) |
Uncompress gzip or zlib compressed data. | |
QByteArray | uncompress (QIODevice &device, qint64 maxBytes=-1) |
Uncompress (gzip/zlib) data from this QIODevice, which must be open and readable. More... | |
int | gcd (int a, int b) |
Greatest Common Divisor (Euclid's algorithm) More... | |
int | lcm (int a, int b) |
Least Common Multiple. More... | |
template<class T > | |
T | interpolate3 (T n, T y1, T y2, T y3) |
Given regularly spaced steps x1, x2, x3 and curve values y1, y2, y3, calculate an intermediate value of the 3 arguments for the given interpolation point n. More... | |
template<class T > | |
T | interpolate5 (T n, T y1, T y2, T y3, T y4, T y5) |
Given regularly spaced steps x1, x2, x3, x4, x5 and curve values y1, y2, y3, y4, y5, calculate an intermediate value of the 5 arguments for the given interpolation point n. More... | |
template<typename T > | |
bool | isWithin (const T &value, const T &low, const T &high) |
Interval test. This checks whether. More... | |
double | trunc (double x) |
float | trunc (float x) |
contains general purpose utility functions.
struct StelUtils::binary_function |
int StelUtils::compareVersions | ( | const QString | v1, |
const QString | v2 | ||
) |
Comparison two string versions and return a result in range -1,0,1.
v1 | string for version 1 |
v2 | string for version 2 |
float* StelUtils::ComputeCosSinRho | ( | const unsigned int | segments | ) |
Compute cosines and sines around a half-circle which is split in "segments" parts.
Values are stored in the global static array cos_sin_rho. Used for the sin/cos values along a meridian for a spherical mesh.
segments | number of partitions (elsewhere called "stacks") for the half-circle |
float* StelUtils::ComputeCosSinRhoZone | ( | const float | dRho, |
const unsigned int | segments, | ||
const float | minAngle | ||
) |
Compute cosines and sines around part of a circle (from top to bottom) which is split in "segments" parts.
Values are stored in the global static array cos_sin_rho. Used for the sin/cos values along a meridian. This allows leaving away pole caps. The array now contains values for the region minAngle+segments*phi
dRho | a difference angle between the stops |
segments | number of segments |
minAngle | start angle inside the half-circle. maxAngle=minAngle+segments*phi |
float* StelUtils::ComputeCosSinTheta | ( | const unsigned int | slices | ) |
Compute cosines and sines around a circle which is split in "slices" parts.
Values are stored in the global static array cos_sin_theta. Used for the sin/cos values along a latitude circle, equator, etc. for a spherical mesh.
slices | number of partitions (elsewhere called "segments") for the circle |
Vec3i StelUtils::dateFromDayYear | ( | const int | day, |
const int | year | ||
) |
Find date from day number within year and the year.
Meeus, AA 2nd, 1998, ch.7 p.66
int StelUtils::dayInYear | ( | const int | year, |
const int | month, | ||
const int | day | ||
) |
Find day number for date in year.
Meeus, Astronomical Algorithms 2nd ed., 1998, ch.7, p.65
void StelUtils::decDegToDms | ( | double | angle, |
bool & | sign, | ||
unsigned int & | d, | ||
unsigned int & | m, | ||
double & | s | ||
) |
Convert an angle in decimal degree to +-dms format.
angle | input angle in decimal degree |
sign | true if positive, false otherwise |
d | degree component |
m | minute component |
s | second component |
QString StelUtils::decDegToDmsStr | ( | const double | angle | ) |
Convert an angle in decimal degrees to a dms formatted string.
angle | input angle in decimal degrees |
QString StelUtils::decDegToLatitudeStr | ( | const double | latitude, |
bool | dms = true |
||
) |
Convert latitude in decimal degrees to a dms formatted string or use decimal values.
latitude | in decimal degrees |
dms | set true to use DMS formatted string |
QString StelUtils::decDegToLongitudeStr | ( | const double | longitude, |
bool | eastPositive = true , |
||
bool | semiSphere = true , |
||
bool | dms = true |
||
) |
Convert longitude in decimal degrees to a dms formatted string.
longitude | in decimal degrees |
eastPositive | set true to counting East direction positive |
semiSphere | set true to use -180..180 degrees range (0..360 degrees otherwise) |
dms | set true to use DMS formatted string |
double StelUtils::dmsStrToRad | ( | const QString & | s | ) |
Convert a dms formatted string to an angle in radian.
s | The input string |
|
inline |
Convert an angle in +-dms format to radian.
d | degree component |
m | arcmin component |
s | arcsec component |
int StelUtils::gcd | ( | int | a, |
int | b | ||
) |
Greatest Common Divisor (Euclid's algorithm)
a | first number |
b | second number |
void StelUtils::getDateFromJulianDay | ( | const double | julianDay, |
int * | year, | ||
int * | month, | ||
int * | day | ||
) |
Extract from julianDay a year, month, day for the Julian Date julianDay represents.
bool StelUtils::getDateTimeFromISO8601String | ( | const QString & | iso8601Date, |
int * | y, | ||
int * | m, | ||
int * | d, | ||
int * | h, | ||
int * | min, | ||
float * | s | ||
) |
Parse an ISO8601 date string.
Also handles negative and distant years.
void StelUtils::getDateTimeFromJulianDay | ( | const double | julianDay, |
int * | year, | ||
int * | month, | ||
int * | day, | ||
int * | hour, | ||
int * | minute, | ||
int * | second, | ||
int * | millis = Q_NULLPTR |
||
) |
Extract from julianDay a year, month, day, hour, minute, second and (optional) millisecond for the Julian Day julianDay represents.
This is the preferred method of complete decoding of a Julian day number.
int StelUtils::getDayOfWeek | ( | int | year, |
int | month, | ||
int | day | ||
) |
Return a day number of week for date.
double StelUtils::getDecAngle | ( | const QString & | str | ) |
Convert a string longitude, latitude, RA or declination angle to radians.
str | the angle in a format according to: angle ::= [sign¹] ( real [degs | mins | secs] | [integer degs] ( [integer mins] real secs | real mins ) ) [cardinal¹] sign ::= + | - digit := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 integer ::= digit [digits] real ::= integer [. integer] degs ::= d | h² | U+00B0 | U+00BA³ mins ::= m | ' secs ::= s | " cardinal ::= N² | S² | E | W ¹) A cardinal point overrides any sign. N and E result in a positive, W and S in a negative angle. ²) The use of the cardinal points N and S together with the hour sign 'H' or 'h' is forbidden. ³) The MASCULINE ORDINAL INDICATOR U+00BA is accepted, considering Spanish QWERTY keyboards. The string is parsed without regarding to case, except that, after a single real, a solitary 's' indicates seconds whereas an 'S' indicates South. It is highly recommended to use lower case for hdms and upper case for NSEW. Latitude: North is positive, South is negative. Longitude: East is positive, West is negative. |
double StelUtils::getDeltaTByAstronomicalEphemeris | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Astronomical Ephemeris (1960) for DeltaT computation. Sources: Spencer Jones, H., "The Rotation of the Earth, and the Secular Accelerations of the Sun, Moon and Planets", Monthly Notices of the Royal Astronomical Society, 99 (1939), 541-558 http://adsabs.harvard.edu/abs/1939MNRAS..99..541S or Explanatory Supplement to the Astr. Ephemeris, 1961, p.87. Also used by Mucke&Meeus, Canon of Solar Eclipses, Vienna 1983.
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByBanjevic | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Banjevic (2006) for DeltaT computation. Source: Ancient eclipses and dating the fall of Babylon Banjevic, B. Publications of the Astronomical Observatory of Belgrade, Vol. 80, p. 251-257 (2006) 2006POBeo..80..251B [http://adsabs.harvard.edu/abs/2006POBeo..80..251B]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByBorkowski | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Borkowski (1988) for DeltaT computation. Source: ELP 2000-85 and the dynamic time-universal time relation Borkowski, K. M. Astronomy and Astrophysics (ISSN 0004-6361), vol. 205, no. 1-2, Oct. 1988, p. L8-L10. 1988A&A...205L...8B [http://adsabs.harvard.edu/abs/1988A&A...205L...8B]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByChaprontMeeus | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Chapront, Chapront-Touze & Francou (1997) & Meeus (1998) for DeltaT computation
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByChaprontTouze | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Chapront-Touzé & Chapront (1991) for DeltaT computation
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByClemence | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Clemence (1948) for DeltaT computation, outdated but may be useful for science-historical purposes. Source: On the system of astronomical constants. Clemence, G. M. Astronomical Journal, Vol. 53, p. 169 1948AJ.....53..169C [http://adsabs.harvard.edu/abs/1948AJ.....53..169C]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByEspenak | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Espenak (1987, 1989) for DeltaT computation. This relation should not be used before around 1950 or after around 2100 (Espenak, pers. comm.).
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByEspenakMeeus | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Note that this method is recommended for the year range: -1999 to +3000. It gives details for -500...+2150. Implementation of algorithm by Espenak & Meeus (2006) for DeltaT computation
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByEspenakMeeusModified | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Note that this method is recommended for the year range: -1999 to +3000. It gives details for -500...+2150. Implementation of algorithm by Espenak & Meeus (2006) with modified formulae for DeltaT computation
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByIAU | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by IAU (1952) for DeltaT computation, outdated but may be useful for science-historical purposes. Source: Spencer Jones, H., "The Rotation of the Earth, and the Secular Accelerations of the Sun, Moon and Planets", Monthly Notices of the Royal Astronomical Society, 99 (1939), 541-558 http://adsabs.harvard.edu/abs/1939MNRAS..99..541S
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByIslamSadiqQureshi | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Islam, Sadiq & Qureshi (2008 + revisited 2013) for DeltaT computation. Source: Error Minimization of Polynomial Approximation of DeltaT Islam, S. & Sadiq, M. & Qureshi, M. S. Journal of Astrophysics & Astronomy, Vol. 29, p. 363-366 (2008) http://www.ias.ac.in/jaa/dec2008/JAA610.pdf Note: These polynomials are based on the uncorrected deltaT table from the Astronomical Almanac, thus ndot = -26.0 arcsec/cy^2. Meeus & Simons (2000) corrected the deltaT table for years before 1955.5 using ndot = -25.7376 arcsec/cy^2. Therefore the accuracies stated by Meeus & Simons are correct and cannot be compared with accuracies from Islam & Sadiq & Qureshi.
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByJPLHorizons | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of the "historical" part of the algorithm by JPL Horizons for DeltaT computation.
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByKhalidSultanaZaidi | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of polynomial approximation of time period 1620-2013 for DeltaT by M. Khalid, Mariam Sultana and Faheem Zaidi (2014). Source: Delta T: Polynomial Approximation of Time Period 1620-2013 Journal of Astrophysics, Vol. 2014, Article ID 480964 https://doi.org/10.1155/2014/480964
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByMeeusSimons | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Meeus & Simons (2000) for DeltaT computation. Source: Polynomial approximations to Delta T, 1620-2000 AD Meeus, J.; Simons, L. Journal of the British Astronomical Association, vol.110, no.6, 323 2000JBAA..110..323M [http://adsabs.harvard.edu/abs/2000JBAA..110..323M]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByMontenbruckPfleger | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Montenbruck & Pfleger (2000) for DeltaT computation, a data fit through the table of values found in Meeus, Astronomical algorithms (1991). Book "Astronomy on the Personal Computer" by O. Montenbruck & T. Pfleger (4th ed., 2000), p.181-182
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByMorrisonStephenson1982 | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Morrison & Stephenson (1982) for DeltaT computation
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByMorrisonStephenson2004 | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Morrison & Stephenson (2004, 2005) for DeltaT computation. Sources: Historical values of the Earth's clock error ΔT and the calculation of eclipses Morrison, L. V.; Stephenson, F. R. Journal for the History of Astronomy (ISSN 0021-8286), Vol. 35, Part 3, No. 120, p. 327 - 336 (2004) 2004JHA....35..327M [http://adsabs.harvard.edu/abs/2004JHA....35..327M] Addendum: Historical values of the Earth's clock error Morrison, L. V.; Stephenson, F. R. Journal for the History of Astronomy (ISSN 0021-8286), Vol. 36, Part 3, No. 124, p. 339 (2005) 2005JHA....36..339M [http://adsabs.harvard.edu/abs/2005JHA....36..339M]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByMullerStephenson | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Muller & Stephenson (1975) for DeltaT computation. Source: The accelerations of the earth and moon from early astronomical observations Muller, P. M.; Stephenson, F. R. Growth rhythms and the history of the earth's rotation; Proceedings of the Interdisciplinary Winter Conference on Biological Clocks and Changes in the Earth's Rotation: Geophysical and Astronomical Consequences, Newcastle-upon-Tyne, England, January 8-10, 1974. (A76-18126 06-46) London, Wiley-Interscience, 1975, p. 459-533; Discussion, p. 534. 1975grhe.conf..459M [http://adsabs.harvard.edu/abs/1975grhe.conf..459M]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByReijs | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Reijs (2006) for DeltaT computation Details: http://www.iol.ie/~geniet/eng/DeltaTeval.htm
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByReingoldDershowitz | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Reingold & Dershowitz (1997, 2001, 2002, 2007, 2018) for DeltaT computation. This is again mostly a data fit based on the table in Meeus, Astronomical Algorithms (1991). This is the version given in the 4th edition ("the ultimate edition"; 2018) which added the fit for -500..1699 and 2006..2150 omitted from previous editions. Calendrical Calculations: The Ultimate Edition / Edward M. Reingold, Nachum Dershowitz - 4th Edition, Cambridge University Press, 2018. - 660p. ISBN: 9781107057623, DOI: 10.1017/9781107415058
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTBySchmadelZech1979 | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Schmadel & Zech (1979) for DeltaT computation. Outdated, but may be useful for science-historical purposes. Source: Polynomial approximations for the correction delta T E.T.-U.T. in the period 1800-1975 Schmadel, L. D.; Zech, G. Acta Astronomica, vol. 29, no. 1, 1979, p. 101-104. 1979AcA....29..101S [http://adsabs.harvard.edu/abs/1979AcA....29..101S]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTBySchmadelZech1988 | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Schmadel & Zech (1988) for DeltaT computation. Source: Empirical Transformations from U.T. to E.T. for the Period 1800-1988 Schmadel, L. D.; Zech, G. Astronomische Nachrichten 309, 219-221 1988AN....309..219S [http://adsabs.harvard.edu/abs/1988AN....309..219S]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTBySchoch | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Schoch (1931) for DeltaT computation, outdated but may be useful for science-historical purposes. Source: Schoch, C. (1931). Die sekulare Accelaration des Mondes und der Sonne. Astronomische Abhandlungen, Ergnzungshefte zu den Astronomischen Nachrichten, Band 8, B2. Kiel.
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByStephenson1978 | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Stephenson (1978) for DeltaT computation. Source: Pre-Telescopic Astronomical Observations Stephenson, F. R. Tidal Friction and the Earth's Rotation, Proceedings of a Workshop, held in Bielefeld, September 26-30, 1977, Edited by P. Brosche, and J. Sundermann. Berlin: Springer-Verlag, 1978, p.5 1978tfer.conf....5S [http://adsabs.harvard.edu/abs/1978tfer.conf....5S]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByStephenson1997 | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Stephenson (1997) for DeltaT computation. Source: Book "Historical Eclipses and Earth's Rotation" by F. R. Stephenson (1997) http://ebooks.cambridge.org/ebook.jsf?bid=CBO9780511525186
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByStephensonHoulden | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Stephenson & Houlden (1986) for DeltaT computation Source: STEPHENSON F.R and HOULDEN M.A. - Atlas of Historical Eclipse Maps - Cambridge Univ.Press. (1986) [https://assets.cambridge.org/97805212/67236/frontmatter/9780521267236_frontmatter.pdf]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByStephensonMorrison1984 | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Stephenson & Morrison (1984) for DeltaT computation Source: Long-term changes in the rotation of the earth - 700 B.C. to A.D. 1980. Stephenson, F. R.; Morrison, L. V. Philosophical Transactions, Series A (ISSN 0080-4614), vol. 313, no. 1524, Nov. 27, 1984, p. 47-70. 1984RSPTA.313...47S [http://adsabs.harvard.edu/abs/1984RSPTA.313...47S]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByStephensonMorrison1995 | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Stephenson & Morrison (1995) for DeltaT computation Source: Long-Term Fluctuations in the Earth's Rotation: 700 BC to AD 1990. Stephenson, F. R.; Morrison, L. V. Philosophical Transactions: Physical Sciences and Engineering, Volume 351, Issue 1695, pp. 165-202 1995RSPTA.351..165S [http://adsabs.harvard.edu/abs/1995RSPTA.351..165S]
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByStephensonMorrisonHohenkerk2016 | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of a spline approximation for time period -720-2019.0 for DeltaT by Stephenson, Morrison and Hohenkerk (2016). Source: Measurement of the Earth's rotation: 720 BC to AD 2015, published in 2016 in the Royal Society's Proceedings A 472, and made freely available via Open Access, by Stephenson, F.R., Morrison, L.V. and Hohenkerk, C.Y.. https://doi.org/10.1098/rspa.2016.0404 Addendum 2020 to "Measurement of the Earth's Rotation: 720 BC to AD 2015", published in 2021 February in the Royal Society's Proceedings A 478, by Morrison, L. V., Stephenson, F.R., Hohenkerk, C.Y. and M. Zawilski, M.. https://doi.org/10.1098/rspa.2020.0776
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTByTuckermanGoldstine | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
Implementation of algorithm by Tuckerman (1962, 1964) & Goldstine (1973) for DeltaT computation
jDay | the date and time expressed as a Julian day |
double StelUtils::getDeltaTStandardError | ( | const double | jDay | ) |
Get the standard error (sigma) for the value of DeltaT.
jDay | the JD |
double StelUtils::getDeltaTwithoutCorrection | ( | const double | jDay | ) |
Get Delta-T estimation for a given date.
This is just an "empty" correction function, returning 0.
int StelUtils::getFixedFromGregorian | ( | const int | year, |
const int | month, | ||
const int | day | ||
) |
Calculate fixed days (R.D.) from Gregorian date (proleptic Gregorian calendar)
year | |
month | |
day |
double StelUtils::getJDFromBesselianEpoch | ( | const double | epoch | ) |
Get the Julian Day Number (JD) from Besselian epoch.
epoch | Besselian epoch, expressed as year |
bool StelUtils::getJDFromDate | ( | double * | newjd, |
const int | y, | ||
const int | m, | ||
const int | d, | ||
const int | h, | ||
const int | min, | ||
const float | s | ||
) |
Compute Julian day number from calendar date.
Uses QDate functionality if possible, but also works for negative JD. Dates before 1582-10-15 are in the Julian Calendar.
newjd | pointer to JD |
y | Calendar year. |
m | month, 1=January ... 12=December |
d | day |
h | hour |
min | minute |
s | second |
double StelUtils::getJDFromSystem | ( | ) |
Get the current Julian Date from system time.
double StelUtils::getJulianDayFromISO8601String | ( | const QString & | iso8601Date, |
bool * | ok | ||
) |
Return the Julian Date matching the ISO8601 date string.
Also handles negative and distant years.
double StelUtils::getMoonFluctuation | ( | const double | jDay | ) |
Get value of the Moon fluctuation Source: The Rotation of the Earth, and the Secular Accelerations of the Sun, Moon and Planets Spencer Jones, H.
Monthly Notices of the Royal Astronomical Society, 99 (1939), 541-558 1939MNRAS..99..541S [http://adsabs.harvard.edu/abs/1939MNRAS..99..541S]
jDay | the JD |
double StelUtils::getMoonSecularAcceleration | ( | const double | jDay, |
const double | ndot, | ||
const bool | useDE4xx | ||
) |
Get Secular Acceleration estimation for a given year.
Method described is here: http://eclipse.gsfc.nasa.gov/SEcat5/secular.html For adapting from -26 to -25.858, use -0.91072 * (-25.858 + 26.0) = -0.12932224 For adapting from -26 to -23.895, use -0.91072 * (-23.895 + 26.0) = -1.9170656
jDay | the JD |
ndot | value of n-dot (secular acceleration of the Moon) which should be used in the lunar ephemeris instead of the default values. |
useDE4xx | true if function should adapt calculation of the secular acceleration of the Moon to the DE43x/DE44x ephemerides |
void StelUtils::getTimeFromJulianDay | ( | const double | julianDay, |
int * | hour, | ||
int * | minute, | ||
int * | second, | ||
int * | millis = Q_NULLPTR , |
||
bool * | wrapDay = Q_NULLPTR |
||
) |
Extract from julianDay an hour, minute, second.
|
inline |
Convert an angle in hms format to radian.
h | hour component |
m | minute component |
s | second component |
T StelUtils::interpolate3 | ( | T | n, |
T | y1, | ||
T | y2, | ||
T | y3 | ||
) |
Given regularly spaced steps x1, x2, x3 and curve values y1, y2, y3, calculate an intermediate value of the 3 arguments for the given interpolation point n.
n | Interpolation factor: steps from x2 |
y1 | Argument 1 |
y2 | Argument 2 |
y3 | Argument 3 |
T StelUtils::interpolate5 | ( | T | n, |
T | y1, | ||
T | y2, | ||
T | y3, | ||
T | y4, | ||
T | y5 | ||
) |
Given regularly spaced steps x1, x2, x3, x4, x5 and curve values y1, y2, y3, y4, y5, calculate an intermediate value of the 5 arguments for the given interpolation point n.
n | Interpolation factor: steps from x3 |
y1 | Argument 1 |
y2 | Argument 2 |
y3 | Argument 3 |
y3 | Argument 4 |
y3 | Argument 5 |
|
inline |
Floor integer division provides truncating to the next lower integer, also for negative numerators.
https://stackoverflow.com/questions/2622441/c-integer-floor-function
bool StelUtils::isLeapYear | ( | const int | year | ) |
bool StelUtils::isWithin | ( | const T & | value, |
const T & | low, | ||
const T & | high | ||
) |
Interval test. This checks whether.
value | is within [ |
low |
QDateTime StelUtils::jdToQDateTime | ( | const double & | jd, |
const Qt::TimeSpec | timeSpec | ||
) |
Convert a Julian Day number to a QDateTime.
jd | Julian Day number (with fractions) to convert |
timeSpec | a Qt::TimeSpec constant. Meaningful in this context seem only Qt::UTC (preferred) and Qt::LocalTime (useful in some GUI contexts). |
timeSpec | set to Qt::LocalTime. If you use Qt::LocalTime, you should add StelCore::getUTCOffset(jd)/24 to the current JD before calling this to have |
jd | as a "local time zone corrected JD" before conversion. |
QString StelUtils::julianDayToISO8601String | ( | const double | jd, |
bool | addMS = false |
||
) |
Format the given Julian Day in (UTC) ISO8601 date string.
Also handles negative and distant years.
int StelUtils::lcm | ( | int | a, |
int | b | ||
) |
Least Common Multiple.
a | first number |
b | second number |
QString StelUtils::localeDateString | ( | const int | year, |
const int | month, | ||
const int | day, | ||
const int | dayOfWeek | ||
) |
Format the date and day-of-week per the system locale's QLocale::ShortFormat.
QString StelUtils::localeDateString | ( | const int | year, |
const int | month, | ||
const int | day, | ||
const int | dayOfWeek, | ||
const QString & | fmt | ||
) |
Format the date and day-of-week per the format in fmt (see QDateTime::toString()).
Uses the system locale, not the one set in Stellarium.
QString StelUtils::localeDiscoveryDateString | ( | const QString & | discovery | ) |
Format the discovery date.
|
inline |
Convert a QT QDateTime class to julian day.
dateTime | the UTC QDateTime to convert |
double StelUtils::qTimeToJDFraction | ( | const QTime & | time | ) |
Convert a time of day to the fraction of a Julian Day.
Note that a Julian Day starts at 12:00, not 0:00, and so 12:00 == 0.0 and 0:00 == 0.5
void StelUtils::radToDecDeg | ( | double | rad, |
bool & | sign, | ||
double & | deg | ||
) |
Convert an angle in radian to decimal degree.
rad | input angle in radian |
sign | true if positive, false otherwise |
deg | decimal degree |
QString StelUtils::radToDecDegStr | ( | const double | angle, |
const int | precision = 4 , |
||
const bool | useD = false , |
||
const bool | positive = false |
||
) |
Convert an angle in radian to a decimal degree string.
angle | input angle in radian |
precision | |
useD | Define if letter "d" must be used instead of deg sign |
positive | Define if function should use 0-360 degrees |
void StelUtils::radToDms | ( | double | rad, |
bool & | sign, | ||
unsigned int & | d, | ||
unsigned int & | m, | ||
double & | s | ||
) |
Convert an angle in radian to +-dms format.
rad | input angle in radian |
sign | true if positive, false otherwise |
d | degree component |
m | minute component |
s | second component |
QString StelUtils::radToDmsPStr | ( | const double | angle, |
const int | precision = 0 , |
||
const bool | useD = false |
||
) |
Convert an angle in radian to a dms formatted string.
angle | input angle in radian |
precision | |
useD | Define if letter "d" must be used instead of deg sign |
QString StelUtils::radToDmsStr | ( | const double | angle, |
const bool | decimal = false , |
||
const bool | useD = false |
||
) |
Convert an angle in radian to a dms formatted string.
angle | input angle in radian |
decimal | output second value with decimal fraction |
useD | Define if letter "d" must be used instead of deg sign |
QString StelUtils::radToDmsStrAdapt | ( | const double | angle, |
const bool | useD = false |
||
) |
Convert an angle in radian to a dms formatted string.
If the second, minute part is == 0, it is not output
angle | input angle in radian |
useD | Define if letter "d" must be used instead of deg sign |
void StelUtils::radToHms | ( | double | rad, |
unsigned int & | h, | ||
unsigned int & | m, | ||
double & | s | ||
) |
Convert an angle in radian to hms format.
rad | input angle in radian |
h | hour component |
m | minute component |
s | second component |
QString StelUtils::radToHmsStr | ( | const double | angle, |
const bool | decimal = false |
||
) |
Convert an angle in radian to a hms formatted string.
angle | input angle in radian |
decimal | output decimal second value |
QString StelUtils::radToHmsStrAdapt | ( | const double | angle | ) |
Convert an angle in radian to a hms formatted string.
If the second, minute part is == 0, it is not output
angle | input angle in radian |
|
inline |
Convert from Rectangular direction to spherical coordinate components.
lng | double* to store longitude in radian [-pi, pi] |
lat | double* to store latitude in radian |
v | the input 3D vector |
|
inline |
Convert from Rectangular direction to spherical coordinate components.
lng | double* to store longitude in radian [-pi, pi] |
lat | double* to store latitude in radian |
v | the input 3D vector |
|
inline |
Convert from Rectangular direction to spherical coordinate components (including distance).
lng | double* to store longitude in radian [-pi, pi] |
lat | double* to store latitude in radian |
r | double* length of radius vector (distance) |
v | the input 3D vector |
|
inline |
Convert from Rectangular direction to spherical coordinate components.
lng | float* to store longitude in radian [-pi, pi] |
lat | float* to store latitude in radian |
v | the input 3D vector |
|
inline |
Convert from Rectangular direction to spherical coordinate components.
lng | float* to store longitude in radian [-pi, pi] |
lat | float* to store latitude in radian |
v | the input 3D vector |
|
inline |
Convert from spherical coordinates (including distance) to Rectangular direction.
lng | longitude in radian |
lat | latitude in radian |
r | length of radius vector (distance) |
v | the resulting 3D unit vector |
|
inline |
Convert from spherical coordinates to Rectangular direction.
lng | longitude in radian |
lat | latitude in radian |
v | the resulting 3D unit vector |
|
inline |
Convert from spherical coordinates to Rectangular direction.
lng | longitude in radian |
lat | latitude in radian |
v | the resulting 3D unit vector |
|
inline |
Convert from spherical coordinates to Rectangular direction.
lng | longitude in radian |
lat | latitude in radian |
v | the resulting 3D unit vector |
|
inline |
Convert from spherical coordinates to Rectangular direction.
lng | longitude in radian |
lat | latitude in radian |
v | the resulting 3D unit vector |
QByteArray StelUtils::uncompress | ( | QIODevice & | device, |
qint64 | maxBytes = -1 |
||
) |
Uncompress (gzip/zlib) data from this QIODevice, which must be open and readable.
device | The device to read from, must already be opened with an OpenMode supporting reading |
maxBytes | The max. amount of bytes to read from the device, or -1 to read until EOF. Note that it always stops when inflate() returns Z_STREAM_END. Positive values can be used for interleaving compressed data with other data. |